@kubuild/renderer 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import{isActionBinding as no}from"@kubuild/schema";import{createDefaultComponentRegistry as oo}from"@kubuild/components";import{createContext as _t,useContext as jt,useMemo as zt}from"react";import{resolveBinding as pe}from"@kubuild/core";import{isVariableBinding as _e,isActionBinding as Ut}from"@kubuild/schema";import{jsx as Kt}from"react/jsx-runtime";var ie=Object.freeze({}),je=_t(ie);function Wt(r){if(!r)return ie;let e=r.variables?Object.freeze({...r.variables}):void 0;return Object.freeze({variables:e,...r.assetProvider?{assetProvider:r.assetProvider}:{},...r.actionRegistry?{actionRegistry:r.actionRegistry}:{},...r.onDiagnostic?{onDiagnostic:r.onDiagnostic}:{}})}function vo(r){let e=new Map(Object.entries(r?.assets??{})),i=new Map(Object.entries(r?.actions??{})),o={resolve:t=>e.get(t)||t},n={get:t=>i.get(t),register:(t,l)=>{i.set(t,l)},unregister:t=>{i.delete(t)}};return Wt({variables:r?.variables,assetProvider:o,actionRegistry:n,onDiagnostic:r?.onDiagnostic})}var ze=({value:r,children:e})=>{let i=zt(()=>r||ie,[r]);return Kt(je.Provider,{value:i,children:e})};function Ue(){return jt(je)}function Re(r,e){if(!(!r||!e))try{let i=r.resolve(e);return typeof i=="string"?i:void 0}catch{return}}function We(r,e){return e==null?e:_e(e)?pe(e,r).value:typeof e=="string"&&e.includes("{{")?e.replace(/\{\{\s*([\w.-]+)\s*\}\}/g,(i,o)=>{let n=pe({key:o},r);return n.status==="resolved"?String(n.value):i}):e}function Ke(r,e){if(!e||typeof e!="object")return{value:e,invalidPaths:[]};let i=[],o=(t,l)=>{if(t==null)return t;if(_e(t)){let f=pe(t,r);return f.status==="empty"&&i.push(l),f.value}if(typeof t=="string")return t.includes("{{")?t.replace(/\{\{\s*([\w.-]+)\s*\}\}/g,(f,p)=>{let u=pe({key:p},r);return u.status!=="resolved"?(i.push(l),f):String(u.value)}):t;if(Array.isArray(t))return t.map((f,p)=>o(f,`${l}[${p}]`));if(typeof t=="object"){let f={};for(let[p,u]of Object.entries(t))f[p]=o(u,l?`${l}.${p}`:p);return f}return t},n={};for(let[t,l]of Object.entries(e))n[t]=o(l,t);return{value:n,invalidPaths:i}}function Ye(r,e){return Ke(r,e).value}function Xe(r,e){return!r||!e?!1:!!r.get(e)}function Ge(r){let{action:e,nodeId:i,document:o,context:n,onDiagnostic:t}=r;if(!Ut(e)){let d={code:"INVALID_ACTION_PAYLOAD",actionType:typeof e?.type=="string"?e.type:"unknown",nodeId:i,message:`Invalid action binding on node ${i||"unknown"}.`};return t?.(d),n?.onDiagnostic?.(d),!1}let l=n?.actionRegistry?.get(e.type);if(!l){let d={code:"UNKNOWN_ACTION",actionType:e.type,nodeId:i,message:`No action handler registered for action type "${e.type}".`};return t?.(d),n?.onDiagnostic?.(d),!1}let{value:f,invalidPaths:p}=Ke(n,e.payload);if(p.length>0){let d={code:"INVALID_ACTION_BINDING",actionType:e.type,nodeId:i,message:`Action "${e.type}" payload has unresolved binding path(s) [${p.join(", ")}] on node ${i||"unknown"}; handler was not invoked.`,invalidPaths:p};return t?.(d),n?.onDiagnostic?.(d),!1}let u={nodeId:i,document:o,variables:n?.variables};try{let d=l(f,u);return d&&typeof d.catch=="function"&&d.catch(s=>{let a={code:"ACTION_EXECUTION_ERROR",actionType:e.type,nodeId:i,message:`Action "${e.type}" handler threw an asynchronous error: ${s instanceof Error?s.message:String(s)}`,error:s};t?.(a),n?.onDiagnostic?.(a)}),!0}catch(d){let s={code:"ACTION_EXECUTION_ERROR",actionType:e.type,nodeId:i,message:`Action "${e.type}" handler threw a synchronous error: ${d instanceof Error?d.message:String(d)}`,error:d};return t?.(s),n?.onDiagnostic?.(s),!1}}import{AlertTriangle as ro}from"lucide-react";function Je(r,e="desktop"){if(!r)return{};let i=r.base||{},o=r[e]||{};return{...i,...o}}function Yt(r){return String(r).replace(/[{};]+/g,"")}function Xt(r){return r.replace(/["\\\]]/g,"\\$&")}function te(r,e){if(!r||typeof r!="object")return"";let i=[],o=e?.important?" !important":"";for(let[n,t]of Object.entries(r)){if(t==null||t==="")continue;let l=n.replace(/[A-Z]/g,f=>`-${f.toLowerCase()}`);i.push(`${l}: ${Yt(t)}${o};`)}return i.join(" ")}function Ze(r,e={important:!0}){if(!r?.document)return"";let i=[],o=n=>{let t=n.styles?.states;if(t&&typeof t=="object")for(let[l,f]of Object.entries(t)){let p=te(f,{important:e.important!==!1});if(!p)continue;let u=/^::?[a-zA-Z-]+$/.test(l)?l:null;u&&i.push(`[data-kubuild-node="${Xt(n.id)}"]${u} { ${p} }`)}n.children?.forEach(o)};return o(r.document),i.join(`
2
- `)}var Qe=`
1
+ import ho from"react";import{isActionBinding as xo}from"@kubuild/schema";import{createDefaultComponentRegistry as vo}from"@kubuild/components";import{createContext as tn,useContext as nn,useMemo as on}from"react";import{resolveBinding as he}from"@kubuild/core";import{isVariableBinding as Xe,isActionBinding as rn}from"@kubuild/schema";import{jsx as sn}from"react/jsx-runtime";var oe=Object.freeze({}),Ge=tn(oe);function an(r){if(!r)return oe;let e=r.variables?Object.freeze({...r.variables}):void 0,i=r.componentArtboards?Object.freeze([...r.componentArtboards]):void 0,o=r.resolveArtboard??(i?n=>i.find(t=>t.artboardType==="component"&&t.triggerId===n):void 0);return Object.freeze({variables:e,...r.assetProvider?{assetProvider:r.assetProvider}:{},...r.actionRegistry?{actionRegistry:r.actionRegistry}:{},...r.onDiagnostic?{onDiagnostic:r.onDiagnostic}:{},...i?{componentArtboards:i}:{},...o?{resolveArtboard:o}:{},...r.artboardSurface?{artboardSurface:r.artboardSurface}:{}})}function zo(r){let e=new Map(Object.entries(r?.assets??{})),i=new Map(Object.entries(r?.actions??{})),o={resolve:t=>e.get(t)||t},n={get:t=>i.get(t),register:(t,l)=>{i.set(t,l)},unregister:t=>{i.delete(t)}};return an({variables:r?.variables,assetProvider:o,actionRegistry:n,onDiagnostic:r?.onDiagnostic})}var Je=({value:r,children:e})=>{let i=on(()=>r||oe,[r]);return sn(Ge.Provider,{value:i,children:e})};function Ze(){return nn(Ge)}function Te(r,e){if(!(!r||!e))try{let i=r.resolve(e);return typeof i=="string"?i:void 0}catch{return}}function Qe(r,e){return e==null?e:Xe(e)?he(e,r).value:typeof e=="string"&&e.includes("{{")?e.replace(/\{\{\s*([\w.-]+)\s*\}\}/g,(i,o)=>{let n=he({key:o},r);return n.status==="resolved"?String(n.value):i}):e}function et(r,e){if(!e||typeof e!="object")return{value:e,invalidPaths:[]};let i=[],o=(t,l)=>{if(t==null)return t;if(Xe(t)){let p=he(t,r);return p.status==="empty"&&i.push(l),p.value}if(typeof t=="string")return t.includes("{{")?t.replace(/\{\{\s*([\w.-]+)\s*\}\}/g,(p,f)=>{let u=he({key:f},r);return u.status!=="resolved"?(i.push(l),p):String(u.value)}):t;if(Array.isArray(t))return t.map((p,f)=>o(p,`${l}[${f}]`));if(typeof t=="object"){let p={};for(let[f,u]of Object.entries(t))p[f]=o(u,l?`${l}.${f}`:f);return p}return t},n={};for(let[t,l]of Object.entries(e))n[t]=o(l,t);return{value:n,invalidPaths:i}}function tt(r,e){return et(r,e).value}function nt(r,e){return!r||!e?!1:!!r.get(e)}function ot(r){let{action:e,nodeId:i,document:o,context:n,onDiagnostic:t}=r;if(!rn(e)){let c={code:"INVALID_ACTION_PAYLOAD",actionType:typeof e?.type=="string"?e.type:"unknown",nodeId:i,message:`Invalid action binding on node ${i||"unknown"}.`};return t?.(c),n?.onDiagnostic?.(c),!1}let l=n?.actionRegistry?.get(e.type);if(!l){let c={code:"UNKNOWN_ACTION",actionType:e.type,nodeId:i,message:`No action handler registered for action type "${e.type}".`};return t?.(c),n?.onDiagnostic?.(c),!1}let{value:p,invalidPaths:f}=et(n,e.payload);if(f.length>0){let c={code:"INVALID_ACTION_BINDING",actionType:e.type,nodeId:i,message:`Action "${e.type}" payload has unresolved binding path(s) [${f.join(", ")}] on node ${i||"unknown"}; handler was not invoked.`,invalidPaths:f};return t?.(c),n?.onDiagnostic?.(c),!1}let u={nodeId:i,document:o,variables:n?.variables};try{let c=l(p,u);return c&&typeof c.catch=="function"&&c.catch(a=>{let s={code:"ACTION_EXECUTION_ERROR",actionType:e.type,nodeId:i,message:`Action "${e.type}" handler threw an asynchronous error: ${a instanceof Error?a.message:String(a)}`,error:a};t?.(s),n?.onDiagnostic?.(s)}),!0}catch(c){let a={code:"ACTION_EXECUTION_ERROR",actionType:e.type,nodeId:i,message:`Action "${e.type}" handler threw a synchronous error: ${c instanceof Error?c.message:String(c)}`,error:c};return t?.(a),n?.onDiagnostic?.(a),!1}}import{AlertTriangle as Ro}from"lucide-react";function rt(r){if(!r||typeof r!="object")return{};let e={...r};if(e.colSpan!==void 0&&e.colSpan!==null&&e.colSpan!==""){if(!e.gridColumn){let i=String(e.colSpan).trim();e.gridColumn=i.startsWith("span")?i:`span ${i}`}delete e.colSpan}if(e.rowSpan!==void 0&&e.rowSpan!==null&&e.rowSpan!==""){if(!e.gridRow){let i=String(e.rowSpan).trim();e.gridRow=i.startsWith("span")?i:`span ${i}`}delete e.rowSpan}if(e.width==="hug"?e.width="fit-content":e.width==="fill"&&(e.width="100%",e.flex||(e.flex="1 1 0%")),e.height==="hug"?e.height="fit-content":e.height==="fill"&&(e.height="100%",e.flex||(e.flex="1 1 0%")),e.sizingMode==="hug"?(e.width=e.width||"fit-content",delete e.sizingMode):e.sizingMode==="fill"&&(e.flex||(e.flex="1 1 0%"),delete e.sizingMode),typeof e.gap=="number"&&(e.gap=`${e.gap}px`),typeof e.rowGap=="number"&&(e.rowGap=`${e.rowGap}px`),typeof e.columnGap=="number"&&(e.columnGap=`${e.columnGap}px`),typeof e.borderTopLeftRadius=="number"&&(e.borderTopLeftRadius=`${e.borderTopLeftRadius}px`),typeof e.borderTopRightRadius=="number"&&(e.borderTopRightRadius=`${e.borderTopRightRadius}px`),typeof e.borderBottomRightRadius=="number"&&(e.borderBottomRightRadius=`${e.borderBottomRightRadius}px`),typeof e.borderBottomLeftRadius=="number"&&(e.borderBottomLeftRadius=`${e.borderBottomLeftRadius}px`),typeof e.borderRadius=="number"&&(e.borderRadius=`${e.borderRadius}px`),e.backdropBlur!==void 0&&e.backdropBlur!==null&&e.backdropBlur!==""){let i=String(e.backdropBlur).trim(),n=`blur(${typeof e.backdropBlur=="number"||/^\d+$/.test(i)?`${i}px`:i})`;e.backdropFilter=n,e.WebkitBackdropFilter=n,delete e.backdropBlur}else e.backdropFilter&&typeof e.backdropFilter=="string"&&(e.WebkitBackdropFilter=e.backdropFilter);return e.gradient&&typeof e.gradient=="string"?(e.backgroundImage=e.gradient,delete e.gradient):e.backgroundGradient&&typeof e.backgroundGradient=="string"&&(e.backgroundImage=e.backgroundGradient,delete e.backgroundGradient),e}function it(r,e="desktop"){if(!r)return{};let i=r.base||{},o=r[e]||{},n={...i,...o};return rt(n)}function ln(r){return String(r).replace(/[{};]+/g,"")}function dn(r){return r.replace(/["\\\]]/g,"\\$&")}function ie(r,e){if(!r||typeof r!="object")return"";let i=rt(r),o=[],n=e?.important?" !important":"";for(let[t,l]of Object.entries(i)){if(l==null||l==="")continue;let p=t.replace(/[A-Z]/g,f=>`-${f.toLowerCase()}`);p.startsWith("--")||p.startsWith("-webkit-")||p.startsWith("-moz-")||p.startsWith("-")&&(p=p.substring(1)),o.push(`${p}: ${ln(l)}${n};`)}return o.join(" ")}function at(r,e={important:!0}){if(!r?.document)return"";let i=[],o=n=>{let t=n.styles?.states;if(t&&typeof t=="object")for(let[l,p]of Object.entries(t)){let f=ie(p,{important:e.important!==!1});if(!f)continue;let u=/^::?[a-zA-Z-]+$/.test(l)?l:null;u&&i.push(`[data-kubuild-node="${dn(n.id)}"]${u} { ${f} }`)}n.children?.forEach(o)};return o(r.document),i.join(`
2
+ `)}var st=`
3
3
  *, *::before, *::after {
4
4
  box-sizing: border-box;
5
5
  }
@@ -25,7 +25,7 @@ input, button, textarea, select {
25
25
  p, h1, h2, h3, h4, h5, h6 {
26
26
  overflow-wrap: break-word;
27
27
  }
28
- `.trim();var Gt=`
28
+ `.trim();var cn=`
29
29
  /* Entrance / AOS Keyframes */
30
30
  @keyframes kb-anim-fade {
31
31
  from { opacity: 0; }
@@ -101,10 +101,10 @@ p, h1, h2, h3, h4, h5, h6 {
101
101
  0%, 100% { opacity: 0.75; }
102
102
  50% { opacity: 1; }
103
103
  }
104
- `.trim();function fe(r){return r.replace(/["\\\]]/g,"\\$&")}function Jt(r,e){let i=fe(r),o=[];switch(e){case"lift":o.push(`[data-kubuild-node="${i}"] { transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.25s ease !important; will-change: transform; }`,`[data-kubuild-node="${i}"]:hover { transform: translateY(-4px) !important; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1) !important; }`);break;case"scale":o.push(`[data-kubuild-node="${i}"] { transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important; will-change: transform; }`,`[data-kubuild-node="${i}"]:hover { transform: scale(1.04) !important; }`);break;case"glow":o.push(`[data-kubuild-node="${i}"] { transition: box-shadow 0.25s ease !important; }`,`[data-kubuild-node="${i}"]:hover { box-shadow: 0 0 20px 2px rgba(59, 130, 246, 0.5) !important; }`);break;case"tilt":o.push(`[data-kubuild-node="${i}"] { transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important; will-change: transform; }`,`[data-kubuild-node="${i}"]:hover { transform: rotate(2deg) scale(1.02) !important; }`);break;default:break}return o}function Zt(r,e){let i=fe(r),o=[];switch(e){case"pulse":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite !important; }`);break;case"bounce":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-bounce 1.5s ease-in-out infinite !important; }`);break;case"spin":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-spin 3s linear infinite !important; }`);break;case"float":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-float 3s ease-in-out infinite !important; }`);break;case"shimmer":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-shimmer 2s ease-in-out infinite !important; }`);break;default:break}return o}function Qt(r,e){if(!e.type||e.type==="none")return[];let i=fe(r),o=typeof e.duration=="number"?e.duration:600,n=typeof e.delay=="number"?e.delay:0,t=e.easing||"ease-out";return[`[data-kubuild-node="${i}"] { animation-name: kb-anim-${e.type} !important; animation-duration: ${o}ms !important; animation-delay: ${n}ms !important; animation-timing-function: ${t} !important; animation-fill-mode: both !important; }`]}function me(r){if(!r?.document)return"";let e=[],i=!1,o=n=>{let t=n.animation;t&&(t.hoverEffect&&t.hoverEffect!=="none"&&(e.push(...Jt(n.id,t.hoverEffect)),i=!0),t.loopEffect&&t.loopEffect!=="none"&&(e.push(...Zt(n.id,t.loopEffect)),i=!0),t.type&&t.type!=="none"&&(e.push(...Qt(n.id,t)),i=!0)),n.children?.forEach(o)};return o(r.document),i?`${Gt}
104
+ `.trim();function xe(r){return r.replace(/["\\\]]/g,"\\$&")}function un(r,e){let i=xe(r),o=[];switch(e){case"lift":o.push(`[data-kubuild-node="${i}"] { transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.25s ease !important; will-change: transform; }`,`[data-kubuild-node="${i}"]:hover { transform: translateY(-4px) !important; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1) !important; }`);break;case"scale":o.push(`[data-kubuild-node="${i}"] { transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important; will-change: transform; }`,`[data-kubuild-node="${i}"]:hover { transform: scale(1.04) !important; }`);break;case"glow":o.push(`[data-kubuild-node="${i}"] { transition: box-shadow 0.25s ease !important; }`,`[data-kubuild-node="${i}"]:hover { box-shadow: 0 0 20px 2px rgba(59, 130, 246, 0.5) !important; }`);break;case"tilt":o.push(`[data-kubuild-node="${i}"] { transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important; will-change: transform; }`,`[data-kubuild-node="${i}"]:hover { transform: rotate(2deg) scale(1.02) !important; }`);break;default:break}return o}function pn(r,e){let i=xe(r),o=[];switch(e){case"pulse":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite !important; }`);break;case"bounce":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-bounce 1.5s ease-in-out infinite !important; }`);break;case"spin":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-spin 3s linear infinite !important; }`);break;case"float":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-float 3s ease-in-out infinite !important; }`);break;case"shimmer":o.push(`[data-kubuild-node="${i}"] { animation: kb-loop-shimmer 2s ease-in-out infinite !important; }`);break;default:break}return o}function fn(r,e){if(!e.type||e.type==="none")return[];let i=xe(r),o=typeof e.duration=="number"?e.duration:600,n=typeof e.delay=="number"?e.delay:0,t=e.easing||"ease-out";return[`[data-kubuild-node="${i}"] { animation-name: kb-anim-${e.type} !important; animation-duration: ${o}ms !important; animation-delay: ${n}ms !important; animation-timing-function: ${t} !important; animation-fill-mode: both !important; }`]}function ve(r){if(!r?.document)return"";let e=[],i=!1,o=n=>{let t=n.animation;t&&(t.hoverEffect&&t.hoverEffect!=="none"&&(e.push(...un(n.id,t.hoverEffect)),i=!0),t.loopEffect&&t.loopEffect!=="none"&&(e.push(...pn(n.id,t.loopEffect)),i=!0),t.type&&t.type!=="none"&&(e.push(...fn(n.id,t)),i=!0)),n.children?.forEach(o)};return o(r.document),i?`${cn}
105
105
 
106
106
  ${e.join(`
107
- `)}`:""}function Co(r,e){let i=e||(typeof window<"u"?window.document:null);if(!i)return!1;let o=i.querySelector(`[data-kubuild-node="${fe(r)}"]`);if(!o)return!1;let n=o.style.animation;return o.style.animation="none",o.offsetWidth,o.style.animation=n,o.dispatchEvent(new CustomEvent("kubuild:replay-animation",{bubbles:!0,detail:{nodeId:r}})),!0}import{Component as en}from"react";import{AlertTriangle as tn}from"lucide-react";import{jsx as ke,jsxs as ge}from"react/jsx-runtime";var be=class extends en{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,i){this.props.onError&&this.props.onError(e,i),this.props.onDiagnostic&&this.props.onDiagnostic({code:"ACTION_EXECUTION_ERROR",actionType:"render",nodeId:this.props.nodeId,message:`Render error in <${this.props.componentType}> (ID: ${this.props.nodeId}): ${e.message}`,error:e})}render(){if(this.state.hasError){let{nodeId:e,componentType:i,mode:o="runtime"}=this.props,n=this.state.error?.message||"Unknown render error";return o==="editor"?ge("div",{"data-kubuild-node":e,"data-kubuild-error":i,style:{padding:"12px 16px",margin:"4px 0",backgroundColor:"#fef2f2",border:"1px solid #ef4444",borderRadius:"6px",color:"#b91c1c",fontFamily:"system-ui, -apple-system, sans-serif",fontSize:"13px",lineHeight:"1.4"},children:[ge("div",{style:{fontWeight:600,marginBottom:"4px",display:"flex",alignItems:"center",gap:"6px"},children:[ke(tn,{size:14,"aria-hidden":"true"}),ge("span",{children:["Component Render Error: <",i,">"]})]}),ge("div",{style:{fontSize:"11px",color:"#7f1d1d",wordBreak:"break-all"},children:["Node ID: ",ke("code",{children:e})," \u2014 ",n]})]}):ke("div",{"data-kubuild-node":e,"data-kubuild-error":i,style:{display:"none"},"aria-hidden":"true"})}return this.props.children}};import{isVariableBinding as nn}from"@kubuild/schema";import{primitiveTypeForField as et}from"@kubuild/components";import{resolveBinding as on}from"@kubuild/core";function rn(r){switch(r){case"string":return"";case"number":return 0;case"boolean":return!1}}function sn(r,e,i,o,n){let t=r.props?.[e.name],l=et(e);if(l===void 0||t===void 0)return t;let f=i.defaultProps?.[e.name]??e.defaultValue??rn(l);if(nn(t)){let p=on(t,o);return typeof p.value===l?p.value:(n.push({code:"INCOMPATIBLE_BINDING_TYPE",nodeId:r.id,propName:e.name,expectedType:l,actualType:typeof p.value,message:`Prop "${e.name}" on node "${r.id}" expected a ${l} but resolved binding "${t.key}" produced a ${typeof p.value}.`}),f)}return l==="string"&&typeof t=="string"&&t.includes("{{")?We(o,t):t}function tt(r,e,i){let o=r.props||{};if(!e||!e.propFields||e.propFields.length===0)return{props:o,diagnostics:[]};let n=[],t={...o};for(let l of e.propFields)et(l)!==void 0&&(t[l.name]=sn(r,l,e,i,n));return{props:t,diagnostics:n}}import Ln from"react";import{isAssetReference as qn,isVariableBinding as F}from"@kubuild/schema";import{icons as Vt,Package as _n,Puzzle as jn,AlertTriangle as zn}from"lucide-react";import{resolveBinding as Un,sanitizeUrl as Z,sanitizeHtml as Wn}from"@kubuild/core";import{createContext as Sn,useContext as bt,useState as ae,useCallback as V,useRef as mt,useMemo as le,useEffect as yt}from"react";import{applyFieldTransform as gt,validateFieldValue as Tn,validateForm as En,ActionPipelineExecutor as Pn}from"@kubuild/core";import{isSafeActionUrl as an}from"@kubuild/schema";import{ActionCancellationError as Ce,ActionTimeoutError as $e}from"@kubuild/core";var J=class extends Error{status;statusText;url;method;data;headers;response;isTimeout;isCancelled;isNetworkError;stepId;cause;constructor(e,i){super(e),this.name="ApiRequestError",this.status=i?.status,this.statusText=i?.statusText,this.url=i?.url,this.method=i?.method,this.data=i?.data,this.headers=i?.headers,this.response=i?.response,this.isTimeout=i?.isTimeout??!1,this.isCancelled=i?.isCancelled??!1,this.isNetworkError=i?.isNetworkError??!1,this.stepId=i?.stepId,this.cause=i?.cause}};function ln(r,e,i){if(!r||typeof r!="string")throw new J("API request URL is required",{url:r});let o=r.trim();if(!an(o))throw new J(`Disallowed or unsafe protocol in API request URL: "${o}"`,{url:o});let n=o;if(i&&!o.startsWith("http://")&&!o.startsWith("https://")&&!o.startsWith("//")){let t=i.endsWith("/")?i.slice(0,-1):i,l=o.startsWith("/")?o:`/${o}`;n=`${t}${l}`}if(e&&typeof e=="object"&&Object.keys(e).length>0){let[t,l]=n.split("?"),f=new URLSearchParams(l||"");for(let[u,d]of Object.entries(e))d!=null&&(Array.isArray(d)?d.forEach(s=>f.append(u,String(s))):f.set(u,String(d)));let p=f.toString();n=p?`${t}?${p}`:t}return n}function dn(r,e,i,o={}){let n=r.toUpperCase(),t={...o};if(n==="GET"||n==="HEAD")return{body:void 0,headers:t};if(e==null)return{body:void 0,headers:t};let l=Object.keys(t).find(u=>u.toLowerCase()==="content-type"),f=l?t[l]:void 0,p=(i||"").toLowerCase();if(p==="form-data"||p==="formdata"||p==="multipart"||f&&f.includes("multipart/form-data")){if(typeof FormData<"u"&&e instanceof FormData)return l&&delete t[l],{body:e,headers:t};if(typeof FormData<"u"&&typeof e=="object"&&e!==null){let u=new FormData;for(let[d,s]of Object.entries(e))s!=null&&(typeof Blob<"u"&&s instanceof Blob?u.append(d,s):Array.isArray(s)?s.forEach(a=>u.append(d,typeof a=="object"?JSON.stringify(a):String(a))):typeof s=="object"?u.append(d,JSON.stringify(s)):u.append(d,String(s)));return l&&delete t[l],{body:u,headers:t}}}if(p==="urlencoded"||p==="url-encoded"||f&&f.includes("application/x-www-form-urlencoded")){if(typeof URLSearchParams<"u"&&e instanceof URLSearchParams)return l||(t["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8"),{body:e,headers:t};if(typeof e=="object"&&e!==null){let u=new URLSearchParams;for(let[d,s]of Object.entries(e))s!=null&&(Array.isArray(s)?s.forEach(a=>u.append(d,String(a))):u.append(d,String(s)));return l||(t["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8"),{body:u,headers:t}}if(typeof e=="string")return l||(t["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8"),{body:e,headers:t}}if(p==="raw"||p==="text")return l||(t["Content-Type"]="text/plain;charset=UTF-8"),{body:typeof e=="string"?e:String(e),headers:t};if(typeof e=="object"&&e!==null)return l||(t["Content-Type"]="application/json"),{body:JSON.stringify(e),headers:t};if(typeof e=="string"){if(!l)try{JSON.parse(e),t["Content-Type"]="application/json"}catch{t["Content-Type"]="text/plain;charset=UTF-8"}return{body:e,headers:t}}return{body:String(e),headers:t}}async function cn(r){let e=r.headers.get("content-type")||"",i=await r.text();if(!i||i.trim()==="")return null;if(e.includes("application/json")||e.includes("+json"))try{return JSON.parse(i)}catch{return i}let o=i.trim();if(o.startsWith("{")&&o.endsWith("}")||o.startsWith("[")&&o.endsWith("]"))try{return JSON.parse(o)}catch{return i}return i}function we(r){let e=r?.defaultTimeout,i=r?.baseUrl,o=r?.headers;return async function(t,l,f){let p=l.fetchFn||r?.fetchFn||(typeof globalThis<"u"&&typeof globalThis.fetch=="function"?globalThis.fetch:typeof fetch<"u"?fetch:void 0);if(!p)throw new J("No fetch implementation available for API request runner",{stepId:t.id});let u=t.payload||{},d=String(u.method||"GET").toUpperCase(),s=u.timeout??e,a=u.baseUrl??i,c=ln(String(u.url||""),u.queryParams,a),m={...o||{},...u.headers||{}},{body:b,headers:y}=dn(d,u.body,u.bodyFormat||u.bodyType,m),h=new AbortController,v,x=()=>{h.abort(f?.reason)};if(f){if(f.aborted)throw new Ce(f.reason instanceof Error?f.reason.message:"API request cancelled",t.id);f.addEventListener("abort",x,{once:!0})}s!==void 0&&s>0&&(v=setTimeout(()=>{h.abort(new $e(`API request timed out after ${s}ms`,s,t.id))},s));try{let g=await p(c,{method:d,headers:y,body:b,signal:h.signal}),w={};g.headers&&typeof g.headers.forEach=="function"&&g.headers.forEach((S,E)=>{w[E.toLowerCase()]=S});let R=await cn(g),$={ok:g.ok,status:g.status,statusText:g.statusText,headers:w,data:R,body:R,url:g.url||c};if(!g.ok){let S=(typeof R=="object"&&R!==null&&"message"in R?String(R.message):void 0)||(typeof R=="string"&&R.length<200?R:void 0)||`HTTP ${g.status} ${g.statusText||"Error"}`;throw new J(`API request failed: ${S}`,{status:g.status,statusText:g.statusText,url:c,method:d,data:R,headers:w,response:$,stepId:t.id})}return $}catch(g){if(g instanceof J)throw g;if(h.signal.aborted){let R=h.signal.reason;if(R instanceof $e||R instanceof Error&&R.name==="ActionTimeoutError"||R instanceof Ce||R instanceof Error&&R.name==="ActionCancellationError")throw R;if(g instanceof Error&&(g.name==="AbortError"||g.name==="TimeoutError"))throw v===void 0&&f?.aborted?new Ce("API request cancelled",t.id):new $e(`API request timed out after ${s}ms`,s??0,t.id)}let w=g instanceof Error?g.message:String(g);throw new J(`Network error during API request: ${w}`,{url:c,method:d,isNetworkError:!0,stepId:t.id,cause:g})}finally{v!==void 0&&clearTimeout(v),f&&f.removeEventListener("abort",x)}}}var nt=we();import{useState as un,useEffect as pn}from"react";var fn=0,Se=class{toasts=[];listeners=new Set;timers=new Map;showToast(e){let i=typeof e=="string"?{message:e}:e,o=i.id||`toast_${Date.now()}_${++fn}`,n=i.type||i.variant||"info",t=i.duration!==void 0?Math.max(0,i.duration):4e3,l=i.position||"top-right",f=i.dismissible!==!1;this.timers.has(o)&&(clearTimeout(this.timers.get(o)),this.timers.delete(o));let p={id:o,type:n,message:i.message,title:i.title,duration:t,position:l,dismissible:f,createdAt:Date.now(),dismiss:()=>this.dismissToast(o)};if(this.toasts=this.toasts.filter(u=>u.id!==o).concat(p),t>0){let u=setTimeout(()=>{this.dismissToast(o)},t);this.timers.set(o,u)}return this.notify(),p}dismissToast(e){this.timers.has(e)&&(clearTimeout(this.timers.get(e)),this.timers.delete(e));let i=this.toasts.length;this.toasts=this.toasts.filter(o=>o.id!==e),this.toasts.length!==i&&this.notify()}clearToasts(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.toasts=[],this.notify()}getToasts(){return[...this.toasts]}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){let e=this.getToasts();for(let i of this.listeners)try{i(e)}catch(o){console.error("Error in toast listener callback:",o)}}},Q=new Se;function ot(r=Q){let[e,i]=un(()=>r.getToasts());return pn(()=>(i(r.getToasts()),r.subscribe(o=>{i(o)})),[r]),{toasts:e,showToast:o=>r.showToast(o),dismissToast:o=>r.dismissToast(o),clearToasts:()=>r.clearToasts()}}import{useState as rt,useEffect as it,useCallback as Te}from"react";var Ee=class{modals=new Map;activeStack=[];listeners=new Set;openModal(e){if(!e||typeof e!="string")return;let i=e.trim();if(i){if(this.modals.set(i,!0),this.activeStack=this.activeStack.filter(o=>o!==i).concat(i),typeof window<"u"&&typeof window.dispatchEvent=="function")try{let o=new CustomEvent("kubuild:modal:open",{detail:{modalId:i},bubbles:!0});window.dispatchEvent(o)}catch{}this.notify()}}closeModal(e){if(e&&typeof e=="string"){let i=e.trim();if(this.modals.set(i,!1),this.activeStack=this.activeStack.filter(o=>o!==i),typeof window<"u"&&typeof window.dispatchEvent=="function")try{let o=new CustomEvent("kubuild:modal:close",{detail:{modalId:i},bubbles:!0});window.dispatchEvent(o)}catch{}}else{let i=this.activeStack.pop();if(i){if(this.modals.set(i,!1),typeof window<"u"&&typeof window.dispatchEvent=="function")try{let o=new CustomEvent("kubuild:modal:close",{detail:{modalId:i},bubbles:!0});window.dispatchEvent(o)}catch{}}else for(let o of this.modals.keys())this.modals.set(o,!1)}this.notify()}toggleModal(e){return this.isModalOpen(e)?(this.closeModal(e),!1):(this.openModal(e),!0)}isModalOpen(e){return e?!!this.modals.get(e.trim()):!1}getState(){let e={};for(let[i,o]of this.modals.entries())e[i]=o;return e}getActiveModals(){return[...this.activeStack]}reset(){this.modals.clear(),this.activeStack=[],this.notify()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){let e=this.getState();for(let i of this.listeners)try{i(e)}catch(o){console.error("Error in modal listener callback:",o)}}},se=new Ee;function Yo(r,e=se){let[i,o]=rt(()=>e.isModalOpen(r));it(()=>(o(e.isModalOpen(r)),e.subscribe(f=>{o(!!f[r])})),[r,e]);let n=Te(()=>e.openModal(r),[r,e]),t=Te(()=>e.closeModal(r),[r,e]),l=Te(()=>e.toggleModal(r),[r,e]);return{isOpen:i,open:n,close:t,toggle:l}}function Xo(r=se){let[e,i]=rt(()=>r.getState());return it(()=>(i(r.getState()),r.subscribe(o=>{i(o)})),[r]),{modals:e,activeModals:r.getActiveModals(),isOpen:o=>!!e[o],openModal:o=>r.openModal(o),closeModal:o=>r.closeModal(o),toggleModal:o=>r.toggleModal(o)}}var st=(r,e)=>{let i=r.payload||{},o=String(i.message||"").trim();if(!o)throw new Error("Toast message cannot be empty");let n=i.type||i.variant||"info",t=i.duration!==void 0?i.duration:4e3,l=i.position||"top-right",f=i.title?String(i.title):void 0,u=(e.toastManager||Q).showToast({message:o,type:n,duration:t,position:l,title:f});return{id:u.id,message:u.message,type:u.type,title:u.title,duration:u.duration,position:u.position}},at=(r,e)=>{let i=r.payload||{},o=i.modalId||i.modalNodeId||i.targetNodeId||i.nodeId,n=o?String(o).trim():"";if(!n)throw new Error("Modal ID or Modal Node ID is required for open_modal action");if((e.modalManager||se).openModal(n),e.state&&typeof e.state=="object"){let l=e.state.modals||{};e.state.modals={...l,[n]:!0},e.state[n]=!0}return e.variables&&typeof e.variables=="object"&&(e.variables[`modal_${n}_open`]=!0),{modalId:n,open:!0}},lt=(r,e)=>{let i=r.payload||{},o=i.modalId||i.modalNodeId||i.targetNodeId||i.nodeId,n=o?String(o).trim():void 0;if((e.modalManager||se).closeModal(n),n){if(e.state&&typeof e.state=="object"){let l=e.state.modals||{};e.state.modals={...l,[n]:!1},e.state[n]=!1}e.variables&&typeof e.variables=="object"&&(e.variables[`modal_${n}_open`]=!1)}else e.state&&typeof e.state=="object"&&(e.state.modals={});return{modalId:n||"all",open:!1}};import{isSafeActionUrl as mn}from"@kubuild/schema";async function gn(r,e){if(e?.copyFn)return await e.copyFn(r),!0;if(typeof navigator<"u"&&navigator.clipboard&&typeof navigator.clipboard.writeText=="function")try{return await navigator.clipboard.writeText(r),!0}catch{}if(typeof document<"u")try{let i=document.createElement("textarea");i.value=r,i.setAttribute("readonly",""),i.style.position="fixed",i.style.top="-9999px",i.style.left="-9999px",i.style.opacity="0",document.body.appendChild(i),i.focus(),i.select();let o=document.execCommand("copy");if(document.body.removeChild(i),o)return!0}catch{}return!1}var dt=(r,e)=>{let i=r.payload||{},o=String(i.url||"").trim();if(!o)throw new Error("Navigation URL cannot be empty");if(!mn(o))throw new Error(`Disallowed or unsafe protocol in navigation URL: "${o}"`);let n=i.target||"_self",t=i.replace??!1,l=i.behavior||"smooth",f=i.scroll??!0;if(o.startsWith("#")){if(typeof document<"u"){try{let u=document.querySelector(o)||document.getElementById(o.slice(1));u&&typeof u.scrollIntoView=="function"&&u.scrollIntoView({behavior:f===!1?"auto":l,block:"start"})}catch{}if(typeof window<"u"&&window.location)try{window.location.hash=o}catch{}}return{url:o,target:"_self",replace:t,scroll:f,behavior:l,navigated:!0,isAnchor:!0}}if(n==="_blank")return typeof window<"u"&&typeof window.open=="function"&&window.open(o,"_blank","noopener,noreferrer"),{url:o,target:n,replace:t,scroll:f,behavior:l,navigated:!0,isAnchor:!1};let p=typeof e.onNavigate=="function"&&e.onNavigate||typeof e.navigateFn=="function"&&e.navigateFn;return p?(p(o,{target:n,replace:t,scroll:f,behavior:l}),{url:o,target:n,replace:t,scroll:f,behavior:l,navigated:!0,isAnchor:!1}):(typeof window<"u"&&window.location&&(t?window.location.replace(o):window.location.assign(o)),{url:o,target:n,replace:t,scroll:f,behavior:l,navigated:!0,isAnchor:!1})},ct=async(r,e)=>{let i=r.payload||{},o=i.text!==void 0?i.text:i.value!==void 0?i.value:"",n=typeof o=="object"&&o!==null?JSON.stringify(o):String(o??""),t=typeof e.copyFn=="function"?e.copyFn:typeof e.clipboardFn=="function"?e.clipboardFn:void 0;return await gn(n,{copyFn:t}),i.notify!==!1&&(i.notify===!0||i.toastMessage)&&(e.toastManager||Q).showToast({message:i.toastMessage||"Copied to clipboard!",type:"success",duration:3e3}),{text:n,copied:!0}},ut=(r,e)=>{let o=(r.payload||{}).formId||(typeof e.formId=="string"?e.formId:void 0);if(typeof e.resetForm=="function"&&e.resetForm(),e.form&&typeof e.form=="object")for(let n of Object.keys(e.form))e.form[n]="";if(typeof document<"u")try{let n=o?document.getElementById(o):document.querySelector("form");n&&typeof n.reset=="function"&&n.reset()}catch{}return{formId:o,reset:!0}};import{useMemo as bn}from"react";import{CheckCircle2 as yn,AlertCircle as hn,AlertTriangle as vn,Info as xn,X as Rn}from"lucide-react";import{Fragment as $n,jsx as G,jsxs as Pe}from"react/jsx-runtime";var kn={"top-right":{top:"16px",right:"16px",alignItems:"flex-end"},"top-left":{top:"16px",left:"16px",alignItems:"flex-start"},"top-center":{top:"16px",left:"50%",transform:"translateX(-50%)",alignItems:"center"},"bottom-right":{bottom:"16px",right:"16px",alignItems:"flex-end"},"bottom-left":{bottom:"16px",left:"16px",alignItems:"flex-start"},"bottom-center":{bottom:"16px",left:"50%",transform:"translateX(-50%)",alignItems:"center"}},pt={success:{bg:"#f0fdf4",border:"#bbf7d0",text:"#166534",titleText:"#14532d",iconColor:"#16a34a",Icon:yn},error:{bg:"#fef2f2",border:"#fecaca",text:"#991b1b",titleText:"#7f1d1d",iconColor:"#dc2626",Icon:hn},warning:{bg:"#fffbeb",border:"#fde68a",text:"#92400e",titleText:"#78350f",iconColor:"#d97706",Icon:vn},info:{bg:"#eff6ff",border:"#bfdbfe",text:"#1e40af",titleText:"#1e3a8a",iconColor:"#2563eb",Icon:xn}},Cn=({toast:r})=>{let e=pt[r.type]||pt.info,i=e.Icon;return Pe("div",{role:"alert","aria-live":"polite","data-testid":`toast-${r.id}`,"data-toast-type":r.type,style:{display:"flex",alignItems:"flex-start",gap:"12px",width:"100%",maxWidth:"380px",minWidth:"280px",padding:"12px 14px",backgroundColor:e.bg,border:`1px solid ${e.border}`,borderRadius:"8px",boxShadow:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",color:e.text,fontSize:"14px",lineHeight:"1.4",pointerEvents:"auto",animation:"kubuildToastIn 200ms cubic-bezier(0.16, 1, 0.3, 1)",wordBreak:"break-word",boxSizing:"border-box",transition:"all 200ms ease"},children:[G("div",{style:{flexShrink:0,marginTop:"2px",color:e.iconColor},children:G(i,{size:18,color:e.iconColor})}),Pe("div",{style:{flex:1,minWidth:0},children:[r.title&&G("div",{style:{fontWeight:600,fontSize:"14px",marginBottom:"2px",color:e.titleText},children:r.title}),G("div",{style:{color:e.text},children:r.message})]}),r.dismissible&&G("button",{type:"button","aria-label":"Close notification",onClick:r.dismiss,"data-testid":`toast-dismiss-${r.id}`,style:{flexShrink:0,background:"none",border:"none",cursor:"pointer",padding:"2px",marginLeft:"4px",color:e.text,opacity:.7,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"4px"},children:G(Rn,{size:16})})]})},ft=({manager:r=Q,position:e,className:i,maxVisible:o=5})=>{let{toasts:n}=ot(r),t=bn(()=>{if(e)return{[e]:n.filter(f=>(f.position||"top-right")===e)};let l={"top-right":[],"top-left":[],"top-center":[],"bottom-right":[],"bottom-left":[],"bottom-center":[]};return n.forEach(f=>{let p=f.position||"top-right";l[p].push(f)}),l},[n,e]);return n.length===0?null:Pe($n,{children:[G("style",{children:`
107
+ `)}`:""}function Yo(r,e){let i=e||(typeof window<"u"?window.document:null);if(!i)return!1;let o=i.querySelector(`[data-kubuild-node="${xe(r)}"]`);if(!o)return!1;let n=o.style.animation;return o.style.animation="none",o.offsetWidth,o.style.animation=n,o.dispatchEvent(new CustomEvent("kubuild:replay-animation",{bubbles:!0,detail:{nodeId:r}})),!0}import{Component as gn}from"react";import{AlertTriangle as mn}from"lucide-react";import{jsx as Ee,jsxs as Re}from"react/jsx-runtime";var ke=class extends gn{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,i){this.props.onError&&this.props.onError(e,i),this.props.onDiagnostic&&this.props.onDiagnostic({code:"ACTION_EXECUTION_ERROR",actionType:"render",nodeId:this.props.nodeId,message:`Render error in <${this.props.componentType}> (ID: ${this.props.nodeId}): ${e.message}`,error:e})}render(){if(this.state.hasError){let{nodeId:e,componentType:i,mode:o="runtime"}=this.props,n=this.state.error?.message||"Unknown render error";return o==="editor"?Re("div",{"data-kubuild-node":e,"data-kubuild-error":i,style:{padding:"12px 16px",margin:"4px 0",backgroundColor:"#fef2f2",border:"1px solid #ef4444",borderRadius:"6px",color:"#b91c1c",fontFamily:"system-ui, -apple-system, sans-serif",fontSize:"13px",lineHeight:"1.4"},children:[Re("div",{style:{fontWeight:600,marginBottom:"4px",display:"flex",alignItems:"center",gap:"6px"},children:[Ee(mn,{size:14,"aria-hidden":"true"}),Re("span",{children:["Component Render Error: <",i,">"]})]}),Re("div",{style:{fontSize:"11px",color:"#7f1d1d",wordBreak:"break-all"},children:["Node ID: ",Ee("code",{children:e})," \u2014 ",n]})]}):Ee("div",{"data-kubuild-node":e,"data-kubuild-error":i,style:{display:"none"},"aria-hidden":"true"})}return this.props.children}};import{isVariableBinding as bn}from"@kubuild/schema";import{primitiveTypeForField as lt}from"@kubuild/components";import{resolveBinding as yn}from"@kubuild/core";function hn(r){switch(r){case"string":return"";case"number":return 0;case"boolean":return!1}}function xn(r,e,i,o,n){let t=r.props?.[e.name],l=lt(e);if(l===void 0||t===void 0)return t;let p=i.defaultProps?.[e.name]??e.defaultValue??hn(l);if(bn(t)){let f=yn(t,o);return typeof f.value===l?f.value:(n.push({code:"INCOMPATIBLE_BINDING_TYPE",nodeId:r.id,propName:e.name,expectedType:l,actualType:typeof f.value,message:`Prop "${e.name}" on node "${r.id}" expected a ${l} but resolved binding "${t.key}" produced a ${typeof f.value}.`}),p)}return l==="string"&&typeof t=="string"&&t.includes("{{")?Qe(o,t):t}function dt(r,e,i){let o=r.props||{};if(!e||!e.propFields||e.propFields.length===0)return{props:o,diagnostics:[]};let n=[],t={...o};for(let l of e.propFields)lt(l)!==void 0&&(t[l.name]=xn(r,l,e,i,n));return{props:t,diagnostics:n}}import to from"react";import{isAssetReference as no,isVariableBinding as O}from"@kubuild/schema";import{icons as Kt,Package as oo,Puzzle as ro,AlertTriangle as io}from"lucide-react";import{resolveBinding as ao,sanitizeUrl as ne,sanitizeHtml as so}from"@kubuild/core";import{createContext as Hn,useContext as St,useState as de,useCallback as _,useRef as wt,useMemo as ce,useEffect as Tt}from"react";import{applyFieldTransform as $t,validateFieldValue as _n,validateForm as Ln,ActionPipelineExecutor as qn}from"@kubuild/core";import{isSafeActionUrl as vn}from"@kubuild/schema";import{ActionCancellationError as Pe,ActionTimeoutError as Ae}from"@kubuild/core";var te=class extends Error{status;statusText;url;method;data;headers;response;isTimeout;isCancelled;isNetworkError;stepId;cause;constructor(e,i){super(e),this.name="ApiRequestError",this.status=i?.status,this.statusText=i?.statusText,this.url=i?.url,this.method=i?.method,this.data=i?.data,this.headers=i?.headers,this.response=i?.response,this.isTimeout=i?.isTimeout??!1,this.isCancelled=i?.isCancelled??!1,this.isNetworkError=i?.isNetworkError??!1,this.stepId=i?.stepId,this.cause=i?.cause}};function Rn(r,e,i){if(!r||typeof r!="string")throw new te("API request URL is required",{url:r});let o=r.trim();if(!vn(o))throw new te(`Disallowed or unsafe protocol in API request URL: "${o}"`,{url:o});let n=o;if(i&&!o.startsWith("http://")&&!o.startsWith("https://")&&!o.startsWith("//")){let t=i.endsWith("/")?i.slice(0,-1):i,l=o.startsWith("/")?o:`/${o}`;n=`${t}${l}`}if(e&&typeof e=="object"&&Object.keys(e).length>0){let[t,l]=n.split("?"),p=new URLSearchParams(l||"");for(let[u,c]of Object.entries(e))c!=null&&(Array.isArray(c)?c.forEach(a=>p.append(u,String(a))):p.set(u,String(c)));let f=p.toString();n=f?`${t}?${f}`:t}return n}function kn(r,e,i,o={}){let n=r.toUpperCase(),t={...o};if(n==="GET"||n==="HEAD")return{body:void 0,headers:t};if(e==null)return{body:void 0,headers:t};let l=Object.keys(t).find(u=>u.toLowerCase()==="content-type"),p=l?t[l]:void 0,f=(i||"").toLowerCase();if(f==="form-data"||f==="formdata"||f==="multipart"||p&&p.includes("multipart/form-data")){if(typeof FormData<"u"&&e instanceof FormData)return l&&delete t[l],{body:e,headers:t};if(typeof FormData<"u"&&typeof e=="object"&&e!==null){let u=new FormData;for(let[c,a]of Object.entries(e))a!=null&&(typeof Blob<"u"&&a instanceof Blob?u.append(c,a):Array.isArray(a)?a.forEach(s=>u.append(c,typeof s=="object"?JSON.stringify(s):String(s))):typeof a=="object"?u.append(c,JSON.stringify(a)):u.append(c,String(a)));return l&&delete t[l],{body:u,headers:t}}}if(f==="urlencoded"||f==="url-encoded"||p&&p.includes("application/x-www-form-urlencoded")){if(typeof URLSearchParams<"u"&&e instanceof URLSearchParams)return l||(t["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8"),{body:e,headers:t};if(typeof e=="object"&&e!==null){let u=new URLSearchParams;for(let[c,a]of Object.entries(e))a!=null&&(Array.isArray(a)?a.forEach(s=>u.append(c,String(s))):u.append(c,String(a)));return l||(t["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8"),{body:u,headers:t}}if(typeof e=="string")return l||(t["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8"),{body:e,headers:t}}if(f==="raw"||f==="text")return l||(t["Content-Type"]="text/plain;charset=UTF-8"),{body:typeof e=="string"?e:String(e),headers:t};if(typeof e=="object"&&e!==null)return l||(t["Content-Type"]="application/json"),{body:JSON.stringify(e),headers:t};if(typeof e=="string"){if(!l)try{JSON.parse(e),t["Content-Type"]="application/json"}catch{t["Content-Type"]="text/plain;charset=UTF-8"}return{body:e,headers:t}}return{body:String(e),headers:t}}async function Cn(r){let e=r.headers.get("content-type")||"",i=await r.text();if(!i||i.trim()==="")return null;if(e.includes("application/json")||e.includes("+json"))try{return JSON.parse(i)}catch{return i}let o=i.trim();if(o.startsWith("{")&&o.endsWith("}")||o.startsWith("[")&&o.endsWith("]"))try{return JSON.parse(o)}catch{return i}return i}function Ie(r){let e=r?.defaultTimeout,i=r?.baseUrl,o=r?.headers;return async function(t,l,p){let f=l.fetchFn||r?.fetchFn||(typeof globalThis<"u"&&typeof globalThis.fetch=="function"?globalThis.fetch:typeof fetch<"u"?fetch:void 0);if(!f)throw new te("No fetch implementation available for API request runner",{stepId:t.id});let u=t.payload||{},c=String(u.method||"GET").toUpperCase(),a=u.timeout??e,s=u.baseUrl??i,d=Rn(String(u.url||""),u.queryParams,s),g={...o||{},...u.headers||{}},{body:b,headers:y}=kn(c,u.body,u.bodyFormat||u.bodyType,g),x=new AbortController,h,v=()=>{x.abort(p?.reason)};if(p){if(p.aborted)throw new Pe(p.reason instanceof Error?p.reason.message:"API request cancelled",t.id);p.addEventListener("abort",v,{once:!0})}a!==void 0&&a>0&&(h=setTimeout(()=>{x.abort(new Ae(`API request timed out after ${a}ms`,a,t.id))},a));try{let m=await f(d,{method:c,headers:y,body:b,signal:x.signal}),k={};m.headers&&typeof m.headers.forEach=="function"&&m.headers.forEach((S,E)=>{k[E.toLowerCase()]=S});let R=await Cn(m),w={ok:m.ok,status:m.status,statusText:m.statusText,headers:k,data:R,body:R,url:m.url||d};if(!m.ok){let S=(typeof R=="object"&&R!==null&&"message"in R?String(R.message):void 0)||(typeof R=="string"&&R.length<200?R:void 0)||`HTTP ${m.status} ${m.statusText||"Error"}`;throw new te(`API request failed: ${S}`,{status:m.status,statusText:m.statusText,url:d,method:c,data:R,headers:k,response:w,stepId:t.id})}return w}catch(m){if(m instanceof te)throw m;if(x.signal.aborted){let R=x.signal.reason;if(R instanceof Ae||R instanceof Error&&R.name==="ActionTimeoutError"||R instanceof Pe||R instanceof Error&&R.name==="ActionCancellationError")throw R;if(m instanceof Error&&(m.name==="AbortError"||m.name==="TimeoutError"))throw h===void 0&&p?.aborted?new Pe("API request cancelled",t.id):new Ae(`API request timed out after ${a}ms`,a??0,t.id)}let k=m instanceof Error?m.message:String(m);throw new te(`Network error during API request: ${k}`,{url:d,method:c,isNetworkError:!0,stepId:t.id,cause:m})}finally{h!==void 0&&clearTimeout(h),p&&p.removeEventListener("abort",v)}}}var ct=Ie();import{useState as wn,useEffect as $n}from"react";var Sn=0,Ne=class{toasts=[];listeners=new Set;timers=new Map;showToast(e){let i=typeof e=="string"?{message:e}:e,o=i.id||`toast_${Date.now()}_${++Sn}`,n=i.type||i.variant||"info",t=i.duration!==void 0?Math.max(0,i.duration):4e3,l=i.position||"top-right",p=i.dismissible!==!1;this.timers.has(o)&&(clearTimeout(this.timers.get(o)),this.timers.delete(o));let f={id:o,type:n,message:i.message,title:i.title,duration:t,position:l,dismissible:p,createdAt:Date.now(),dismiss:()=>this.dismissToast(o)};if(this.toasts=this.toasts.filter(u=>u.id!==o).concat(f),t>0){let u=setTimeout(()=>{this.dismissToast(o)},t);this.timers.set(o,u)}return this.notify(),f}dismissToast(e){this.timers.has(e)&&(clearTimeout(this.timers.get(e)),this.timers.delete(e));let i=this.toasts.length;this.toasts=this.toasts.filter(o=>o.id!==e),this.toasts.length!==i&&this.notify()}clearToasts(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.toasts=[],this.notify()}getToasts(){return[...this.toasts]}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){let e=this.getToasts();for(let i of this.listeners)try{i(e)}catch(o){console.error("Error in toast listener callback:",o)}}},re=new Ne;function ut(r=re){let[e,i]=wn(()=>r.getToasts());return $n(()=>(i(r.getToasts()),r.subscribe(o=>{i(o)})),[r]),{toasts:e,showToast:o=>r.showToast(o),dismissToast:o=>r.dismissToast(o),clearToasts:()=>r.clearToasts()}}import{useState as pt,useEffect as ft,useCallback as Fe}from"react";var De=class{modals=new Map;activeStack=[];listeners=new Set;openModal(e){if(!e||typeof e!="string")return;let i=e.trim();if(i){if(this.modals.set(i,!0),this.activeStack=this.activeStack.filter(o=>o!==i).concat(i),typeof window<"u"&&typeof window.dispatchEvent=="function")try{let o=new CustomEvent("kubuild:modal:open",{detail:{modalId:i},bubbles:!0});window.dispatchEvent(o)}catch{}this.notify()}}closeModal(e){if(e&&typeof e=="string"){let i=e.trim();if(this.modals.set(i,!1),this.activeStack=this.activeStack.filter(o=>o!==i),typeof window<"u"&&typeof window.dispatchEvent=="function")try{let o=new CustomEvent("kubuild:modal:close",{detail:{modalId:i},bubbles:!0});window.dispatchEvent(o)}catch{}}else{let i=this.activeStack.pop();if(i){if(this.modals.set(i,!1),typeof window<"u"&&typeof window.dispatchEvent=="function")try{let o=new CustomEvent("kubuild:modal:close",{detail:{modalId:i},bubbles:!0});window.dispatchEvent(o)}catch{}}else for(let o of this.modals.keys())this.modals.set(o,!1)}this.notify()}toggleModal(e){return this.isModalOpen(e)?(this.closeModal(e),!1):(this.openModal(e),!0)}isModalOpen(e){return e?!!this.modals.get(e.trim()):!1}hasState(e){return e?this.modals.has(e.trim()):!1}getState(){let e={};for(let[i,o]of this.modals.entries())e[i]=o;return e}getActiveModals(){return[...this.activeStack]}reset(){this.modals.clear(),this.activeStack=[],this.notify()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){let e=this.getState();for(let i of this.listeners)try{i(e)}catch(o){console.error("Error in modal listener callback:",o)}}},G=new De;function gt(r,e=G){if(!r)return{isOpen:!1,open:()=>{},close:()=>{},toggle:()=>!1};let[i,o]=pt(()=>e.isModalOpen(r));ft(()=>(o(e.isModalOpen(r)),e.subscribe(p=>{o(!!p[r])})),[r,e]);let n=Fe(()=>e.openModal(r),[r,e]),t=Fe(()=>e.closeModal(r),[r,e]),l=Fe(()=>e.toggleModal(r),[r,e]);return{isOpen:i,open:n,close:t,toggle:l}}function mt(r=G){let[e,i]=pt(()=>r.getState());return ft(()=>(i(r.getState()),r.subscribe(o=>{i(o)})),[r]),{modals:e,activeModals:r.getActiveModals(),isOpen:o=>!!e[o],openModal:o=>r.openModal(o),closeModal:o=>r.closeModal(o),toggleModal:o=>r.toggleModal(o)}}var bt=(r,e)=>{let i=r.payload||{},o=String(i.message||"").trim();if(!o)throw new Error("Toast message cannot be empty");let n=i.type||i.variant||"info",t=i.duration!==void 0?i.duration:4e3,l=i.position||"top-right",p=i.title?String(i.title):void 0,u=(e.toastManager||re).showToast({message:o,type:n,duration:t,position:l,title:p});return{id:u.id,message:u.message,type:u.type,title:u.title,duration:u.duration,position:u.position}},Me=(r,e)=>{let i=r.payload||{},o=i.modalId||i.modalNodeId||i.targetNodeId||i.nodeId,n=o?String(o).trim():"";if(!n)throw new Error("Modal ID or Modal Node ID is required for open_modal action");let t=e.modalManager||G,p=!!i.toggle?t.toggleModal(n):(t.openModal(n),!0);if(e.state&&typeof e.state=="object"){let f=e.state.modals||{};e.state.modals={...f,[n]:p},e.state[n]=p}return e.variables&&typeof e.variables=="object"&&(e.variables[`modal_${n}_open`]=p),{modalId:n,open:p}},yt=(r,e)=>Me({...r,payload:{...r.payload||{},toggle:!0}},e),ht=(r,e)=>{let i=r.payload||{},o=i.modalId||i.modalNodeId||i.targetNodeId||i.nodeId,n=o?String(o).trim():void 0;if((e.modalManager||G).closeModal(n),n){if(e.state&&typeof e.state=="object"){let l=e.state.modals||{};e.state.modals={...l,[n]:!1},e.state[n]=!1}e.variables&&typeof e.variables=="object"&&(e.variables[`modal_${n}_open`]=!1)}else e.state&&typeof e.state=="object"&&(e.state.modals={});return{modalId:n||"all",open:!1}};import{isSafeActionUrl as Tn}from"@kubuild/schema";async function En(r,e){if(e?.copyFn)return await e.copyFn(r),!0;if(typeof navigator<"u"&&navigator.clipboard&&typeof navigator.clipboard.writeText=="function")try{return await navigator.clipboard.writeText(r),!0}catch{}if(typeof document<"u")try{let i=document.createElement("textarea");i.value=r,i.setAttribute("readonly",""),i.style.position="fixed",i.style.top="-9999px",i.style.left="-9999px",i.style.opacity="0",document.body.appendChild(i),i.focus(),i.select();let o=document.execCommand("copy");if(document.body.removeChild(i),o)return!0}catch{}return!1}var xt=(r,e)=>{let i=r.payload||{},o=String(i.url||"").trim();if(!o)throw new Error("Navigation URL cannot be empty");if(!Tn(o))throw new Error(`Disallowed or unsafe protocol in navigation URL: "${o}"`);let n=i.target||"_self",t=i.replace??!1,l=i.behavior||"smooth",p=i.scroll??!0;if(o.startsWith("#")){if(typeof document<"u"){try{let u=document.querySelector(o)||document.getElementById(o.slice(1));u&&typeof u.scrollIntoView=="function"&&u.scrollIntoView({behavior:p===!1?"auto":l,block:"start"})}catch{}if(typeof window<"u"&&window.location)try{window.location.hash=o}catch{}}return{url:o,target:"_self",replace:t,scroll:p,behavior:l,navigated:!0,isAnchor:!0}}if(n==="_blank")return typeof window<"u"&&typeof window.open=="function"&&window.open(o,"_blank","noopener,noreferrer"),{url:o,target:n,replace:t,scroll:p,behavior:l,navigated:!0,isAnchor:!1};let f=typeof e.onNavigate=="function"&&e.onNavigate||typeof e.navigateFn=="function"&&e.navigateFn;return f?(f(o,{target:n,replace:t,scroll:p,behavior:l}),{url:o,target:n,replace:t,scroll:p,behavior:l,navigated:!0,isAnchor:!1}):(typeof window<"u"&&window.location&&(t?window.location.replace(o):window.location.assign(o)),{url:o,target:n,replace:t,scroll:p,behavior:l,navigated:!0,isAnchor:!1})},vt=async(r,e)=>{let i=r.payload||{},o=i.text!==void 0?i.text:i.value!==void 0?i.value:"",n=typeof o=="object"&&o!==null?JSON.stringify(o):String(o??""),t=typeof e.copyFn=="function"?e.copyFn:typeof e.clipboardFn=="function"?e.clipboardFn:void 0;return await En(n,{copyFn:t}),i.notify!==!1&&(i.notify===!0||i.toastMessage)&&(e.toastManager||re).showToast({message:i.toastMessage||"Copied to clipboard!",type:"success",duration:3e3}),{text:n,copied:!0}},Rt=(r,e)=>{let o=(r.payload||{}).formId||(typeof e.formId=="string"?e.formId:void 0);if(typeof e.resetForm=="function"&&e.resetForm(),e.form&&typeof e.form=="object")for(let n of Object.keys(e.form))e.form[n]="";if(typeof document<"u")try{let n=o?document.getElementById(o):document.querySelector("form");n&&typeof n.reset=="function"&&n.reset()}catch{}return{formId:o,reset:!0}};import{useMemo as Pn}from"react";import{CheckCircle2 as An,AlertCircle as In,AlertTriangle as Nn,Info as Fn,X as Dn}from"lucide-react";import{Fragment as Vn,jsx as Q,jsxs as Oe}from"react/jsx-runtime";var Mn={"top-right":{top:"16px",right:"16px",alignItems:"flex-end"},"top-left":{top:"16px",left:"16px",alignItems:"flex-start"},"top-center":{top:"16px",left:"50%",transform:"translateX(-50%)",alignItems:"center"},"bottom-right":{bottom:"16px",right:"16px",alignItems:"flex-end"},"bottom-left":{bottom:"16px",left:"16px",alignItems:"flex-start"},"bottom-center":{bottom:"16px",left:"50%",transform:"translateX(-50%)",alignItems:"center"}},kt={success:{bg:"#f0fdf4",border:"#bbf7d0",text:"#166534",titleText:"#14532d",iconColor:"#16a34a",Icon:An},error:{bg:"#fef2f2",border:"#fecaca",text:"#991b1b",titleText:"#7f1d1d",iconColor:"#dc2626",Icon:In},warning:{bg:"#fffbeb",border:"#fde68a",text:"#92400e",titleText:"#78350f",iconColor:"#d97706",Icon:Nn},info:{bg:"#eff6ff",border:"#bfdbfe",text:"#1e40af",titleText:"#1e3a8a",iconColor:"#2563eb",Icon:Fn}},On=({toast:r})=>{let e=kt[r.type]||kt.info,i=e.Icon;return Oe("div",{role:"alert","aria-live":"polite","data-testid":`toast-${r.id}`,"data-toast-type":r.type,style:{display:"flex",alignItems:"flex-start",gap:"12px",width:"100%",maxWidth:"380px",minWidth:"280px",padding:"12px 14px",backgroundColor:e.bg,border:`1px solid ${e.border}`,borderRadius:"8px",boxShadow:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",color:e.text,fontSize:"14px",lineHeight:"1.4",pointerEvents:"auto",animation:"kubuildToastIn 200ms cubic-bezier(0.16, 1, 0.3, 1)",wordBreak:"break-word",boxSizing:"border-box",transition:"all 200ms ease"},children:[Q("div",{style:{flexShrink:0,marginTop:"2px",color:e.iconColor},children:Q(i,{size:18,color:e.iconColor})}),Oe("div",{style:{flex:1,minWidth:0},children:[r.title&&Q("div",{style:{fontWeight:600,fontSize:"14px",marginBottom:"2px",color:e.titleText},children:r.title}),Q("div",{style:{color:e.text},children:r.message})]}),r.dismissible&&Q("button",{type:"button","aria-label":"Close notification",onClick:r.dismiss,"data-testid":`toast-dismiss-${r.id}`,style:{flexShrink:0,background:"none",border:"none",cursor:"pointer",padding:"2px",marginLeft:"4px",color:e.text,opacity:.7,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"4px"},children:Q(Dn,{size:16})})]})},Ct=({manager:r=re,position:e,className:i,maxVisible:o=5})=>{let{toasts:n}=ut(r),t=Pn(()=>{if(e)return{[e]:n.filter(p=>(p.position||"top-right")===e)};let l={"top-right":[],"top-left":[],"top-center":[],"bottom-right":[],"bottom-left":[],"bottom-center":[]};return n.forEach(p=>{let f=p.position||"top-right";l[f].push(p)}),l},[n,e]);return n.length===0?null:Oe(Vn,{children:[Q("style",{children:`
108
108
  @keyframes kubuildToastIn {
109
109
  from {
110
110
  opacity: 0;
@@ -115,77 +115,77 @@ ${e.join(`
115
115
  transform: translateY(0) scale(1);
116
116
  }
117
117
  }
118
- `}),Object.entries(t).map(([l,f])=>{if(!f||f.length===0)return null;let p=f.slice(-o);return G("div",{"data-testid":`toast-container-${l}`,className:i,style:{position:"fixed",zIndex:99999,display:"flex",flexDirection:"column",gap:"8px",maxWidth:"calc(100vw - 32px)",pointerEvents:"none",...kn[l]},children:p.map(u=>G(Cn,{toast:u},u.id))},l)})]})};function wn(r){return{api_request:r?.apiRequest?we(r.apiRequest):nt,show_toast:st,open_modal:at,close_modal:lt,navigate:dt,copy_clipboard:ct,reset_form:ut,...r?.handlers||{}}}function ye(r,e){let i=wn(e);for(let[o,n]of Object.entries(i))(!r.hasHandler(o)||e?.handlers?.[o]||e?.apiRequest)&&r.registerHandler(o,n);return r}import{jsx as In}from"react/jsx-runtime";var Ne=Sn(null);function Nn(r,e){let i=new Set([...Object.keys(r),...Object.keys(e)]);for(let o of i)if(r[o]!==e[o])return!0;return!1}var ht=({formId:r,formConfig:e,initialValues:i,onSubmit:o,onSuccess:n,onError:t,actions:l,nodeId:f,document:p,onDiagnostic:u,children:d})=>{let s=Ue(),a=le(()=>r||e?.formId||f||"kubuild-form",[r,e?.formId,f]),c=le(()=>({...e?.initialValues||{},...i||{}}),[e?.initialValues,i]),[m,b]=ae(c),[y,h]=ae(c),[v,x]=ae({}),[g,w]=ae({}),[R,$]=ae(!1),S=mt(new Map),E=mt({values:y,errors:v,touched:g,initialValues:m,isSubmitting:R,formConfig:e});yt(()=>{E.current={values:y,errors:v,touched:g,initialValues:m,isSubmitting:R,formConfig:e}});let ne=V(k=>{if(!k||!k.name)return()=>{};let N={name:k.name,rules:k.rules||[],validateOn:k.validateOn||"blur",label:k.label,defaultValue:k.defaultValue,transform:k.transform,disabled:k.disabled,required:k.required};return S.current.set(k.name,N),k.defaultValue!==void 0&&(E.current.values[k.name]===void 0&&(E.current.values[k.name]=k.defaultValue),h(P=>P[k.name]===void 0?{...P,[k.name]:k.defaultValue}:P)),()=>{S.current.delete(k.name)}},[]),H=V(k=>S.current.get(k),[]),z=V((k,N)=>{let P=S.current.get(k),L=E.current.values,Y=N!==void 0?N:L[k];P?.transform&&(Y=gt(Y,P.transform));let O=[...P?.rules||[]];return P?.required&&!O.some(I=>I.type==="required")&&O.unshift({type:"required",message:`${P.label||k} is required`}),Tn(Y,O,L)},[]),B=V(k=>{let N=k||E.current.values,P=Array.from(S.current.values());return En(N,P)},[]),K=V((k,N)=>{x(P=>{if(N)return{...P,[k]:N};if(P[k]===void 0)return P;let L={...P};return delete L[k],L})},[]),Ae=V(k=>{x({...k})},[]),De=V((k,N,P)=>{let L=S.current.get(k),Y=N;L?.transform&&(Y=gt(N,L.transform)),h(_=>({..._,[k]:Y}));let O=L?.validateOn||e?.validateOn||"blur";if(P!==void 0?P:O==="change"){let _=z(k,Y);K(k,_)}},[e?.validateOn,z,K]),Oe=V((k,N=!0,P)=>{w(I=>({...I,[k]:N}));let Y=S.current.get(k)?.validateOn||e?.validateOn||"blur";if(P!==void 0?P:Y==="blur"&&N){let I=z(k);K(k,I)}},[e?.validateOn,z,K]),Ve=V((k,N=!1)=>{h(P=>N?{...k}:{...P,...k})},[]),ue=V(k=>{$(k)},[]),oe=V(k=>{let N=k||m;k&&b(k),h({...N}),x({}),w({}),$(!1)},[m]),Me=V(async k=>{if(k&&typeof k.preventDefault=="function"&&k.preventDefault(),E.current.isSubmitting)return!1;let N=E.current.values,P={};for(let O of S.current.keys())P[O]=!0;w(P);let L=B(N);if(x(L),!(Object.keys(L).length===0)){if(t?.(L),e?.scrollToFirstError!==!1&&typeof window<"u"&&typeof p<"u"){let I=Object.keys(L)[0];if(I)try{let _=window.document.querySelector(`[name="${I}"], [data-field="${I}"]`);_&&(_.scrollIntoView({behavior:"smooth",block:"center"}),_.focus?.())}catch{}}return!1}$(!0);try{if(l&&l.length>0){let O=l.filter(I=>I.trigger==="submit"&&I.enabled!==!1);if(O.length>0){let I=new Pn;ye(I);for(let _ of O){let re=await I.execute(_,{context:{form:N,variables:s?.variables?{...s.variables}:{},nodeId:f,document:p}});if(!re.success){let Le=re.error instanceof Error?re.error.message:String(re.error||"Submit pipeline failed"),qe={code:"ACTION_EXECUTION_ERROR",actionType:_.steps[0]?.type||"submit",nodeId:f,message:`Form submit pipeline failed: ${Le}`,error:re.error};return u?.(qe),s?.onDiagnostic?.(qe),t?.({_form:Le}),$(!1),!1}}}}return o&&await o(N,{formId:a,setSubmitting:ue,resetForm:oe,setErrors:x}),n?.(N),e?.resetOnSubmit&&oe(),!0}catch(O){let I=O instanceof Error?O.message:String(O),_={code:"ACTION_EXECUTION_ERROR",actionType:"submit",nodeId:f,message:`Form submit execution error: ${I}`,error:O};return u?.(_),s?.onDiagnostic?.(_),t?.({_form:I}),!1}finally{$(!1)}},[e,l,f,p,u,s,o,n,t,a,ue,oe,B]),He=le(()=>Object.keys(v).length===0,[v]),Be=le(()=>Nn(y,m),[y,m]),qt=le(()=>({formId:a,formConfig:e,initialValues:m,values:y,errors:v,touched:g,isSubmitting:R,isValid:He,dirty:Be,setFieldValue:De,setFieldTouched:Oe,setFieldError:K,setErrors:Ae,setValues:Ve,setSubmitting:ue,resetForm:oe,validateField:z,validateForm:B,handleFormSubmit:Me,registerField:ne,getFieldBinding:H}),[a,e,m,y,v,g,R,He,Be,De,Oe,K,Ae,Ve,ue,oe,z,B,Me,ne,H]);return In(Ne.Provider,{value:qt,children:d})};function X(){return bt(Ne)}function $r(){return bt(Ne)}function wr(){let r=X();return{isSubmitting:r?.isSubmitting??!1,isValid:r?.isValid??!0,dirty:r?.dirty??!1,errors:r?.errors??{}}}function Sr(r,e){let i=X();i&&r&&i.registerField(e||{name:r}),yt(()=>{if(!i||!r)return;let a=i.registerField(e||{name:r});return()=>{a()}},[i,r,e]);let o=i?.values[r]!==void 0?i.values[r]:e?.defaultValue,n=i?.errors[r],t=!!i?.touched[r],l=!!(n&&t),f=V((a,c)=>{i?.setFieldValue(r,a,c)},[i,r]),p=V((a=!0,c)=>{i?.setFieldTouched(r,a,c)},[i,r]),u=V(a=>{i?.setFieldError(r,a)},[i,r]),d=V(a=>{if(a&&typeof a=="object"&&"target"in a&&a.target){let c=a.target;if(c.type==="checkbox")f(c.checked);else if(c.type==="number"){let m=c.value===""?"":Number(c.value);f(m)}else f(c.value)}else f(a)},[f]),s=V(()=>{p(!0)},[p]);return{value:o,error:n,touched:t,isInvalid:l,setValue:f,setTouched:p,setError:u,onChange:d,onBlur:s}}import{useRef as Fn}from"react";import{jsx as vt}from"react/jsx-runtime";var j=({as:r="p",id:e,className:i,style:o,value:n,isEditable:t,nodeId:l,onClick:f,onChange:p,...u})=>{let d=Fn(!1),s=r;return t?vt(s,{id:e,className:i,style:{...o,outline:"none",cursor:"text"},contentEditable:!0,suppressContentEditableWarning:!0,"data-kubuild-node":l,onClick:a=>{f?.(a)},onFocus:()=>{d.current=!0},onInput:a=>{let c=a.currentTarget.textContent??"";p?.(c,!1)},onBlur:a=>{d.current=!1;let c=a.currentTarget.textContent??"";p?.(c,!0)},onKeyDown:a=>{a.key==="Escape"&&a.currentTarget.blur()},...u,children:n}):vt(s,{id:e,className:i,style:o,onClick:f,"data-kubuild-node":l,...u,children:n})};import{useRef as xt,useLayoutEffect as An,useEffect as Dn,useMemo as On}from"react";import{jsx as Rt}from"react/jsx-runtime";var Vn=typeof window<"u"?An:Dn;function Mn(r){return r?r.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(e,i,o)=>{let n=o;return n=n.replace(/(^|[\s,{}])body(?=[\s,{])/g,"$1:host, body"),n=n.replace(/(^|[\s,{}])html(?=[\s,{])/g,"$1:host, html"),`<style${i}>
118
+ `}),Object.entries(t).map(([l,p])=>{if(!p||p.length===0)return null;let f=p.slice(-o);return Q("div",{"data-testid":`toast-container-${l}`,className:i,style:{position:"fixed",zIndex:99999,display:"flex",flexDirection:"column",gap:"8px",maxWidth:"calc(100vw - 32px)",pointerEvents:"none",...Mn[l]},children:f.map(u=>Q(On,{toast:u},u.id))},l)})]})};function Bn(r){return{api_request:r?.apiRequest?Ie(r.apiRequest):ct,show_toast:bt,open_modal:Me,close_modal:ht,toggle_modal:yt,navigate:xt,copy_clipboard:vt,reset_form:Rt,...r?.handlers||{}}}function Ce(r,e){let i=Bn(e);for(let[o,n]of Object.entries(i))(!r.hasHandler(o)||e?.handlers?.[o]||e?.apiRequest)&&r.registerHandler(o,n);return r}import{jsx as zn}from"react/jsx-runtime";var Ve=Hn(null);function jn(r,e){let i=new Set([...Object.keys(r),...Object.keys(e)]);for(let o of i)if(r[o]!==e[o])return!0;return!1}var Et=({formId:r,formConfig:e,initialValues:i,onSubmit:o,onSuccess:n,onError:t,actions:l,nodeId:p,document:f,onDiagnostic:u,children:c})=>{let a=Ze(),s=ce(()=>r||e?.formId||p||"kubuild-form",[r,e?.formId,p]),d=ce(()=>({...e?.initialValues||{},...i||{}}),[e?.initialValues,i]),[g,b]=de(d),[y,x]=de(d),[h,v]=de({}),[m,k]=de({}),[R,w]=de(!1),S=wt(new Map),E=wt({values:y,errors:h,touched:m,initialValues:g,isSubmitting:R,formConfig:e});Tt(()=>{E.current={values:y,errors:h,touched:m,initialValues:g,isSubmitting:R,formConfig:e}});let F=_($=>{if(!$||!$.name)return()=>{};let N={name:$.name,rules:$.rules||[],validateOn:$.validateOn||"blur",label:$.label,defaultValue:$.defaultValue,transform:$.transform,disabled:$.disabled,required:$.required};return S.current.set($.name,N),$.defaultValue!==void 0&&(E.current.values[$.name]===void 0&&(E.current.values[$.name]=$.defaultValue),x(P=>P[$.name]===void 0?{...P,[$.name]:$.defaultValue}:P)),()=>{S.current.delete($.name)}},[]),I=_($=>S.current.get($),[]),z=_(($,N)=>{let P=S.current.get($),q=E.current.values,J=N!==void 0?N:q[$];P?.transform&&(J=$t(J,P.transform));let H=[...P?.rules||[]];return P?.required&&!H.some(M=>M.type==="required")&&H.unshift({type:"required",message:`${P.label||$} is required`}),_n(J,H,q)},[]),D=_($=>{let N=$||E.current.values,P=Array.from(S.current.values());return Ln(N,P)},[]),A=_(($,N)=>{v(P=>{if(N)return{...P,[$]:N};if(P[$]===void 0)return P;let q={...P};return delete q[$],q})},[]),ae=_($=>{v({...$})},[]),be=_(($,N,P)=>{let q=S.current.get($),J=N;q?.transform&&(J=$t(N,q.transform)),x(U=>({...U,[$]:J}));let H=q?.validateOn||e?.validateOn||"blur";if(P!==void 0?P:H==="change"){let U=z($,J);A($,U)}},[e?.validateOn,z,A]),qe=_(($,N=!0,P)=>{k(M=>({...M,[$]:N}));let J=S.current.get($)?.validateOn||e?.validateOn||"blur";if(P!==void 0?P:J==="blur"&&N){let M=z($);A($,M)}},[e?.validateOn,z,A]),je=_(($,N=!1)=>{x(P=>N?{...$}:{...P,...$})},[]),ye=_($=>{w($)},[]),se=_($=>{let N=$||g;$&&b($),x({...N}),v({}),k({}),w(!1)},[g]),ze=_(async $=>{if($&&typeof $.preventDefault=="function"&&$.preventDefault(),E.current.isSubmitting)return!1;let N=E.current.values,P={};for(let H of S.current.keys())P[H]=!0;k(P);let q=D(N);if(v(q),!(Object.keys(q).length===0)){if(t?.(q),e?.scrollToFirstError!==!1&&typeof window<"u"&&typeof f<"u"){let M=Object.keys(q)[0];if(M)try{let U=window.document.querySelector(`[name="${M}"], [data-field="${M}"]`);U&&(U.scrollIntoView({behavior:"smooth",block:"center"}),U.focus?.())}catch{}}return!1}w(!0);try{if(l&&l.length>0){let H=l.filter(M=>M.trigger==="submit"&&M.enabled!==!1);if(H.length>0){let M=new qn;Ce(M);for(let U of H){let le=await M.execute(U,{context:{form:N,variables:a?.variables?{...a.variables}:{},nodeId:p,document:f}});if(!le.success){let Ke=le.error instanceof Error?le.error.message:String(le.error||"Submit pipeline failed"),Ye={code:"ACTION_EXECUTION_ERROR",actionType:U.steps[0]?.type||"submit",nodeId:p,message:`Form submit pipeline failed: ${Ke}`,error:le.error};return u?.(Ye),a?.onDiagnostic?.(Ye),t?.({_form:Ke}),w(!1),!1}}}}return o&&await o(N,{formId:s,setSubmitting:ye,resetForm:se,setErrors:v}),n?.(N),e?.resetOnSubmit&&se(),!0}catch(H){let M=H instanceof Error?H.message:String(H),U={code:"ACTION_EXECUTION_ERROR",actionType:"submit",nodeId:p,message:`Form submit execution error: ${M}`,error:H};return u?.(U),a?.onDiagnostic?.(U),t?.({_form:M}),!1}finally{w(!1)}},[e,l,p,f,u,a,o,n,t,s,ye,se,D]),Ue=ce(()=>Object.keys(h).length===0,[h]),We=ce(()=>jn(y,g),[y,g]),en=ce(()=>({formId:s,formConfig:e,initialValues:g,values:y,errors:h,touched:m,isSubmitting:R,isValid:Ue,dirty:We,setFieldValue:be,setFieldTouched:qe,setFieldError:A,setErrors:ae,setValues:je,setSubmitting:ye,resetForm:se,validateField:z,validateForm:D,handleFormSubmit:ze,registerField:F,getFieldBinding:I}),[s,e,g,y,h,m,R,Ue,We,be,qe,A,ae,je,ye,se,z,D,ze,F,I]);return zn(Ve.Provider,{value:en,children:c})};function Z(){return St(Ve)}function Kr(){return St(Ve)}function Yr(){let r=Z();return{isSubmitting:r?.isSubmitting??!1,isValid:r?.isValid??!0,dirty:r?.dirty??!1,errors:r?.errors??{}}}function Xr(r,e){let i=Z();i&&r&&i.registerField(e||{name:r}),Tt(()=>{if(!i||!r)return;let s=i.registerField(e||{name:r});return()=>{s()}},[i,r,e]);let o=i?.values[r]!==void 0?i.values[r]:e?.defaultValue,n=i?.errors[r],t=!!i?.touched[r],l=!!(n&&t),p=_((s,d)=>{i?.setFieldValue(r,s,d)},[i,r]),f=_((s=!0,d)=>{i?.setFieldTouched(r,s,d)},[i,r]),u=_(s=>{i?.setFieldError(r,s)},[i,r]),c=_(s=>{if(s&&typeof s=="object"&&"target"in s&&s.target){let d=s.target;if(d.type==="checkbox")p(d.checked);else if(d.type==="number"){let g=d.value===""?"":Number(d.value);p(g)}else p(d.value)}else p(s)},[p]),a=_(()=>{f(!0)},[f]);return{value:o,error:n,touched:t,isInvalid:l,setValue:p,setTouched:f,setError:u,onChange:c,onBlur:a}}import{useRef as Un}from"react";import{jsx as Pt}from"react/jsx-runtime";var W=({as:r="p",id:e,className:i,style:o,value:n,isEditable:t,nodeId:l,onClick:p,onChange:f,...u})=>{let c=Un(!1),a=r;return t?Pt(a,{id:e,className:i,style:{...o,outline:"none",cursor:"text"},contentEditable:!0,suppressContentEditableWarning:!0,"data-kubuild-node":l,onClick:s=>{p?.(s)},onFocus:()=>{c.current=!0},onInput:s=>{let d=s.currentTarget.textContent??"";f?.(d,!1)},onBlur:s=>{c.current=!1;let d=s.currentTarget.textContent??"";f?.(d,!0)},onKeyDown:s=>{s.key==="Escape"&&s.currentTarget.blur()},...u,children:n}):Pt(a,{id:e,className:i,style:o,onClick:p,"data-kubuild-node":l,...u,children:n})};import{useRef as At,useLayoutEffect as Wn,useEffect as Kn,useMemo as Yn}from"react";import{jsx as It}from"react/jsx-runtime";var Xn=typeof window<"u"?Wn:Kn;function Gn(r){return r?r.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(e,i,o)=>{let n=o;return n=n.replace(/(^|[\s,{}])body(?=[\s,{])/g,"$1:host, body"),n=n.replace(/(^|[\s,{}])html(?=[\s,{])/g,"$1:host, html"),`<style${i}>
119
119
  :host { display: block; }
120
- ${n}</style>`}):""}var kt=({id:r,style:e,onClick:i,dataKubuildNode:o,html:n,role:t})=>{let l=xt(null),f=xt(null),p=On(()=>Mn(n),[n]);return Vn(()=>{let u=l.current;if(u){if(typeof u.attachShadow=="function"){if(!f.current)if(u.shadowRoot)f.current=u.shadowRoot;else try{f.current=u.attachShadow({mode:"open"})}catch{f.current=u.shadowRoot}if(f.current){f.current.innerHTML=p;return}}u.innerHTML=p}},[p]),Rt("div",{ref:l,id:r,style:e,onClick:i,"data-kubuild-node":o,role:t,children:Rt("template",{shadowrootmode:"open",dangerouslySetInnerHTML:{__html:p}})})};import{useEffect as de}from"react";import Ct,{useEffect as Hn}from"react";import{ActionPipelineExecutor as Bn}from"@kubuild/core";async function D(r){let{node:e,trigger:i,document:o,context:n,formContext:t,extraContext:l,onDiagnostic:f,onActionDispatch:p,executor:u}=r;if(!e.actions||!Array.isArray(e.actions)||e.actions.length===0)return{executed:!1,success:!0};let d=e.actions.filter(c=>c.trigger===i&&c.enabled!==!1);if(d.length===0)return{executed:!1,success:!0};let s=u||new Bn;ye(s);let a={form:t?{...t.values}:{},variables:n?.variables?{...n.variables}:{},nodeId:e.id,document:o,toastManager:n?.toastManager,modalManager:n?.modalManager,...l||{}};for(let c of d){let m=await s.execute(c,{context:a});if(p&&c.steps.length>0&&p(c.steps[0].type,c.steps[0].payload,e.id),!m.success){let b=m.error instanceof Error?m.error.message:String(m.error||`Action pipeline "${c.id}" failed`),y={code:"ACTION_EXECUTION_ERROR",actionType:c.steps[0]?.type||i,nodeId:e.id,message:b,error:m.error};return f?.(y),n?.onDiagnostic?.(y),{executed:!0,success:!1,error:m.error}}}return{executed:!0,success:!0}}function $t(r,e){if(!r.actions?.some(t=>t.trigger==="load"&&t.enabled!==!1))return;let o=Ct?.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE||Ct?.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;if(o?.H||o?.ReactCurrentDispatcher?.current)try{Hn(()=>{e.mode!=="editor"&&D({node:r,trigger:"load",document:e.document,context:e.context,formContext:e.formContext,onDiagnostic:e.onDiagnostic,onActionDispatch:e.onActionDispatch})},[r,e.document,e.context,e.formContext,e.onDiagnostic,e.onActionDispatch,e.mode])}catch{}}import{jsx as M,jsxs as he}from"react/jsx-runtime";var wt=({id:r,name:e,action:i,method:o="POST",target:n,autoComplete:t,style:l,onClick:f,mode:p,dataKubuildNode:u,children:d})=>{let s=X();return M("form",{id:r,name:e,action:i,method:o,target:n,autoComplete:t,style:l,onClick:f,onSubmit:m=>{if(p==="editor"){m.preventDefault();return}s&&s.handleFormSubmit(m)},onReset:()=>{s&&s.resetForm()},"data-kubuild-node":u,role:"form","aria-label":e,children:d})},St=({id:r,name:e,type:i="text",placeholder:o,defaultValue:n,required:t,disabled:l,readOnly:f,rules:p,validateOn:u,transform:d,style:s,onClick:a,actions:c,nodeId:m,document:b,renderContext:y,onDiagnostic:h,onActionDispatch:v,dataKubuildNode:x})=>{let g=X();if(g&&e&&g.registerField({name:e,defaultValue:n,required:t,disabled:l,rules:p||[],validateOn:u,transform:d}),de(()=>{if(!g||!e)return;let B=g.registerField({name:e,defaultValue:n,required:t,disabled:l,rules:p||[],validateOn:u,transform:d});return()=>{B()}},[g,e,n,t,l,p,u,d]),!g||!e)return M("input",{id:r,type:i,name:e,placeholder:o,defaultValue:n!==void 0?String(n):void 0,required:t,disabled:l,readOnly:f,style:s,onClick:a,"data-kubuild-node":x});let w=g.values[e],R=w!=null?String(w):n!=null?String(n):"",$=g.errors[e],S=!!g.touched[e],E=!!($&&S);return M("input",{id:r,type:i,name:e,placeholder:o,value:R,onChange:B=>{let K=B.target.value;i==="number"&&(K=B.target.value===""?"":Number(B.target.value)),g.setFieldValue(e,K),c&&c.length>0&&D({node:{id:m||r||e,type:"input",actions:c},trigger:"change",document:b,context:y,formContext:g,extraContext:{fieldName:e,fieldValue:K},onDiagnostic:h,onActionDispatch:v})},onBlur:()=>{g.setFieldTouched(e,!0),c&&c.length>0&&D({node:{id:m||r||e,type:"input",actions:c},trigger:"blur",document:b,context:y,formContext:g,extraContext:{fieldName:e,fieldValue:g.values[e]},onDiagnostic:h,onActionDispatch:v})},onFocus:()=>{c&&c.length>0&&D({node:{id:m||r||e,type:"input",actions:c},trigger:"focus",document:b,context:y,formContext:g,extraContext:{fieldName:e,fieldValue:g.values[e]},onDiagnostic:h,onActionDispatch:v})},required:t,disabled:l,readOnly:f,style:s,onClick:a,"data-kubuild-node":x,"data-field":e,"data-invalid":E?"true":void 0,"aria-invalid":E?!0:void 0,"aria-errormessage":$?`${r}-error`:void 0})},Tt=({id:r,name:e,placeholder:i,defaultValue:o,rows:n=4,required:t,disabled:l,readOnly:f,rules:p,validateOn:u,transform:d,style:s,onClick:a,actions:c,nodeId:m,document:b,renderContext:y,onDiagnostic:h,onActionDispatch:v,dataKubuildNode:x})=>{let g=X();if(g&&e&&g.registerField({name:e,defaultValue:o,required:t,disabled:l,rules:p||[],validateOn:u,transform:d}),de(()=>{if(!g||!e)return;let B=g.registerField({name:e,defaultValue:o,required:t,disabled:l,rules:p||[],validateOn:u,transform:d});return()=>{B()}},[g,e,o,t,l,p,u,d]),!g||!e)return M("textarea",{id:r,name:e,placeholder:i,defaultValue:o!==void 0?String(o):void 0,rows:n,required:t,disabled:l,readOnly:f,style:s,onClick:a,"data-kubuild-node":x});let w=g.values[e],R=w!=null?String(w):o!=null?String(o):"",$=g.errors[e],S=!!g.touched[e],E=!!($&&S);return M("textarea",{id:r,name:e,placeholder:i,rows:n,value:R,onChange:B=>{g.setFieldValue(e,B.target.value),c&&c.length>0&&D({node:{id:m||r||e,type:"textarea",actions:c},trigger:"change",document:b,context:y,formContext:g,extraContext:{fieldName:e,fieldValue:B.target.value},onDiagnostic:h,onActionDispatch:v})},onBlur:()=>{g.setFieldTouched(e,!0),c&&c.length>0&&D({node:{id:m||r||e,type:"textarea",actions:c},trigger:"blur",document:b,context:y,formContext:g,extraContext:{fieldName:e,fieldValue:g.values[e]},onDiagnostic:h,onActionDispatch:v})},onFocus:()=>{c&&c.length>0&&D({node:{id:m||r||e,type:"textarea",actions:c},trigger:"focus",document:b,context:y,formContext:g,extraContext:{fieldName:e,fieldValue:g.values[e]},onDiagnostic:h,onActionDispatch:v})},required:t,disabled:l,readOnly:f,style:s,onClick:a,"data-kubuild-node":x,"data-field":e,"data-invalid":E?"true":void 0,"aria-invalid":E?!0:void 0,"aria-errormessage":$?`${r}-error`:void 0})},Et=({id:r,name:e,placeholder:i,defaultValue:o,required:n,disabled:t,rules:l,validateOn:f,optionsList:p,style:u,onClick:d,actions:s,nodeId:a,document:c,renderContext:m,onDiagnostic:b,onActionDispatch:y,dataKubuildNode:h})=>{let v=X();if(v&&e&&v.registerField({name:e,defaultValue:o,required:n,disabled:t,rules:l||[],validateOn:f}),de(()=>{if(!v||!e)return;let H=v.registerField({name:e,defaultValue:o,required:n,disabled:t,rules:l||[],validateOn:f});return()=>{H()}},[v,e,o,n,t,l,f]),!v||!e)return he("select",{id:r,name:e,defaultValue:o!==void 0?String(o):"",required:n,disabled:t,style:u,onClick:d,"data-kubuild-node":h,children:[i&&M("option",{value:"",disabled:!0,children:i}),p.map((H,z)=>M("option",{value:H.value,children:H.label},z))]});let x=v.values[e],g=x!=null?String(x):o!=null?String(o):"",w=v.errors[e],R=!!v.touched[e],$=!!(w&&R);return he("select",{id:r,name:e,value:g,onChange:H=>{v.setFieldValue(e,H.target.value),s&&s.length>0&&D({node:{id:a||r||e,type:"select",actions:s},trigger:"change",document:c,context:m,formContext:v,extraContext:{fieldName:e,fieldValue:H.target.value},onDiagnostic:b,onActionDispatch:y})},onBlur:()=>{v.setFieldTouched(e,!0),s&&s.length>0&&D({node:{id:a||r||e,type:"select",actions:s},trigger:"blur",document:c,context:m,formContext:v,extraContext:{fieldName:e,fieldValue:v.values[e]},onDiagnostic:b,onActionDispatch:y})},onFocus:()=>{s&&s.length>0&&D({node:{id:a||r||e,type:"select",actions:s},trigger:"focus",document:c,context:m,formContext:v,extraContext:{fieldName:e,fieldValue:v.values[e]},onDiagnostic:b,onActionDispatch:y})},required:n,disabled:t,style:u,onClick:d,"data-kubuild-node":h,"data-field":e,"data-invalid":$?"true":void 0,"aria-invalid":$?!0:void 0,"aria-errormessage":w?`${r}-error`:void 0,children:[i&&M("option",{value:"",disabled:!0,children:i}),p.map((H,z)=>M("option",{value:H.value,children:H.label},z))]})},Pt=({id:r,name:e,label:i="",defaultChecked:o=!1,required:n,disabled:t,rules:l,validateOn:f,style:p,onClick:u,actions:d,nodeId:s,document:a,renderContext:c,onDiagnostic:m,onActionDispatch:b,dataKubuildNode:y,isEditable:h,onNodePropChange:v})=>{let x=X();x&&e&&x.registerField({name:e,defaultValue:o,required:n,disabled:t,rules:l||[],validateOn:f}),de(()=>{if(!x||!e)return;let $=x.registerField({name:e,defaultValue:o,required:n,disabled:t,rules:l||[],validateOn:f});return()=>{$()}},[x,e,o,n,t,l,f]);let g=x&&e&&x.values[e]!==void 0?!!x.values[e]:o;return he("label",{id:r,style:p,onClick:u,"data-kubuild-node":y,children:[M("input",{type:"checkbox",name:e,checked:g,onChange:$=>{x&&e&&(x.setFieldValue(e,$.target.checked),d&&d.length>0&&D({node:{id:s||r||e,type:"checkbox",actions:d},trigger:"change",document:a,context:c,formContext:x,extraContext:{fieldName:e,fieldValue:$.target.checked},onDiagnostic:m,onActionDispatch:b}))},onBlur:()=>{x&&e&&(x.setFieldTouched(e,!0),d&&d.length>0&&D({node:{id:s||r||e,type:"checkbox",actions:d},trigger:"blur",document:a,context:c,formContext:x,extraContext:{fieldName:e,fieldValue:g},onDiagnostic:m,onActionDispatch:b}))},required:n,disabled:t,style:{cursor:t?"not-allowed":"pointer"},"data-field":e}),h?M(j,{as:"span",value:i,isEditable:h,nodeId:y||"",onChange:($,S)=>v?.(y||"","label",$,S)}):M("span",{children:i})]})},Nt=({id:r,name:e,label:i="",value:o="",defaultChecked:n=!1,required:t,disabled:l,rules:f,validateOn:p,style:u,onClick:d,actions:s,nodeId:a,document:c,renderContext:m,onDiagnostic:b,onActionDispatch:y,dataKubuildNode:h,isEditable:v,onNodePropChange:x})=>{let g=X();g&&e&&g.registerField({name:e,defaultValue:n?o:void 0,required:t,disabled:l,rules:f||[],validateOn:p}),de(()=>{if(!g||!e)return;let S=g.registerField({name:e,defaultValue:n?o:void 0,required:t,disabled:l,rules:f||[],validateOn:p});return()=>{S()}},[g,e,n,o,t,l,f,p]);let w=g&&e&&g.values[e]!==void 0?g.values[e]===o:n;return he("label",{id:r,style:u,onClick:d,"data-kubuild-node":h,children:[M("input",{type:"radio",name:e,value:o,checked:w,onChange:()=>{g&&e&&(g.setFieldValue(e,o),s&&s.length>0&&D({node:{id:a||r||e,type:"radio",actions:s},trigger:"change",document:c,context:m,formContext:g,extraContext:{fieldName:e,fieldValue:o},onDiagnostic:b,onActionDispatch:y}))},onBlur:()=>{g&&e&&(g.setFieldTouched(e,!0),s&&s.length>0&&D({node:{id:a||r||e,type:"radio",actions:s},trigger:"blur",document:c,context:m,formContext:g,extraContext:{fieldName:e,fieldValue:o},onDiagnostic:b,onActionDispatch:y}))},required:t,disabled:l,style:{cursor:l?"not-allowed":"pointer"},"data-field":e}),v?M(j,{as:"span",value:i,isEditable:v,nodeId:h||"",onChange:(S,E)=>x?.(h||"","label",S,E)}):M("span",{children:i})]})},It=({id:r,buttonType:e,disabled:i,ariaLabel:o,style:n,onClick:t,actions:l,node:f,document:p,renderContext:u,onDiagnostic:d,onActionDispatch:s,dataKubuildNode:a,actionAttrs:c,children:m})=>{let b=X(),y=b?.isSubmitting===!0,h=i||e==="submit"&&y;return M("button",{id:r,type:e,disabled:h,"aria-disabled":h?!0:void 0,"aria-label":o,"aria-busy":e==="submit"&&y?!0:void 0,tabIndex:h?-1:0,style:n,onClick:h?void 0:async x=>{if(h)return;if(e==="submit"){if(b&&!await b.handleFormSubmit(x))return}else e==="reset"&&b&&b.resetForm();let g=f||{id:a||r||"button",type:"button",actions:l};g.actions&&g.actions.length>0&&await D({node:g,trigger:"click",document:p,context:u,formContext:b,onDiagnostic:d,onActionDispatch:s}),t&&t(x)},"data-kubuild-node":a,...c,children:m})};function Ft(r){return r?r.replace(/[-_](\w)/g,(e,i)=>i.toUpperCase()).replace(/^\w/,e=>e.toUpperCase()):""}function At(r){if(!r||typeof r!="string")return null;let e=r.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/i);return e?e[1]:null}function Dt(r){if(!r||typeof r!="string")return null;let e=r.match(/(?:vimeo\.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|))(\d+)/i);return e?e[3]:null}function Ot(r){if(r==="16:9")return"16 / 9";if(r==="4:3")return"4 / 3";if(r==="1:1")return"1 / 1";if(r==="9:16")return"9 / 16";if(typeof r=="string"&&r!=="auto")return r.replace(":"," / ")}import{jsx as C,jsxs as U}from"react/jsx-runtime";function Kn(r){let{node:e,document:i,definition:o,resolvedProps:n,styles:t,context:l,childrenElements:f,handleClick:p}=r;if(o?.renderer&&typeof o.renderer=="function"){let u=o.renderer;return typeof u=="function"&&!u.prototype?.isReactComponent?u({node:e,document:i,props:n,styles:t,context:l,children:f,onClick:p}):C(u,{node:e,document:i,props:n,styles:t,context:l,onClick:p,children:f})}return null}function Yn(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,handleClick:l,childrenElements:f}=r;switch(e.type){case"page":return C("div",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,children:f});case"section":{let p=typeof n.ariaLabel=="string"?n.ariaLabel:typeof t.ariaLabel=="string"?t.ariaLabel:void 0;return C("section",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,"aria-label":p,children:f})}case"container":return C("div",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,children:f});case"columns":return C("div",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,children:f});default:return null}}function Xn(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,mode:l,handleClick:f,onNodePropChange:p,childrenElements:u}=r;switch(e.type){case"heading":{let d=typeof n.level=="number"?n.level:1,s=`h${Math.min(Math.max(d,1),6)}`||"h1",a=String(n.text??n.content??t.text??t.content??""),c=l==="editor"&&!F(t.text)&&!F(t.content);return C(j,{as:s,id:i,style:o,value:a,isEditable:c,nodeId:e.id,onClick:f,onChange:(m,b)=>p?.(e.id,"text",m,b)})}case"text":{let d=String(n.text??n.content??t.text??t.content??""),s=typeof n.as=="string"?n.as:typeof t.as=="string"?t.as:typeof n.tag=="string"?n.tag:typeof t.tag=="string"?t.tag:(t.content!==void 0||n.content!==void 0)&&t.text===void 0&&n.text===void 0?"p":"span",a=l==="editor"&&!F(t.text)&&!F(t.content);return C(j,{as:s,id:i,style:o,value:d,isEditable:a,nodeId:e.id,onClick:f,onChange:(c,m)=>p?.(e.id,"text",c,m)})}case"paragraph":{let d=String(n.text??n.content??t.text??t.content??""),s=l==="editor"&&!F(t.text)&&!F(t.content);return C(j,{as:"p",id:i,style:o,value:d,isEditable:s,nodeId:e.id,onClick:f,onChange:(a,c)=>p?.(e.id,"text",a,c)})}case"link":{let d=String(n.text??n.label??n.content??t.text??t.label??t.content??""),s=typeof n.href=="string"?n.href:"#",a=typeof n.target=="string"?n.target:void 0,c=l==="editor"&&!F(t.text)&&!F(t.label)&&!F(t.content),m=typeof n.rel=="string"?n.rel:a==="_blank"?"noopener noreferrer":void 0,b=l==="editor"?void 0:Z(s,"#"),y=h=>{l==="editor"&&h.preventDefault(),f(h)};return c?C(j,{as:"a",id:i,style:o,value:d,isEditable:c,nodeId:e.id,onClick:y,onChange:(h,v)=>{let x="text"in t?"text":"label";p?.(e.id,x,h,v)},href:b,target:a,rel:m}):C("a",{id:i,style:o,href:b,target:a,rel:m,onClick:y,"data-kubuild-node":e.id,children:d})}case"blockquote":{let d=typeof n.quote=="string"?n.quote:typeof n.text=="string"?n.text:typeof t.quote=="string"?t.quote:typeof t.text=="string"?t.text:void 0,s=typeof n.cite=="string"?n.cite:typeof t.cite=="string"?t.cite:void 0,a=l==="editor"&&!F(t.quote)&&!F(t.text),c={borderLeft:"4px solid #cbd5e1",paddingLeft:"1rem",margin:"1rem 0",fontStyle:"italic",color:"#475569",...o};return U("blockquote",{id:i,style:c,onClick:f,"data-kubuild-node":e.id,cite:s,children:[d!==void 0?a?C(j,{as:"p",value:d,isEditable:a,nodeId:e.id,onChange:(m,b)=>{let y="quote"in t?"quote":"text";p?.(e.id,y,m,b)}}):C("p",{children:d}):null,u,s&&U("cite",{style:{display:"block",fontStyle:"normal",fontSize:"0.875rem",marginTop:"0.5rem",color:"#64748b"},children:["\u2014 ",s]})]})}case"badge":{let d=String(n.text??n.label??t.text??t.label??""),s=typeof n.variant=="string"?n.variant:typeof t.variant=="string"?t.variant:"default",a=l==="editor"&&!F(t.text)&&!F(t.label);return C("span",{id:i,style:o,onClick:f,"data-kubuild-node":e.id,"data-variant":s,"data-badge-variant":s,children:a?C(j,{as:"span",value:d,isEditable:a,nodeId:e.id,onChange:(c,m)=>{let b="text"in t?"text":"label";p?.(e.id,b,c,m)}}):d})}case"code-block":{let d=String(n.code??t.code??""),s=typeof n.language=="string"?n.language:typeof t.language=="string"?t.language:"plaintext";return l==="editor"?C("pre",{id:i,style:o,onClick:f,"data-kubuild-node":e.id,"data-language":s,children:C("code",{className:`language-${s}`,contentEditable:!0,suppressContentEditableWarning:!0,onBlur:a=>p?.(e.id,"code",a.currentTarget.textContent??"",!0),children:d})}):C("pre",{id:i,style:o,onClick:f,"data-kubuild-node":e.id,"data-language":s,children:C("code",{className:`language-${s}`,children:d})})}default:return null}}function Gn(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,mode:l,handleClick:f,onNodePropChange:p,childrenElements:u}=r;switch(e.type){case"list":{let s=(n.tag||t.tag)==="ol"||n.ordered===!0||t.ordered===!0?"ol":"ul",a=typeof n.listStyleType=="string"?n.listStyleType:typeof n.listStyle=="string"?n.listStyle:typeof t.listStyleType=="string"?t.listStyleType:typeof t.listStyle=="string"?t.listStyle:void 0,c=a==="custom-icon"||a==="none"?"none":a,m={...o,...c?{listStyleType:c}:{}};return C(s,{id:i,style:m,onClick:f,"data-kubuild-node":e.id,"data-list-style":a,children:u})}case"list-item":{let d=n.text!==void 0?String(n.text):t.text!==void 0?String(t.text):void 0,s=l==="editor"&&!F(t.text)&&d!==void 0;return U("li",{id:i,style:o,onClick:f,"data-kubuild-node":e.id,children:[d!==void 0&&(s?C(j,{as:"span",value:d,isEditable:s,nodeId:e.id,onChange:(a,c)=>p?.(e.id,"text",a,c)}):d),u]})}default:return null}}function Jn(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,mode:l,handleClick:f,onNodePropChange:p,childrenElements:u}=r;switch(e.type){case"table":{let d=typeof n.cellPadding=="number"?n.cellPadding:void 0,s=typeof n.cellSpacing=="number"?n.cellSpacing:void 0,a=typeof n.border=="number"?n.border:void 0,c=n.striped===!0||t.striped===!0,m=n.bordered===!0||t.bordered===!0,b=n.hover===!0||t.hover===!0,y=n.compact===!0||t.compact===!0;return C("table",{id:i,style:o,cellPadding:d,cellSpacing:s,border:a,onClick:f,"data-kubuild-node":e.id,"data-striped":c?"true":void 0,"data-bordered":m?"true":void 0,"data-hover":b?"true":void 0,"data-compact":y?"true":void 0,children:C("tbody",{children:u})})}case"table-row":return C("tr",{id:i,style:o,onClick:f,"data-kubuild-node":e.id,children:u});case"table-cell":{let s=n.tag==="th"||t.tag==="th"||n.isHeader===!0||t.isHeader===!0||n.cellType==="header"||t.cellType==="header"||n.type==="th"||t.type==="th"?"th":"td",a=typeof n.colSpan=="number"?n.colSpan:typeof t.colSpan=="number"?t.colSpan:void 0,c=typeof n.rowSpan=="number"?n.rowSpan:typeof t.rowSpan=="number"?t.rowSpan:void 0,m=n.text!==void 0?String(n.text):t.text!==void 0?String(t.text):void 0,b=l==="editor"&&!F(t.text)&&m!==void 0;return U(s,{id:i,colSpan:a,rowSpan:c,style:o,onClick:f,"data-kubuild-node":e.id,children:[m!==void 0&&(b?C(j,{as:"span",value:m,isEditable:b,nodeId:e.id,onChange:(y,h)=>p?.(e.id,"text",y,h)}):m),u]})}default:return null}}function Zn(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,context:l,mode:f,handleClick:p}=r;switch(e.type){case"image":{let u=n.src!==void 0?n.src:t.src!==void 0?t.src:t.asset,d;qn(u)?d=Re(l?.assetProvider,u.assetId)||u.fallbackUrl:typeof u=="string"&&(d=Re(l?.assetProvider,u)||u);let s=typeof n.alt=="string"?n.alt:typeof t.alt=="string"?t.alt:"",a=typeof n.fit=="string"?n.fit:void 0,c=n.loading==="eager"?"eager":"lazy",m=typeof n.width=="number"?n.width:void 0,b=typeof n.height=="number"?n.height:void 0,y=d?Z(d,""):void 0,h={...o,...a?{objectFit:a}:{}};return C("img",{id:i,src:y,alt:s,role:s===""?"presentation":void 0,loading:c,width:m,height:b,style:h,onClick:p,"data-kubuild-node":e.id})}case"video":{let u=n.src??n.url??t.src??t.url,d=typeof u=="string"?u:void 0,s=typeof n.poster=="string"?n.poster:void 0,a=n.controls!==!1,c=n.autoplay===!0,m=n.loop===!0,b=n.muted===!0,y=n.playsInline!==!1,h=n.aspectRatio,v={position:"relative",width:o.width||"100%",...h?{aspectRatio:Ot(h)}:{},...o},x=d?At(d):null,g=d?Dt(d):null;if(x){let $=`https://www.youtube.com/embed/${x}?autoplay=${c?1:0}&loop=${m?1:0}&mute=${b?1:0}&controls=${a?1:0}`,S=Z($,"");return C("div",{id:i,"data-video-provider":"youtube",style:v,onClick:p,"data-kubuild-node":e.id,children:C("iframe",{src:S,title:"YouTube video player",style:{width:"100%",height:"100%",border:0},allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0})})}if(g){let $=`https://player.vimeo.com/video/${g}?autoplay=${c?1:0}&loop=${m?1:0}&muted=${b?1:0}`,S=Z($,"");return C("div",{id:i,"data-video-provider":"vimeo",style:v,onClick:p,"data-kubuild-node":e.id,children:C("iframe",{src:S,title:"Vimeo video player",style:{width:"100%",height:"100%",border:0},allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:!0})})}let w=d?Z(d,""):void 0,R=s?Z(s,""):void 0;return C("video",{id:i,src:w,poster:R,controls:a,autoPlay:c,loop:m,muted:b,playsInline:y,style:v,onClick:p,"data-kubuild-node":e.id})}case"icon":{let u=typeof n.name=="string"?n.name:"Square",d=typeof n.size=="number"?n.size:24,s=typeof n.color=="string"?n.color:"currentColor",a=typeof n.strokeWidth=="number"?n.strokeWidth:2,c=Ft(u),m=Vt[c]||Vt[u]||_n;return C("span",{id:i,"data-icon-name":u,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",...o},onClick:p,"data-kubuild-node":e.id,children:C(m,{size:d,color:s,strokeWidth:a})})}case"html-embed":{let u=typeof n.html=="string"?n.html:"",s=n.sanitize!==!1?Wn(u):u;return!s.trim()&&f==="editor"?C("div",{id:i,style:{...o,minHeight:"60px",border:"1px dashed #94a3b8",borderRadius:"4px",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#f8fafc",color:"#64748b",fontSize:"0.875rem"},onClick:p,"data-kubuild-node":e.id,children:C("span",{children:"</> HTML Embed \u2014 Click to configure HTML code in Inspector Panel"})}):C(kt,{id:i,style:o,html:s,onClick:p,dataKubuildNode:e.id})}default:return null}}function Qn(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,context:l,mode:f,document:p,onDiagnostic:u,onActionDispatch:d,handleClick:s,onNodePropChange:a,childrenElements:c}=r;switch(e.type){case"button":{let m=String(n.label??n.text??n.content??t.label??t.text??t.content??"Button"),b=typeof n.href=="string"?n.href:typeof t.href=="string"?t.href:void 0,y=typeof n.target=="string"?n.target:typeof t.target=="string"?t.target:void 0,h=n.buttonType??n.type??t.buttonType??t.type,v=typeof h=="string"&&["submit","reset","button"].includes(h)?h:"button",x=n.disabled===!0||t.disabled===!0,g=typeof n.ariaLabel=="string"?n.ariaLabel:void 0,w=f==="editor"&&!F(t.label)&&!F(t.text),R=typeof n.rel=="string"?n.rel:typeof t.rel=="string"?t.rel:y==="_blank"?"noopener noreferrer":void 0,$={};if(t.action&&!x){let S=typeof t.action=="object"?t.action.type:t.action;if($["data-kubuild-action"]=S,l?.actionRegistry){let E=Xe(l.actionRegistry,S);$["data-kubuild-action-resolved"]=E?"true":"false"}}if(b&&!x){let S=f==="editor"?void 0:Z(b,"#");return C("a",{id:i,href:S,target:y,rel:R,tabIndex:0,style:o,onClick:s,"data-kubuild-node":e.id,"aria-label":g,...$,children:m})}return w?C(j,{as:"button",id:i,type:f==="editor"?"button":v,disabled:x,"aria-disabled":x?!0:void 0,"aria-label":g,tabIndex:x?-1:0,style:o,value:m,isEditable:w,nodeId:e.id,onClick:x?void 0:s,onChange:(S,E)=>a?.(e.id,"label",S,E),...$}):C(It,{id:i,buttonType:f==="editor"?"button":v,disabled:x,ariaLabel:g,style:o,onClick:x?void 0:s,actions:e.actions,node:e,document:p,renderContext:l,onDiagnostic:u,onActionDispatch:d,dataKubuildNode:e.id,actionAttrs:$,children:m})}case"form":{let m=typeof n.action=="string"?n.action:void 0,b=typeof n.method=="string"?n.method:"POST",y=typeof n.target=="string"?n.target:void 0,h=typeof n.autoComplete=="string"?n.autoComplete:void 0,v=typeof n.name=="string"?n.name:void 0,x=e.formConfig,g={formId:x?.formId||t.formId||v||e.id,resetOnSubmit:n.resetOnSubmit===!0||(x?.resetOnSubmit??!1),scrollToFirstError:n.scrollToFirstError!==!1&&(x?.scrollToFirstError??!0),validateOn:n.validateOn||x?.validateOn||"blur",initialValues:n.initialValues||x?.initialValues};return C(ht,{formId:g.formId,formConfig:g,initialValues:g.initialValues,actions:e.actions,nodeId:e.id,document:p,onDiagnostic:u,children:C(wt,{id:i,name:v,action:m&&f!=="editor"?Z(m,""):void 0,method:b,target:y,autoComplete:h,style:o,onClick:s,mode:f,dataKubuildNode:e.id,children:c})})}case"input":{let m=typeof n.name=="string"?n.name:void 0,b=typeof n.type=="string"?n.type:"text",y=typeof n.placeholder=="string"?n.placeholder:void 0,h=n.defaultValue!==void 0?n.defaultValue:void 0,v=n.required===!0,x=n.disabled===!0,g=n.readOnly===!0,w=e.formConfig?.rules||n.rules||t.rules||[],R=n.validateOn||t.validateOn,$=n.transform||t.transform;return C(St,{id:i,name:m,type:b,placeholder:y,defaultValue:h,required:v,disabled:x,readOnly:g,rules:w,validateOn:R,transform:$,style:o,onClick:s,actions:e.actions,nodeId:e.id,document:p,renderContext:l,onDiagnostic:u,onActionDispatch:d,dataKubuildNode:e.id})}case"textarea":{let m=typeof n.name=="string"?n.name:void 0,b=typeof n.placeholder=="string"?n.placeholder:void 0,y=n.defaultValue!==void 0?n.defaultValue:void 0,h=typeof n.rows=="number"?n.rows:4,v=n.required===!0,x=n.disabled===!0,g=n.readOnly===!0,w=e.formConfig?.rules||n.rules||t.rules||[],R=n.validateOn||t.validateOn,$=n.transform||t.transform;return C(Tt,{id:i,name:m,placeholder:b,defaultValue:y,rows:h,required:v,disabled:x,readOnly:g,rules:w,validateOn:R,transform:$,style:o,onClick:s,actions:e.actions,nodeId:e.id,document:p,renderContext:l,onDiagnostic:u,onActionDispatch:d,dataKubuildNode:e.id})}case"select":{let m=typeof n.name=="string"?n.name:void 0,b=typeof n.placeholder=="string"?n.placeholder:void 0,y=n.defaultValue!==void 0?n.defaultValue:void 0,h=n.required===!0,v=n.disabled===!0,x=e.formConfig?.rules||n.rules||t.rules||[],g=n.validateOn||t.validateOn,w=[],R=n.options??t.options;if(Array.isArray(R))w=R.map($=>{if(typeof $=="object"&&$!==null){let S=$;return{label:String(S.label??S.value??""),value:String(S.value??S.label??"")}}return{label:String($),value:String($)}});else if(typeof R=="string")try{let $=JSON.parse(R);Array.isArray($)&&(w=$.map(S=>{if(typeof S=="object"&&S!==null){let E=S;return{label:String(E.label??E.value??""),value:String(E.value??E.label??"")}}return{label:String(S),value:String(S)}}))}catch{}return C(Et,{id:i,name:m,placeholder:b,defaultValue:y,required:h,disabled:v,rules:x,validateOn:g,optionsList:w,style:o,onClick:s,actions:e.actions,nodeId:e.id,document:p,renderContext:l,onDiagnostic:u,onActionDispatch:d,dataKubuildNode:e.id})}case"checkbox":{let m=typeof n.name=="string"?n.name:void 0,b=String(n.label??"Checkbox"),y=n.value!==void 0?String(n.value):"yes",h=n.defaultChecked===!0,v=n.required===!0,x=n.disabled===!0,g=e.formConfig?.rules||n.rules||t.rules||[],w=n.validateOn||t.validateOn,R=f==="editor"&&!F(t.label);return C(Pt,{id:i,name:m,label:b,value:y,defaultChecked:h,required:v,disabled:x,rules:g,validateOn:w,style:o,onClick:s,actions:e.actions,nodeId:e.id,document:p,renderContext:l,onDiagnostic:u,onActionDispatch:d,dataKubuildNode:e.id,isEditable:R,onNodePropChange:a})}case"radio":{let m=typeof n.name=="string"?n.name:void 0,b=String(n.label??"Radio"),y=n.value!==void 0?String(n.value):"option",h=n.defaultChecked===!0,v=n.required===!0,x=n.disabled===!0,g=n.rules||t.rules||[],w=n.validateOn||t.validateOn,R=f==="editor"&&!F(t.label);return C(Nt,{id:i,name:m,label:b,value:y,defaultChecked:h,required:v,disabled:x,rules:g,validateOn:w,style:o,onClick:s,actions:e.actions,nodeId:e.id,document:p,renderContext:l,onDiagnostic:u,onActionDispatch:d,dataKubuildNode:e.id,isEditable:R,onNodePropChange:a})}default:return null}}function eo(r){let{node:e,domId:i,styles:o,props:n,context:t,mode:l,handleClick:f,onDiagnostic:p,renderChildNode:u}=r;if(e.type!=="collection")return null;let d=typeof n.sourceKey=="string"?n.sourceKey:void 0,s=typeof n.itemAlias=="string"&&n.itemAlias.length>0?n.itemAlias:"item",a=`${s}Index`,c=d?Un({key:d},t).value:void 0;if(!Array.isArray(c)){let b={code:"INVALID_COLLECTION_SOURCE",nodeId:e.id,propName:"sourceKey",message:`Collection node "${e.id}" expected an array at variable path "${d??"(missing sourceKey)"}" but found ${c===void 0?"nothing":typeof c}.`};return p?.(b),t?.onDiagnostic?.(b),l==="editor"?U("div",{id:i,"data-kubuild-node":e.id,"data-kubuild-collection-invalid":e.type,style:{...o,border:"2px dashed #f59e0b",backgroundColor:"#fffbeb",padding:"12px",color:"#b45309",fontSize:"0.875rem",borderRadius:"4px"},onClick:f,children:[U("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px"},children:[C(zn,{size:16}),C("strong",{children:"Collection: expected an array"})]}),U("div",{children:["Source path ",C("code",{children:d??"(none)"})," did not resolve to an array. Found"," ",C("code",{children:c===void 0?"nothing":typeof c}),"."]})]}):C("div",{id:i,"data-kubuild-node":e.id,style:{display:"contents"},"data-kubuild-empty-collection":"invalid-source"})}let m=e.children||[];return m.length===0||c.length===0?C("div",{id:i,style:o,onClick:f,"data-kubuild-node":e.id,"data-kubuild-collection-empty":c.length===0?"true":void 0,children:c.length===0&&l==="editor"&&U("div",{style:{padding:"12px",border:"1px dashed #cbd5e1",borderRadius:"4px",color:"#94a3b8",fontSize:"0.875rem",textAlign:"center"},children:["Empty Collection (",C("code",{children:d})," has 0 items)"]})}):C("div",{id:i,style:o,onClick:f,"data-kubuild-node":e.id,children:c.map((b,y)=>{let h={...t,variables:{...t.variables,[s]:b,[a]:y}},v=`__iter_${y}`;return C(Ln.Fragment,{children:m.map(x=>u(x,v,h))},`collection-item-${y}`)})})}function to(r){let{node:e,domId:i,styles:o,handleClick:n,mode:t,childrenElements:l}=r;return t==="editor"?U("div",{id:i,style:{...o,border:"2px dashed #e2e8f0",padding:"16px",backgroundColor:"#f8fafc"},onClick:n,"data-kubuild-node":e.id,"data-kubuild-unknown":e.type,children:[U("div",{style:{display:"flex",alignItems:"center",gap:"8px",color:"#64748b"},children:[C(jn,{size:16}),U("span",{children:["Unknown Component: ",e.type]}),U("span",{style:{fontSize:"12px",color:"#94a3b8"},children:["(",e.id,")"]})]}),l]}):C("div",{id:i,style:o,onClick:n,"data-kubuild-node":e.id,"data-kubuild-unknown":e.type,children:l})}function Mt(r){let e=Kn(r);if(e)return e;let i=Yn(r);if(i)return i;let o=Xn(r);if(o)return o;let n=Gn(r);if(n)return n;let t=Jn(r);if(t)return t;let l=Zn(r);if(l)return l;let f=Qn(r);if(f)return f;let p=eo(r);return p||to(r)}import{jsx as W,jsxs as ce}from"react/jsx-runtime";function Ie({node:r,document:e,registry:i,context:o,viewport:n="desktop",mode:t="runtime",onNodeClick:l,onDiagnostic:f,onActionDispatch:p,onNodePropChange:u,instanceSuffix:d=""}){let s=o||ie,a=Je(r.styles,n),c=r.props||{},m=i.get(r.type),b=d?`${r.id}${d}`:r.id,{props:y,diagnostics:h}=tt(r,m,s);h.forEach(R=>{f?.(R),s?.onDiagnostic?.(R)}),$t(r,{document:e,context:s,onDiagnostic:f,onActionDispatch:p,mode:t});let v=async R=>{R.stopPropagation(),l&&l(r.id,R),r.actions&&r.actions.length>0&&!c.disabled&&await D({node:r,trigger:"click",document:e,context:s,onDiagnostic:f,onActionDispatch:p}),c.action&&!c.disabled&&(Ge({action:c.action,nodeId:r.id,document:e,context:s,onDiagnostic:f}),p&&no(c.action)&&p(c.action.type,Ye(s,c.action.payload),r.id))},x=r.children?.map(R=>W(Ie,{node:R,document:e,registry:i,context:s,viewport:n,mode:t,onNodeClick:l,onDiagnostic:f,onActionDispatch:p,onNodePropChange:u,instanceSuffix:d},`${R.id}${d}`)),g=(R,$="",S=s)=>W(Ie,{node:R,document:e,registry:i,context:S,viewport:n,mode:t,onNodeClick:l,onDiagnostic:f,onActionDispatch:p,onNodePropChange:u,instanceSuffix:`${d}${$}`},`${R.id}${d}${$}`),w;try{w=Mt({node:r,document:e,registry:i,context:s,viewport:n,mode:t,styles:a,props:c,resolvedProps:y,definition:m,domId:b,childrenElements:x,handleClick:v,onNodeClick:l,onDiagnostic:f,onActionDispatch:p,onNodePropChange:u,instanceSuffix:d,renderChildNode:g})}catch(R){t==="editor"?w=ce("div",{"data-kubuild-node":r.id,"data-kubuild-error":r.type,style:{padding:"12px 16px",margin:"4px 0",backgroundColor:"#fef2f2",border:"1px solid #ef4444",borderRadius:"6px",color:"#b91c1c",fontFamily:"system-ui, -apple-system, sans-serif",fontSize:"13px",lineHeight:"1.4"},children:[ce("div",{style:{fontWeight:600,marginBottom:"4px",display:"flex",alignItems:"center",gap:"6px"},children:[W(ro,{size:14,"aria-hidden":"true"}),ce("span",{children:["Component Render Error: <",r.type,">"]})]}),ce("div",{style:{fontSize:"11px",color:"#7f1d1d",wordBreak:"break-all"},children:["Node ID: ",W("code",{children:r.id})," \u2014 ",R instanceof Error?R.message:String(R)]})]}):w=W("div",{"data-kubuild-node":r.id,"data-kubuild-error":r.type,style:{display:"none"},"aria-hidden":"true"})}return W(be,{nodeId:r.id,componentType:r.type,mode:t,onDiagnostic:f,children:w})}var Ht=({document:r,registry:e=oo(),context:i,viewport:o="desktop",mode:n="runtime",className:t,showToastContainer:l=!0,onNodeClick:f,onDiagnostic:p,onActionDispatch:u,onNodePropChange:d})=>!r||!r.document?W("div",{className:t,children:"Empty Document"}):W(ze,{value:i,children:ce("div",{className:`kubuild-canvas-root ${t||""}`,children:[(()=>{let s=Ze(r);return s?W("style",{"data-kubuild-state-styles":!0,children:s}):null})(),(()=>{let s=me(r);return s?W("style",{"data-kubuild-animation-styles":!0,children:s}):null})(),W(Ie,{node:r.document,document:r,registry:e,context:i,viewport:o,mode:n,onNodeClick:f,onDiagnostic:p,onActionDispatch:u,onNodePropChange:d}),l&&W(ft,{})]})});import{useMemo as Fe}from"react";import{jsx as ee,jsxs as ve}from"react/jsx-runtime";var Bt=Object.freeze({desktop:{width:"100%",maxWidth:"1280px",minHeight:"600px",label:"Desktop (1280px)",isFluid:!0},tablet:{width:"768px",height:"1024px",minHeight:"600px",label:"Tablet (768 \xD7 1024)",isFluid:!1},mobile:{width:"375px",height:"667px",minHeight:"500px",label:"Mobile (375 \xD7 667)",isFluid:!1}}),io=Object.freeze({mobile:480,tablet:768,desktop:1024});function Ai(r,e){let i={...io,...e};return r<=i.mobile?"mobile":r<=i.tablet?"tablet":"desktop"}function Lt(r,e){let i=Bt[r]||Bt.desktop,o=e?.[r];return{...i,...o}}function so(r,e,i){let o=Lt(r,e),n=i??o.scale??1,t=f=>typeof f=="number"?`${f}px`:f,l={width:t(o.width),maxWidth:t(o.maxWidth),minWidth:t(o.minWidth),height:t(o.height),minHeight:t(o.minHeight),maxHeight:t(o.maxHeight),aspectRatio:o.aspectRatio,transition:"width 0.2s ease, max-width 0.2s ease, height 0.2s ease"};return n!==1&&(l.transform=`scale(${n})`,l.transformOrigin="top center"),l}var ao=({document:r,viewport:e="desktop",onViewportChange:i,viewportConfigs:o,breakpoints:n,registry:t,context:l,mode:f="runtime",showChrome:p=!1,chromeTitle:u,editorOverlay:d,scale:s,className:a,style:c,canvasClassName:m,canvasStyle:b,onNodeClick:y,onDiagnostic:h,onActionDispatch:v})=>{let x=Fe(()=>Lt(e,o),[e,o]),g=Fe(()=>so(e,o,s),[e,o,s]),w=Fe(()=>({...g,...b,position:"relative",boxSizing:"border-box"}),[g,b]);return ve("div",{"data-kubuild-preview-container":!0,"data-viewport":e,className:`kubuild-preview-viewport-adapter ${a||""}`,style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-start",width:"100%",height:"100%",boxSizing:"border-box",...c},children:[p&&ve("div",{"data-kubuild-preview-chrome":!0,style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",maxWidth:g.maxWidth||g.width,padding:"8px 12px",marginBottom:"8px",backgroundColor:"#1e293b",color:"#f8fafc",borderRadius:"8px",fontSize:"12px",fontFamily:"system-ui, -apple-system, sans-serif",boxSizing:"border-box"},children:[ve("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[ee("span",{style:{fontWeight:600},children:u||r.metadata?.title||"Preview"}),ee("span",{"data-testid":"viewport-badge",style:{fontSize:"10px",padding:"2px 6px",borderRadius:"4px",backgroundColor:"#334155",color:"#94a3b8",textTransform:"uppercase",fontWeight:700},children:e}),ee("span",{style:{fontSize:"11px",color:"#64748b"},children:x.label||`${x.width} \xD7 ${x.height||"auto"}`})]}),i&&ee("div",{"data-testid":"viewport-switcher",style:{display:"flex",gap:"4px",backgroundColor:"#0f172a",padding:"2px",borderRadius:"6px"},children:["desktop","tablet","mobile"].map(R=>{let $=e===R;return ee("button",{type:"button","data-testid":`viewport-btn-${R}`,onClick:()=>i(R),style:{padding:"4px 10px",fontSize:"11px",fontWeight:500,borderRadius:"4px",border:"none",cursor:"pointer",textTransform:"capitalize",backgroundColor:$?"#3b82f6":"transparent",color:$?"#ffffff":"#94a3b8",transition:"all 0.15s ease"},children:R},R)})})]}),ve("div",{"data-kubuild-preview-canvas":!0,"data-viewport":e,className:`kubuild-preview-canvas ${m||""}`,style:w,children:[ee(Ht,{document:r,registry:t,context:l,viewport:e,mode:f,onNodeClick:y,onDiagnostic:h,onActionDispatch:v}),d&&ee("div",{"data-kubuild-preview-overlay":!0,style:{position:"absolute",top:0,left:0,right:0,bottom:0,pointerEvents:"none",zIndex:10},children:d})]})]})},Di=ao;function A(r){return r==null?"":String(r).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function T(r){return A(r)}function lo(r){if(!r||typeof r!="string")return null;let e=r.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/i);return e?e[1]:null}function co(r){if(!r||typeof r!="string")return null;let e=r.match(/(?:vimeo\.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|))(\d+)/i);return e?e[3]:null}function q(r,e,i){let o=" ".repeat(e*(i.indentSize??2)),n=" ".repeat((e+1)*(i.indentSize??2)),t=r.props||{},l=r.children||[],p=i.includeNodeClasses!==!1?`kb-node-${r.id}`:"",u=(...s)=>s.filter(Boolean).join(" "),d=t.id?` id="${T(t.id)}"`:"";switch(r.type){case"page":{let s=i.rootTag||"main",a=u("kb-page",p),c=l.map(m=>q(m,e+1,i)).join(`
121
- `);return c?`${o}<${s} class="${a}"${d}>
122
- ${c}
123
- ${o}</${s}>`:`${o}<${s} class="${a}"${d}></${s}>`}case"section":{let s=t.ariaLabel?` aria-label="${T(t.ariaLabel)}"`:"",a=u("kb-section",p),c=l.map(m=>q(m,e+1,i)).join(`
124
- `);return c?`${o}<section class="${a}"${d}${s}>
125
- ${c}
126
- ${o}</section>`:`${o}<section class="${a}"${d}${s}></section>`}case"container":{let s=u("kb-container",p),a=l.map(c=>q(c,e+1,i)).join(`
127
- `);return a?`${o}<div class="${s}"${d}>
128
- ${a}
129
- ${o}</div>`:`${o}<div class="${s}"${d}></div>`}case"columns":{let s=u("kb-columns",p),a=l.map(c=>q(c,e+1,i)).join(`
130
- `);return a?`${o}<div class="${s}"${d}>
131
- ${a}
132
- ${o}</div>`:`${o}<div class="${s}"${d}></div>`}case"heading":{let s="h2";typeof t.level=="string"&&/^h[1-6]$/i.test(t.level)?s=t.level.toLowerCase():typeof t.level=="number"&&t.level>=1&&t.level<=6?s=`h${t.level}`:typeof t.tag=="string"&&/^h[1-6]$/i.test(t.tag)&&(s=t.tag.toLowerCase());let a=t.text??t.value??t.content??"Heading",c=u("kb-heading",p);return`${o}<${s} class="${c}"${d}>${A(a)}</${s}>`}case"paragraph":{let s=t.text??t.value??t.content??"",a=u("kb-paragraph",p);return`${o}<p class="${a}"${d}>${A(s)}</p>`}case"text":{let s=t.as||"p",a=t.text??t.value??t.content??"",c=u("kb-text",p);return`${o}<${s} class="${c}"${d}>${A(a)}</${s}>`}case"link":{let s=t.href?` href="${T(t.href)}"`:' href="#"',a=t.target?` target="${T(t.target)}"`:"",c=t.rel?` rel="${T(t.rel)}"`:a.includes("_blank")?' rel="noopener noreferrer"':"",m=t.text??t.label??t.value,b=u("kb-link",p);if(l.length>0){let y=l.map(h=>q(h,e+1,i)).join(`
133
- `);return`${o}<a class="${b}"${d}${s}${a}${c}>
120
+ ${n}</style>`}):""}var Nt=({id:r,style:e,onClick:i,dataKubuildNode:o,html:n,role:t})=>{let l=At(null),p=At(null),f=Yn(()=>Gn(n),[n]);return Xn(()=>{let u=l.current;if(u){if(typeof u.attachShadow=="function"){if(!p.current)if(u.shadowRoot)p.current=u.shadowRoot;else try{p.current=u.attachShadow({mode:"open"})}catch{p.current=u.shadowRoot}if(p.current){p.current.innerHTML=f;return}}u.innerHTML=f}},[f]),It("div",{ref:l,id:r,style:e,onClick:i,"data-kubuild-node":o,role:t,children:It("template",{shadowrootmode:"open",dangerouslySetInnerHTML:{__html:f}})})};import{useEffect as ue}from"react";import Ft,{useEffect as Jn}from"react";import{ActionPipelineExecutor as Zn}from"@kubuild/core";async function B(r){let{node:e,trigger:i,document:o,context:n,formContext:t,extraContext:l,onDiagnostic:p,onActionDispatch:f,executor:u}=r;if(!e.actions||!Array.isArray(e.actions)||e.actions.length===0)return{executed:!1,success:!0};let c=e.actions.filter(d=>d.trigger===i&&d.enabled!==!1);if(c.length===0)return{executed:!1,success:!0};let a=u||new Zn;Ce(a);let s={form:t?{...t.values}:{},variables:n?.variables?{...n.variables}:{},nodeId:e.id,document:o,toastManager:n?.toastManager,modalManager:n?.modalManager,...l||{}};for(let d of c){let g=await a.execute(d,{context:s});if(f&&d.steps.length>0&&f(d.steps[0].type,d.steps[0].payload,e.id),!g.success){let b=g.error instanceof Error?g.error.message:String(g.error||`Action pipeline "${d.id}" failed`),y={code:"ACTION_EXECUTION_ERROR",actionType:d.steps[0]?.type||i,nodeId:e.id,message:b,error:g.error};return p?.(y),n?.onDiagnostic?.(y),{executed:!0,success:!1,error:g.error}}}return{executed:!0,success:!0}}function Dt(r,e){if(!r.actions?.some(t=>t.trigger==="load"&&t.enabled!==!1))return;let o=Ft?.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE||Ft?.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;if(o?.H||o?.ReactCurrentDispatcher?.current)try{Jn(()=>{e.mode!=="editor"&&B({node:r,trigger:"load",document:e.document,context:e.context,formContext:e.formContext,onDiagnostic:e.onDiagnostic,onActionDispatch:e.onActionDispatch})},[r,e.document,e.context,e.formContext,e.onDiagnostic,e.onActionDispatch,e.mode])}catch{}}import{jsx as L,jsxs as we}from"react/jsx-runtime";var Mt=({id:r,name:e,action:i,method:o="POST",target:n,autoComplete:t,style:l,onClick:p,mode:f,dataKubuildNode:u,children:c})=>{let a=Z();return L("form",{id:r,name:e,action:i,method:o,target:n,autoComplete:t,style:l,onClick:p,onSubmit:g=>{if(f==="editor"){g.preventDefault();return}a&&a.handleFormSubmit(g)},onReset:()=>{a&&a.resetForm()},"data-kubuild-node":u,role:"form","aria-label":e,children:c})},Ot=({id:r,name:e,type:i="text",placeholder:o,defaultValue:n,required:t,disabled:l,readOnly:p,rules:f,validateOn:u,transform:c,style:a,onClick:s,actions:d,nodeId:g,document:b,renderContext:y,onDiagnostic:x,onActionDispatch:h,dataKubuildNode:v})=>{let m=Z();if(m&&e&&m.registerField({name:e,defaultValue:n,required:t,disabled:l,rules:f||[],validateOn:u,transform:c}),ue(()=>{if(!m||!e)return;let D=m.registerField({name:e,defaultValue:n,required:t,disabled:l,rules:f||[],validateOn:u,transform:c});return()=>{D()}},[m,e,n,t,l,f,u,c]),!m||!e)return L("input",{id:r,type:i,name:e,placeholder:o,defaultValue:n!==void 0?String(n):void 0,required:t,disabled:l,readOnly:p,style:a,onClick:s,"data-kubuild-node":v});let k=m.values[e],R=k!=null?String(k):n!=null?String(n):"",w=m.errors[e],S=!!m.touched[e],E=!!(w&&S);return L("input",{id:r,type:i,name:e,placeholder:o,value:R,onChange:D=>{let A=D.target.value;i==="number"&&(A=D.target.value===""?"":Number(D.target.value)),m.setFieldValue(e,A),d&&d.length>0&&B({node:{id:g||r||e,type:"input",actions:d},trigger:"change",document:b,context:y,formContext:m,extraContext:{fieldName:e,fieldValue:A},onDiagnostic:x,onActionDispatch:h})},onBlur:()=>{m.setFieldTouched(e,!0),d&&d.length>0&&B({node:{id:g||r||e,type:"input",actions:d},trigger:"blur",document:b,context:y,formContext:m,extraContext:{fieldName:e,fieldValue:m.values[e]},onDiagnostic:x,onActionDispatch:h})},onFocus:()=>{d&&d.length>0&&B({node:{id:g||r||e,type:"input",actions:d},trigger:"focus",document:b,context:y,formContext:m,extraContext:{fieldName:e,fieldValue:m.values[e]},onDiagnostic:x,onActionDispatch:h})},required:t,disabled:l,readOnly:p,style:a,onClick:s,"data-kubuild-node":v,"data-field":e,"data-invalid":E?"true":void 0,"aria-invalid":E?!0:void 0,"aria-errormessage":w?`${r}-error`:void 0})},Vt=({id:r,name:e,placeholder:i,defaultValue:o,rows:n=4,required:t,disabled:l,readOnly:p,rules:f,validateOn:u,transform:c,style:a,onClick:s,actions:d,nodeId:g,document:b,renderContext:y,onDiagnostic:x,onActionDispatch:h,dataKubuildNode:v})=>{let m=Z();if(m&&e&&m.registerField({name:e,defaultValue:o,required:t,disabled:l,rules:f||[],validateOn:u,transform:c}),ue(()=>{if(!m||!e)return;let D=m.registerField({name:e,defaultValue:o,required:t,disabled:l,rules:f||[],validateOn:u,transform:c});return()=>{D()}},[m,e,o,t,l,f,u,c]),!m||!e)return L("textarea",{id:r,name:e,placeholder:i,defaultValue:o!==void 0?String(o):void 0,rows:n,required:t,disabled:l,readOnly:p,style:a,onClick:s,"data-kubuild-node":v});let k=m.values[e],R=k!=null?String(k):o!=null?String(o):"",w=m.errors[e],S=!!m.touched[e],E=!!(w&&S);return L("textarea",{id:r,name:e,placeholder:i,rows:n,value:R,onChange:D=>{m.setFieldValue(e,D.target.value),d&&d.length>0&&B({node:{id:g||r||e,type:"textarea",actions:d},trigger:"change",document:b,context:y,formContext:m,extraContext:{fieldName:e,fieldValue:D.target.value},onDiagnostic:x,onActionDispatch:h})},onBlur:()=>{m.setFieldTouched(e,!0),d&&d.length>0&&B({node:{id:g||r||e,type:"textarea",actions:d},trigger:"blur",document:b,context:y,formContext:m,extraContext:{fieldName:e,fieldValue:m.values[e]},onDiagnostic:x,onActionDispatch:h})},onFocus:()=>{d&&d.length>0&&B({node:{id:g||r||e,type:"textarea",actions:d},trigger:"focus",document:b,context:y,formContext:m,extraContext:{fieldName:e,fieldValue:m.values[e]},onDiagnostic:x,onActionDispatch:h})},required:t,disabled:l,readOnly:p,style:a,onClick:s,"data-kubuild-node":v,"data-field":e,"data-invalid":E?"true":void 0,"aria-invalid":E?!0:void 0,"aria-errormessage":w?`${r}-error`:void 0})},Bt=({id:r,name:e,placeholder:i,defaultValue:o,required:n,disabled:t,rules:l,validateOn:p,optionsList:f,style:u,onClick:c,actions:a,nodeId:s,document:d,renderContext:g,onDiagnostic:b,onActionDispatch:y,dataKubuildNode:x})=>{let h=Z();if(h&&e&&h.registerField({name:e,defaultValue:o,required:n,disabled:t,rules:l||[],validateOn:p}),ue(()=>{if(!h||!e)return;let I=h.registerField({name:e,defaultValue:o,required:n,disabled:t,rules:l||[],validateOn:p});return()=>{I()}},[h,e,o,n,t,l,p]),!h||!e)return we("select",{id:r,name:e,defaultValue:o!==void 0?String(o):"",required:n,disabled:t,style:u,onClick:c,"data-kubuild-node":x,children:[i&&L("option",{value:"",disabled:!0,children:i}),f.map((I,z)=>L("option",{value:I.value,children:I.label},z))]});let v=h.values[e],m=v!=null?String(v):o!=null?String(o):"",k=h.errors[e],R=!!h.touched[e],w=!!(k&&R);return we("select",{id:r,name:e,value:m,onChange:I=>{h.setFieldValue(e,I.target.value),a&&a.length>0&&B({node:{id:s||r||e,type:"select",actions:a},trigger:"change",document:d,context:g,formContext:h,extraContext:{fieldName:e,fieldValue:I.target.value},onDiagnostic:b,onActionDispatch:y})},onBlur:()=>{h.setFieldTouched(e,!0),a&&a.length>0&&B({node:{id:s||r||e,type:"select",actions:a},trigger:"blur",document:d,context:g,formContext:h,extraContext:{fieldName:e,fieldValue:h.values[e]},onDiagnostic:b,onActionDispatch:y})},onFocus:()=>{a&&a.length>0&&B({node:{id:s||r||e,type:"select",actions:a},trigger:"focus",document:d,context:g,formContext:h,extraContext:{fieldName:e,fieldValue:h.values[e]},onDiagnostic:b,onActionDispatch:y})},required:n,disabled:t,style:u,onClick:c,"data-kubuild-node":x,"data-field":e,"data-invalid":w?"true":void 0,"aria-invalid":w?!0:void 0,"aria-errormessage":k?`${r}-error`:void 0,children:[i&&L("option",{value:"",disabled:!0,children:i}),f.map((I,z)=>L("option",{value:I.value,children:I.label},z))]})},Ht=({id:r,name:e,label:i="",defaultChecked:o=!1,required:n,disabled:t,rules:l,validateOn:p,style:f,onClick:u,actions:c,nodeId:a,document:s,renderContext:d,onDiagnostic:g,onActionDispatch:b,dataKubuildNode:y,isEditable:x,onNodePropChange:h})=>{let v=Z();v&&e&&v.registerField({name:e,defaultValue:o,required:n,disabled:t,rules:l||[],validateOn:p}),ue(()=>{if(!v||!e)return;let w=v.registerField({name:e,defaultValue:o,required:n,disabled:t,rules:l||[],validateOn:p});return()=>{w()}},[v,e,o,n,t,l,p]);let m=v&&e&&v.values[e]!==void 0?!!v.values[e]:o;return we("label",{id:r,style:f,onClick:u,"data-kubuild-node":y,children:[L("input",{type:"checkbox",name:e,checked:m,onChange:w=>{v&&e&&(v.setFieldValue(e,w.target.checked),c&&c.length>0&&B({node:{id:a||r||e,type:"checkbox",actions:c},trigger:"change",document:s,context:d,formContext:v,extraContext:{fieldName:e,fieldValue:w.target.checked},onDiagnostic:g,onActionDispatch:b}))},onBlur:()=>{v&&e&&(v.setFieldTouched(e,!0),c&&c.length>0&&B({node:{id:a||r||e,type:"checkbox",actions:c},trigger:"blur",document:s,context:d,formContext:v,extraContext:{fieldName:e,fieldValue:m},onDiagnostic:g,onActionDispatch:b}))},required:n,disabled:t,style:{cursor:t?"not-allowed":"pointer"},"data-field":e}),x?L(W,{as:"span",value:i,isEditable:x,nodeId:y||"",onChange:(w,S)=>h?.(y||"","label",w,S)}):L("span",{children:i})]})},_t=({id:r,name:e,label:i="",value:o="",defaultChecked:n=!1,required:t,disabled:l,rules:p,validateOn:f,style:u,onClick:c,actions:a,nodeId:s,document:d,renderContext:g,onDiagnostic:b,onActionDispatch:y,dataKubuildNode:x,isEditable:h,onNodePropChange:v})=>{let m=Z();m&&e&&m.registerField({name:e,defaultValue:n?o:void 0,required:t,disabled:l,rules:p||[],validateOn:f}),ue(()=>{if(!m||!e)return;let S=m.registerField({name:e,defaultValue:n?o:void 0,required:t,disabled:l,rules:p||[],validateOn:f});return()=>{S()}},[m,e,n,o,t,l,p,f]);let k=m&&e&&m.values[e]!==void 0?m.values[e]===o:n;return we("label",{id:r,style:u,onClick:c,"data-kubuild-node":x,children:[L("input",{type:"radio",name:e,value:o,checked:k,onChange:()=>{m&&e&&(m.setFieldValue(e,o),a&&a.length>0&&B({node:{id:s||r||e,type:"radio",actions:a},trigger:"change",document:d,context:g,formContext:m,extraContext:{fieldName:e,fieldValue:o},onDiagnostic:b,onActionDispatch:y}))},onBlur:()=>{m&&e&&(m.setFieldTouched(e,!0),a&&a.length>0&&B({node:{id:s||r||e,type:"radio",actions:a},trigger:"blur",document:d,context:g,formContext:m,extraContext:{fieldName:e,fieldValue:o},onDiagnostic:b,onActionDispatch:y}))},required:t,disabled:l,style:{cursor:l?"not-allowed":"pointer"},"data-field":e}),h?L(W,{as:"span",value:i,isEditable:h,nodeId:x||"",onChange:(S,E)=>v?.(x||"","label",S,E)}):L("span",{children:i})]})};async function Qn(r){let{event:e,buttonType:i,disabled:o,formRuntime:n,onClick:t,node:l,actions:p,document:f,renderContext:u,onDiagnostic:c,onActionDispatch:a,executeActions:s=B}=r;if(o)return;if(i==="submit"){if(n&&!await n.handleFormSubmit(e))return}else i==="reset"&&n?.resetForm();if(t){t(e);return}let d=l||(p?{id:"button",type:"button",actions:p}:void 0);d?.actions&&d.actions.length>0&&await s({node:d,trigger:"click",document:f,context:u,formContext:n,onDiagnostic:c,onActionDispatch:a})}var Lt=({id:r,buttonType:e,disabled:i,ariaLabel:o,style:n,onClick:t,actions:l,node:p,document:f,renderContext:u,onDiagnostic:c,onActionDispatch:a,dataKubuildNode:s,actionAttrs:d,children:g})=>{let b=Z(),y=b?.isSubmitting===!0,x=i||e==="submit"&&y;return L("button",{id:r,type:e,disabled:x,"aria-disabled":x?!0:void 0,"aria-label":o,"aria-busy":e==="submit"&&y?!0:void 0,tabIndex:x?-1:0,style:n,onClick:x?void 0:async v=>{await Qn({event:v,buttonType:e,disabled:x,formRuntime:b,onClick:t,node:p||(l?{id:s||r||"button",type:"button",actions:l}:void 0),document:f,renderContext:u,onDiagnostic:c,onActionDispatch:a})},"data-kubuild-node":s,...d,children:g})};function qt(r){return r?r.replace(/[-_](\w)/g,(e,i)=>i.toUpperCase()).replace(/^\w/,e=>e.toUpperCase()):""}function jt(r){if(!r||typeof r!="string")return null;let e=r.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/i);return e?e[1]:null}function zt(r){if(!r||typeof r!="string")return null;let e=r.match(/(?:vimeo\.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|))(\d+)/i);return e?e[3]:null}function Ut(r){if(r==="16:9")return"16 / 9";if(r==="4:3")return"4 / 3";if(r==="1:1")return"1 / 1";if(r==="9:16")return"9 / 16";if(typeof r=="string"&&r!=="auto")return r.replace(":"," / ")}import Be from"react";import{ARTBOARD_REFERENCE_NODE_TYPE as eo}from"@kubuild/schema";import{jsx as K,jsxs as He}from"react/jsx-runtime";function Wt(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,childrenElements:l,handleClick:p,context:f,mode:u,isModalOpen:c}=r,a=n.modalId||t.modalId||e.id,s=String(a).trim(),d=f?.modalManager||G,g=u==="editor"&&f?.artboardSurface==="component";switch(e.type){case"modal":{if(!c&&u==="runtime")return K(Be.Fragment,{});let b=n.backdrop!==!1&&t.backdrop!==!1,y=n.closeOnBackdrop!==!1&&t.closeOnBackdrop!==!1,x=n.showCloseButton!==!1&&t.showCloseButton!==!1,h=n.title??t.title,v=h!==void 0?String(h):void 0,m=n.size||t.size||"md",k=m==="sm"?"400px":m==="lg"?"768px":m==="fullscreen"?"100%":"560px",R=m==="fullscreen"?"100%":"auto";return K("div",{id:`${i}-overlay`,"data-kubuild-overlay":s,"data-kubuild-isolated":g?"true":void 0,style:g?{position:"relative",display:"flex",alignItems:"flex-start",justifyContent:"center",padding:m==="fullscreen"?"0":"16px"}:{position:u==="editor"?"absolute":"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:b?"rgba(15, 23, 42, 0.65)":"transparent",backdropFilter:b?"blur(4px)":"none",display:"flex",alignItems:m==="fullscreen"?"stretch":"center",justifyContent:"center",zIndex:9999,padding:m==="fullscreen"?"0":"16px"},onClick:w=>{w.target===w.currentTarget&&y&&u==="runtime"&&d.closeModal(s)},children:He("div",{id:i,style:{...o,position:"relative",boxSizing:"border-box",maxWidth:k,height:R,width:"100%"},onClick:p,"data-kubuild-node":e.id,role:"dialog","aria-modal":"true","aria-label":typeof v=="string"?v:"Modal Dialog",children:[x&&K("button",{type:"button","aria-label":"Close modal",style:{position:"absolute",top:"14px",right:"14px",background:"transparent",border:"none",fontSize:"18px",cursor:"pointer",color:"#64748b",padding:"4px 8px",lineHeight:1},onClick:w=>{w.stopPropagation(),d.closeModal(s)},children:"\u2715"}),v&&K("div",{style:{fontWeight:600,fontSize:"18px",marginBottom:"16px",color:"#0f172a"},children:String(v)}),l]})})}case"drawer":{if(!c&&u==="runtime")return K(Be.Fragment,{});let b=n.placement||t.placement||"right",y=n.backdrop!==!1&&t.backdrop!==!1,x=n.closeOnBackdrop!==!1&&t.closeOnBackdrop!==!1,h=n.showCloseButton!==!1&&t.showCloseButton!==!1,v=n.title??t.title,m=v!==void 0?String(v):void 0,k=b==="top"||b==="bottom";return K("div",{id:`${i}-overlay`,"data-kubuild-overlay":s,"data-kubuild-isolated":g?"true":void 0,style:g?{position:"relative",display:"flex",justifyContent:b==="left"?"flex-start":b==="right"?"flex-end":"center",alignItems:"flex-start",padding:"16px"}:{position:u==="editor"?"absolute":"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:y?"rgba(15, 23, 42, 0.5)":"transparent",backdropFilter:y?"blur(2px)":"none",display:"flex",justifyContent:b==="left"?"flex-start":b==="right"?"flex-end":"center",alignItems:b==="top"?"flex-start":b==="bottom"?"flex-end":"stretch",zIndex:9999},onClick:R=>{R.target===R.currentTarget&&x&&u==="runtime"&&d.closeModal(s)},children:He("div",{id:i,style:{...o,position:"relative",boxSizing:"border-box",height:g||k?"auto":"100%",...g?{minHeight:"240px"}:{},width:k?"100%":o.width||"320px",maxHeight:g?"none":k?"80vh":"100%",overflowY:"auto"},onClick:p,"data-kubuild-node":e.id,role:"region","aria-label":typeof m=="string"?m:"Drawer",children:[h&&K("button",{type:"button","aria-label":"Close drawer",style:{position:"absolute",top:"14px",right:"14px",background:"transparent",border:"none",fontSize:"18px",cursor:"pointer",color:"#64748b",padding:"4px 8px",lineHeight:1},onClick:R=>{R.stopPropagation(),d.closeModal(s)},children:"\u2715"}),m&&K("div",{style:{fontWeight:600,fontSize:"18px",marginBottom:"16px",color:"#0f172a"},children:String(m)}),l]})})}case"collapsible":return K("div",{id:i,style:{...o,display:(u==="editor"?!0:!!c)?o.display||"block":"none"},onClick:p,"data-kubuild-node":e.id,"data-kubuild-collapsible":s,children:l});case eo:{if(u==="runtime")return K(Be.Fragment,{});let b=typeof t.artboardId=="string"?t.artboardId:void 0,y=(typeof t.label=="string"&&t.label.trim().length>0?t.label:b)||"artboard";return He("div",{id:i,style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"6px 10px",border:"1px dashed #94a3b8",borderRadius:"6px",backgroundColor:"#f8fafc",color:"#475569",fontSize:"12px",fontFamily:"ui-sans-serif, system-ui, sans-serif",cursor:"pointer",...o},onClick:p,"data-kubuild-node":e.id,"data-kubuild-artboard-reference":b,title:`Opens artboard "${y}" \u2014 edit it on its own canvas surface`,children:[K("span",{"aria-hidden":"true",children:"\u29C9"}),K("span",{children:`Opens: ${y}`})]})}default:return null}}import{jsx as C,jsxs as Y}from"react/jsx-runtime";function lo(r){let{node:e,document:i,definition:o,resolvedProps:n,styles:t,context:l,childrenElements:p,handleClick:f}=r;if(o?.renderer&&typeof o.renderer=="function"){let u=o.renderer;return typeof u=="function"&&!u.prototype?.isReactComponent?u({node:e,document:i,props:n,styles:t,context:l,children:p,onClick:f}):C(u,{node:e,document:i,props:n,styles:t,context:l,onClick:f,children:p})}return null}function co(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,handleClick:l,childrenElements:p}=r;switch(e.type){case"page":return C("div",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,children:p});case"section":{let f=typeof n.ariaLabel=="string"?n.ariaLabel:typeof t.ariaLabel=="string"?t.ariaLabel:void 0;return C("section",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,"aria-label":f,children:p})}case"container":return C("div",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,children:p});case"columns":return C("div",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,children:p});case"flex":case"grid":{let f=typeof n.ariaLabel=="string"?n.ariaLabel:typeof t.ariaLabel=="string"?t.ariaLabel:void 0;return C("div",{id:i,style:o,onClick:l,"data-kubuild-node":e.id,"aria-label":f,children:p})}default:return null}}function uo(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,mode:l,handleClick:p,onNodePropChange:f,childrenElements:u}=r;switch(e.type){case"heading":{let c=typeof n.level=="number"?n.level:1,a=`h${Math.min(Math.max(c,1),6)}`||"h1",s=String(n.text??n.content??t.text??t.content??""),d=l==="editor"&&!O(t.text)&&!O(t.content);return C(W,{as:a,id:i,style:o,value:s,isEditable:d,nodeId:e.id,onClick:p,onChange:(g,b)=>f?.(e.id,"text",g,b)})}case"text":{let c=String(n.text??n.content??t.text??t.content??""),a=typeof n.as=="string"?n.as:typeof t.as=="string"?t.as:typeof n.tag=="string"?n.tag:typeof t.tag=="string"?t.tag:(t.content!==void 0||n.content!==void 0)&&t.text===void 0&&n.text===void 0?"p":"span",s=l==="editor"&&!O(t.text)&&!O(t.content);return C(W,{as:a,id:i,style:o,value:c,isEditable:s,nodeId:e.id,onClick:p,onChange:(d,g)=>f?.(e.id,"text",d,g)})}case"paragraph":{let c=String(n.text??n.content??t.text??t.content??""),a=l==="editor"&&!O(t.text)&&!O(t.content);return C(W,{as:"p",id:i,style:o,value:c,isEditable:a,nodeId:e.id,onClick:p,onChange:(s,d)=>f?.(e.id,"text",s,d)})}case"link":{let c=String(n.text??n.label??n.content??t.text??t.label??t.content??""),a=typeof n.href=="string"?n.href:"#",s=typeof n.target=="string"?n.target:void 0,d=l==="editor"&&!O(t.text)&&!O(t.label)&&!O(t.content),g=typeof n.rel=="string"?n.rel:s==="_blank"?"noopener noreferrer":void 0,b=l==="editor"?void 0:ne(a,"#"),y=x=>{l==="editor"&&x.preventDefault(),p(x)};return d?C(W,{as:"a",id:i,style:o,value:c,isEditable:d,nodeId:e.id,onClick:y,onChange:(x,h)=>{let v="text"in t?"text":"label";f?.(e.id,v,x,h)},href:b,target:s,rel:g}):C("a",{id:i,style:o,href:b,target:s,rel:g,onClick:y,"data-kubuild-node":e.id,children:c})}case"blockquote":{let c=typeof n.quote=="string"?n.quote:typeof n.text=="string"?n.text:typeof t.quote=="string"?t.quote:typeof t.text=="string"?t.text:void 0,a=typeof n.cite=="string"?n.cite:typeof t.cite=="string"?t.cite:void 0,s=l==="editor"&&!O(t.quote)&&!O(t.text),d={borderLeft:"4px solid #cbd5e1",paddingLeft:"1rem",margin:"1rem 0",fontStyle:"italic",color:"#475569",...o};return Y("blockquote",{id:i,style:d,onClick:p,"data-kubuild-node":e.id,cite:a,children:[c!==void 0?s?C(W,{as:"p",value:c,isEditable:s,nodeId:e.id,onChange:(g,b)=>{let y="quote"in t?"quote":"text";f?.(e.id,y,g,b)}}):C("p",{children:c}):null,u,a&&Y("cite",{style:{display:"block",fontStyle:"normal",fontSize:"0.875rem",marginTop:"0.5rem",color:"#64748b"},children:["\u2014 ",a]})]})}case"badge":{let c=String(n.text??n.label??t.text??t.label??""),a=typeof n.variant=="string"?n.variant:typeof t.variant=="string"?t.variant:"default",s=l==="editor"&&!O(t.text)&&!O(t.label);return C("span",{id:i,style:o,onClick:p,"data-kubuild-node":e.id,"data-variant":a,"data-badge-variant":a,children:s?C(W,{as:"span",value:c,isEditable:s,nodeId:e.id,onChange:(d,g)=>{let b="text"in t?"text":"label";f?.(e.id,b,d,g)}}):c})}case"code-block":{let c=String(n.code??t.code??""),a=typeof n.language=="string"?n.language:typeof t.language=="string"?t.language:"plaintext";return l==="editor"?C("pre",{id:i,style:o,onClick:p,"data-kubuild-node":e.id,"data-language":a,children:C("code",{className:`language-${a}`,contentEditable:!0,suppressContentEditableWarning:!0,onBlur:s=>f?.(e.id,"code",s.currentTarget.textContent??"",!0),children:c})}):C("pre",{id:i,style:o,onClick:p,"data-kubuild-node":e.id,"data-language":a,children:C("code",{className:`language-${a}`,children:c})})}default:return null}}function po(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,mode:l,handleClick:p,onNodePropChange:f,childrenElements:u}=r;switch(e.type){case"list":{let a=(n.tag||t.tag)==="ol"||n.ordered===!0||t.ordered===!0?"ol":"ul",s=typeof n.listStyleType=="string"?n.listStyleType:typeof n.listStyle=="string"?n.listStyle:typeof t.listStyleType=="string"?t.listStyleType:typeof t.listStyle=="string"?t.listStyle:void 0,d=s==="custom-icon"||s==="none"?"none":s,g={...o,...d?{listStyleType:d}:{}};return C(a,{id:i,style:g,onClick:p,"data-kubuild-node":e.id,"data-list-style":s,children:u})}case"list-item":{let c=n.text!==void 0?String(n.text):t.text!==void 0?String(t.text):void 0,a=l==="editor"&&!O(t.text)&&c!==void 0;return Y("li",{id:i,style:o,onClick:p,"data-kubuild-node":e.id,children:[c!==void 0&&(a?C(W,{as:"span",value:c,isEditable:a,nodeId:e.id,onChange:(s,d)=>f?.(e.id,"text",s,d)}):c),u]})}default:return null}}function fo(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,mode:l,handleClick:p,onNodePropChange:f,childrenElements:u}=r;switch(e.type){case"table":{let c=typeof n.cellPadding=="number"?n.cellPadding:void 0,a=typeof n.cellSpacing=="number"?n.cellSpacing:void 0,s=typeof n.border=="number"?n.border:void 0,d=n.striped===!0||t.striped===!0,g=n.bordered===!0||t.bordered===!0,b=n.hover===!0||t.hover===!0,y=n.compact===!0||t.compact===!0;return C("table",{id:i,style:o,cellPadding:c,cellSpacing:a,border:s,onClick:p,"data-kubuild-node":e.id,"data-striped":d?"true":void 0,"data-bordered":g?"true":void 0,"data-hover":b?"true":void 0,"data-compact":y?"true":void 0,children:C("tbody",{children:u})})}case"table-row":return C("tr",{id:i,style:o,onClick:p,"data-kubuild-node":e.id,children:u});case"table-cell":{let a=n.tag==="th"||t.tag==="th"||n.isHeader===!0||t.isHeader===!0||n.cellType==="header"||t.cellType==="header"||n.type==="th"||t.type==="th"?"th":"td",s=typeof n.colSpan=="number"?n.colSpan:typeof t.colSpan=="number"?t.colSpan:void 0,d=typeof n.rowSpan=="number"?n.rowSpan:typeof t.rowSpan=="number"?t.rowSpan:void 0,g=n.text!==void 0?String(n.text):t.text!==void 0?String(t.text):void 0,b=l==="editor"&&!O(t.text)&&g!==void 0;return Y(a,{id:i,colSpan:s,rowSpan:d,style:o,onClick:p,"data-kubuild-node":e.id,children:[g!==void 0&&(b?C(W,{as:"span",value:g,isEditable:b,nodeId:e.id,onChange:(y,x)=>f?.(e.id,"text",y,x)}):g),u]})}default:return null}}function go(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,context:l,mode:p,handleClick:f}=r;switch(e.type){case"image":{let u=n.src!==void 0?n.src:t.src!==void 0?t.src:t.asset,c;no(u)?c=Te(l?.assetProvider,u.assetId)||u.fallbackUrl:typeof u=="string"&&(c=Te(l?.assetProvider,u)||u);let a=typeof n.alt=="string"?n.alt:typeof t.alt=="string"?t.alt:"",s=typeof n.fit=="string"?n.fit:void 0,d=n.loading==="eager"?"eager":"lazy",g=typeof n.width=="number"?n.width:void 0,b=typeof n.height=="number"?n.height:void 0,y=c?ne(c,""):void 0,x=o?.objectFit,h={...o,...s&&x===void 0?{objectFit:s}:{}};return C("img",{id:i,src:y,alt:a,role:a===""?"presentation":void 0,loading:d,width:g,height:b,style:h,onClick:f,"data-kubuild-node":e.id})}case"video":{let u=n.src??n.url??t.src??t.url,c=typeof u=="string"?u:void 0,a=typeof n.poster=="string"?n.poster:void 0,s=n.controls!==!1,d=n.autoplay===!0,g=n.loop===!0,b=n.muted===!0,y=n.playsInline!==!1,x=n.aspectRatio,h={position:"relative",width:o.width||"100%",...x?{aspectRatio:Ut(x)}:{},...o},v=c?jt(c):null,m=c?zt(c):null;if(v){let w=`https://www.youtube.com/embed/${v}?autoplay=${d?1:0}&loop=${g?1:0}&mute=${b?1:0}&controls=${s?1:0}`,S=ne(w,"");return C("div",{id:i,"data-video-provider":"youtube",style:h,onClick:f,"data-kubuild-node":e.id,children:C("iframe",{src:S,title:"YouTube video player",style:{width:"100%",height:"100%",border:0},allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0})})}if(m){let w=`https://player.vimeo.com/video/${m}?autoplay=${d?1:0}&loop=${g?1:0}&muted=${b?1:0}`,S=ne(w,"");return C("div",{id:i,"data-video-provider":"vimeo",style:h,onClick:f,"data-kubuild-node":e.id,children:C("iframe",{src:S,title:"Vimeo video player",style:{width:"100%",height:"100%",border:0},allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:!0})})}let k=c?ne(c,""):void 0,R=a?ne(a,""):void 0;return C("video",{id:i,src:k,poster:R,controls:s,autoPlay:d,loop:g,muted:b,playsInline:y,style:h,onClick:f,"data-kubuild-node":e.id})}case"icon":{let u=typeof n.name=="string"?n.name:"Square",c=typeof n.size=="number"?n.size:24,a=typeof n.color=="string"?n.color:"currentColor",s=typeof n.strokeWidth=="number"?n.strokeWidth:2,d=qt(u),g=Kt[d]||Kt[u]||oo;return C("span",{id:i,"data-icon-name":u,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",...o},onClick:f,"data-kubuild-node":e.id,children:C(g,{size:c,color:a,strokeWidth:s})})}case"html-embed":{let u=typeof n.html=="string"?n.html:"",a=n.sanitize!==!1?so(u):u;return!a.trim()&&p==="editor"?C("div",{id:i,style:{...o,minHeight:"60px",border:"1px dashed #94a3b8",borderRadius:"4px",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#f8fafc",color:"#64748b",fontSize:"0.875rem"},onClick:f,"data-kubuild-node":e.id,children:C("span",{children:"</> HTML Embed \u2014 Click to configure HTML code in Inspector Panel"})}):C(Nt,{id:i,style:o,html:a,onClick:f,dataKubuildNode:e.id})}default:return null}}function mo(r){let{node:e,domId:i,styles:o,resolvedProps:n,props:t,context:l,mode:p,document:f,onDiagnostic:u,onActionDispatch:c,handleClick:a,onNodePropChange:s,childrenElements:d}=r;switch(e.type){case"button":{let g=n.label??n.text??n.content??t.label??t.text??t.content??"Button",b=n.activeLabel??t.activeLabel,y=String(r.isModalOpen&&b?b:g),x=typeof n.href=="string"?n.href:typeof t.href=="string"?t.href:void 0,h=typeof n.target=="string"?n.target:typeof t.target=="string"?t.target:void 0,v=n.buttonType??n.type??t.buttonType??t.type,m=typeof v=="string"&&["submit","reset","button"].includes(v)?v:"button",k=n.disabled===!0||t.disabled===!0,R=typeof n.ariaLabel=="string"?n.ariaLabel:void 0,w=p==="editor"&&t.isEditable!==!1&&!O(t.label)&&!O(t.text),S=typeof n.rel=="string"?n.rel:typeof t.rel=="string"?t.rel:h==="_blank"?"noopener noreferrer":void 0,E={};if(t.action&&!k){let F=typeof t.action=="object"?t.action.type:t.action;if(E["data-kubuild-action"]=F,l?.actionRegistry){let I=nt(l.actionRegistry,F);E["data-kubuild-action-resolved"]=I?"true":"false"}}if(x&&!k){let F=p==="editor"?void 0:ne(x,"#");return C("a",{id:i,href:F,target:h,rel:S,tabIndex:0,style:o,onClick:a,"data-kubuild-node":e.id,"aria-label":R,...E,children:y})}return w?C(W,{as:"button",id:i,type:p==="editor"?"button":m,disabled:k,"aria-disabled":k?!0:void 0,"aria-label":R,tabIndex:k?-1:0,style:o,value:y,isEditable:w,nodeId:e.id,onClick:k?void 0:a,onChange:(F,I)=>s?.(e.id,"label",F,I),...E}):C(Lt,{id:i,buttonType:p==="editor"?"button":m,disabled:k,ariaLabel:R,style:o,onClick:k?void 0:a,actions:e.actions,node:e,document:f,renderContext:l,onDiagnostic:u,onActionDispatch:c,dataKubuildNode:e.id,actionAttrs:E,children:y})}case"form":{let g=typeof n.action=="string"?n.action:void 0,b=typeof n.method=="string"?n.method:"POST",y=typeof n.target=="string"?n.target:void 0,x=typeof n.autoComplete=="string"?n.autoComplete:void 0,h=typeof n.name=="string"?n.name:void 0,v=e.formConfig,m={formId:v?.formId||t.formId||h||e.id,resetOnSubmit:n.resetOnSubmit===!0||(v?.resetOnSubmit??!1),scrollToFirstError:n.scrollToFirstError!==!1&&(v?.scrollToFirstError??!0),validateOn:n.validateOn||v?.validateOn||"blur",initialValues:n.initialValues||v?.initialValues};return C(Et,{formId:m.formId,formConfig:m,initialValues:m.initialValues,actions:e.actions,nodeId:e.id,document:f,onDiagnostic:u,children:C(Mt,{id:i,name:h,action:g&&p!=="editor"?ne(g,""):void 0,method:b,target:y,autoComplete:x,style:o,onClick:a,mode:p,dataKubuildNode:e.id,children:d})})}case"input":{let g=typeof n.name=="string"?n.name:void 0,b=typeof n.type=="string"?n.type:"text",y=typeof n.placeholder=="string"?n.placeholder:void 0,x=n.defaultValue!==void 0?n.defaultValue:void 0,h=n.required===!0,v=n.disabled===!0,m=n.readOnly===!0,k=e.formConfig?.rules||n.rules||t.rules||[],R=n.validateOn||t.validateOn,w=n.transform||t.transform;return C(Ot,{id:i,name:g,type:b,placeholder:y,defaultValue:x,required:h,disabled:v,readOnly:m,rules:k,validateOn:R,transform:w,style:o,onClick:a,actions:e.actions,nodeId:e.id,document:f,renderContext:l,onDiagnostic:u,onActionDispatch:c,dataKubuildNode:e.id})}case"textarea":{let g=typeof n.name=="string"?n.name:void 0,b=typeof n.placeholder=="string"?n.placeholder:void 0,y=n.defaultValue!==void 0?n.defaultValue:void 0,x=typeof n.rows=="number"?n.rows:4,h=n.required===!0,v=n.disabled===!0,m=n.readOnly===!0,k=e.formConfig?.rules||n.rules||t.rules||[],R=n.validateOn||t.validateOn,w=n.transform||t.transform;return C(Vt,{id:i,name:g,placeholder:b,defaultValue:y,rows:x,required:h,disabled:v,readOnly:m,rules:k,validateOn:R,transform:w,style:o,onClick:a,actions:e.actions,nodeId:e.id,document:f,renderContext:l,onDiagnostic:u,onActionDispatch:c,dataKubuildNode:e.id})}case"select":{let g=typeof n.name=="string"?n.name:void 0,b=typeof n.placeholder=="string"?n.placeholder:void 0,y=n.defaultValue!==void 0?n.defaultValue:void 0,x=n.required===!0,h=n.disabled===!0,v=e.formConfig?.rules||n.rules||t.rules||[],m=n.validateOn||t.validateOn,k=[],R=n.options??t.options;if(Array.isArray(R))k=R.map(w=>{if(typeof w=="object"&&w!==null){let S=w;return{label:String(S.label??S.value??""),value:String(S.value??S.label??"")}}return{label:String(w),value:String(w)}});else if(typeof R=="string")try{let w=JSON.parse(R);Array.isArray(w)&&(k=w.map(S=>{if(typeof S=="object"&&S!==null){let E=S;return{label:String(E.label??E.value??""),value:String(E.value??E.label??"")}}return{label:String(S),value:String(S)}}))}catch{}return C(Bt,{id:i,name:g,placeholder:b,defaultValue:y,required:x,disabled:h,rules:v,validateOn:m,optionsList:k,style:o,onClick:a,actions:e.actions,nodeId:e.id,document:f,renderContext:l,onDiagnostic:u,onActionDispatch:c,dataKubuildNode:e.id})}case"checkbox":{let g=typeof n.name=="string"?n.name:void 0,b=String(n.label??"Checkbox"),y=n.value!==void 0?String(n.value):"yes",x=n.defaultChecked===!0,h=n.required===!0,v=n.disabled===!0,m=e.formConfig?.rules||n.rules||t.rules||[],k=n.validateOn||t.validateOn,R=p==="editor"&&!O(t.label);return C(Ht,{id:i,name:g,label:b,value:y,defaultChecked:x,required:h,disabled:v,rules:m,validateOn:k,style:o,onClick:a,actions:e.actions,nodeId:e.id,document:f,renderContext:l,onDiagnostic:u,onActionDispatch:c,dataKubuildNode:e.id,isEditable:R,onNodePropChange:s})}case"radio":{let g=typeof n.name=="string"?n.name:void 0,b=String(n.label??"Radio"),y=n.value!==void 0?String(n.value):"option",x=n.defaultChecked===!0,h=n.required===!0,v=n.disabled===!0,m=n.rules||t.rules||[],k=n.validateOn||t.validateOn,R=p==="editor"&&!O(t.label);return C(_t,{id:i,name:g,label:b,value:y,defaultChecked:x,required:h,disabled:v,rules:m,validateOn:k,style:o,onClick:a,actions:e.actions,nodeId:e.id,document:f,renderContext:l,onDiagnostic:u,onActionDispatch:c,dataKubuildNode:e.id,isEditable:R,onNodePropChange:s})}default:return null}}function bo(r){let{node:e,domId:i,styles:o,props:n,context:t,mode:l,handleClick:p,onDiagnostic:f,renderChildNode:u}=r;if(e.type!=="collection")return null;let c=typeof n.sourceKey=="string"?n.sourceKey:void 0,a=typeof n.itemAlias=="string"&&n.itemAlias.length>0?n.itemAlias:"item",s=`${a}Index`,d=c?ao({key:c},t).value:void 0;if(!Array.isArray(d)){let b={code:"INVALID_COLLECTION_SOURCE",nodeId:e.id,propName:"sourceKey",message:`Collection node "${e.id}" expected an array at variable path "${c??"(missing sourceKey)"}" but found ${d===void 0?"nothing":typeof d}.`};return f?.(b),t?.onDiagnostic?.(b),l==="editor"?Y("div",{id:i,"data-kubuild-node":e.id,"data-kubuild-collection-invalid":e.type,style:{...o,border:"2px dashed #f59e0b",backgroundColor:"#fffbeb",padding:"12px",color:"#b45309",fontSize:"0.875rem",borderRadius:"4px"},onClick:p,children:[Y("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px"},children:[C(io,{size:16}),C("strong",{children:"Collection: expected an array"})]}),Y("div",{children:["Source path ",C("code",{children:c??"(none)"})," did not resolve to an array. Found"," ",C("code",{children:d===void 0?"nothing":typeof d}),"."]})]}):C("div",{id:i,"data-kubuild-node":e.id,style:{display:"contents"},"data-kubuild-empty-collection":"invalid-source"})}let g=e.children||[];return g.length===0||d.length===0?C("div",{id:i,style:o,onClick:p,"data-kubuild-node":e.id,"data-kubuild-collection-empty":d.length===0?"true":void 0,children:d.length===0&&l==="editor"&&Y("div",{style:{padding:"12px",border:"1px dashed #cbd5e1",borderRadius:"4px",color:"#94a3b8",fontSize:"0.875rem",textAlign:"center"},children:["Empty Collection (",C("code",{children:c})," has 0 items)"]})}):C("div",{id:i,style:o,onClick:p,"data-kubuild-node":e.id,children:d.map((b,y)=>{let x={...t,variables:{...t.variables,[a]:b,[s]:y}},h=`__iter_${y}`;return C(to.Fragment,{children:g.map(v=>u(v,h,x))},`collection-item-${y}`)})})}function yo(r){let{node:e,domId:i,styles:o,handleClick:n,mode:t,childrenElements:l}=r;return t==="editor"?Y("div",{id:i,style:{...o,border:"2px dashed #e2e8f0",padding:"16px",backgroundColor:"#f8fafc"},onClick:n,"data-kubuild-node":e.id,"data-kubuild-unknown":e.type,children:[Y("div",{style:{display:"flex",alignItems:"center",gap:"8px",color:"#64748b"},children:[C(ro,{size:16}),Y("span",{children:["Unknown Component: ",e.type]}),Y("span",{style:{fontSize:"12px",color:"#94a3b8"},children:["(",e.id,")"]})]}),l]}):C("div",{id:i,style:o,onClick:n,"data-kubuild-node":e.id,"data-kubuild-unknown":e.type,children:l})}function Yt(r){let e=lo(r);if(e)return e;let i=co(r);if(i)return i;let o=uo(r);if(o)return o;let n=po(r);if(n)return n;let t=fo(r);if(t)return t;let l=go(r);if(l)return l;let p=mo(r);if(p)return p;let f=bo(r);if(f)return f;let u=Wt(r);return u||yo(r)}import{jsx as X,jsxs as pe}from"react/jsx-runtime";function ko(r,e){if(!r)return!1;try{let i=ho,o=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE||i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;if(!!(o&&(o.H||o.ReactCurrentDispatcher?.current))){let{isOpen:t}=gt(r,e);return t}}catch{}return e.isModalOpen(r)}function fe({node:r,document:e,registry:i,context:o,viewport:n="desktop",mode:t="runtime",onNodeClick:l,onDiagnostic:p,onActionDispatch:f,onNodePropChange:u,instanceSuffix:c=""}){let a=o||oe,s=it(r.styles,n),d=r.props||{},g=i.get(r.type),b=c?`${r.id}${c}`:r.id,{props:y,diagnostics:x}=dt(r,g,a);x.forEach(A=>{p?.(A),a?.onDiagnostic?.(A)}),Dt(r,{document:e,context:a,onDiagnostic:p,onActionDispatch:f,mode:t});let h=async A=>{A.stopPropagation(),l&&l(r.id,A),r.actions&&r.actions.length>0&&!d.disabled&&await B({node:r,trigger:"click",document:e,context:a,onDiagnostic:p,onActionDispatch:f}),d.action&&!d.disabled&&(ot({action:d.action,nodeId:r.id,document:e,context:a,onDiagnostic:p}),f&&xo(d.action)&&f(d.action.type,tt(a,d.action.payload),r.id))},v=r.children?.map(A=>X(fe,{node:A,document:e,registry:i,context:a,viewport:n,mode:t,onNodeClick:l,onDiagnostic:p,onActionDispatch:f,onNodePropChange:u,instanceSuffix:c},`${A.id}${c}`)),m=(A,ae="",be=a)=>X(fe,{node:A,document:e,registry:i,context:be,viewport:n,mode:t,onNodeClick:l,onDiagnostic:p,onActionDispatch:f,onNodePropChange:u,instanceSuffix:`${c}${ae}`},`${A.id}${c}${ae}`),k=d.modalId||d.modalNodeId||d.targetModalId,R=a?.modalManager||G,w=k?R.hasState(k):!1,S=ko(k,R),E=w?S:!!d.defaultOpen,F={...s},I=r.type==="modal"||r.type==="drawer"||r.type==="collapsible";(d.modalId||d.modalNodeId)&&r.type!=="button"&&r.type!=="link"&&!I&&!E&&(F.display="none");let D;try{D=Yt({node:r,document:e,registry:i,context:a,viewport:n,mode:t,styles:F,props:d,resolvedProps:y,definition:g,domId:b,childrenElements:v,handleClick:h,onNodeClick:l,onDiagnostic:p,onActionDispatch:f,onNodePropChange:u,instanceSuffix:c,isModalOpen:E,renderChildNode:m})}catch(A){t==="editor"?D=pe("div",{"data-kubuild-node":r.id,"data-kubuild-error":r.type,style:{padding:"12px 16px",margin:"4px 0",backgroundColor:"#fef2f2",border:"1px solid #ef4444",borderRadius:"6px",color:"#b91c1c",fontFamily:"system-ui, -apple-system, sans-serif",fontSize:"13px",lineHeight:"1.4"},children:[pe("div",{style:{fontWeight:600,marginBottom:"4px",display:"flex",alignItems:"center",gap:"6px"},children:[X(Ro,{size:14,"aria-hidden":"true"}),pe("span",{children:["Component Render Error: <",r.type,">"]})]}),pe("div",{style:{fontSize:"11px",color:"#7f1d1d",wordBreak:"break-all"},children:["Node ID: ",X("code",{children:r.id})," \u2014 ",A instanceof Error?A.message:String(A)]})]}):D=X("div",{"data-kubuild-node":r.id,"data-kubuild-error":r.type,style:{display:"none"},"aria-hidden":"true"})}return X(ke,{nodeId:r.id,componentType:r.type,mode:t,onDiagnostic:p,children:D})}var $e=({document:r,registry:e=vo(),context:i,viewport:o="desktop",mode:n="runtime",className:t,showToastContainer:l=!0,onNodeClick:p,onDiagnostic:f,onActionDispatch:u,onNodePropChange:c})=>!r||!r.document?X("div",{className:t,children:"Empty Document"}):X(Je,{value:i,children:pe("div",{className:`kubuild-canvas-root ${t||""}`,children:[(()=>{let a=at(r);return a?X("style",{"data-kubuild-state-styles":!0,children:a}):null})(),(()=>{let a=ve(r);return a?X("style",{"data-kubuild-animation-styles":!0,children:a}):null})(),X(fe,{node:r.document,document:r,registry:e,context:i,viewport:o,mode:n,onNodeClick:p,onDiagnostic:f,onActionDispatch:u,onNodePropChange:c}),l&&X(Ct,{})]})});import Xt from"react";import Co from"react-dom";import{createDefaultComponentRegistry as wo}from"@kubuild/components";import{Fragment as Jt,jsx as ge,jsxs as So}from"react/jsx-runtime";function Gt(r){let e=r.document?.document;if(e)return e.children?.[0]??void 0}function $o(r,e){return r.filter(i=>i.artboardType==="component"&&!!i.triggerId&&!!e[i.triggerId]&&!!Gt(i))}var _e=({artboards:r,registry:e,context:i=oe,viewport:o="desktop",mode:n="runtime",modalManager:t,container:l,onDiagnostic:p,onActionDispatch:f})=>{let u=t||G,{modals:c}=mt(u),a=Xt.useMemo(()=>e||wo(),[e]),s=Xt.useMemo(()=>(r??i.componentArtboards??[]).filter(y=>y.artboardType==="component"),[r,i.componentArtboards]);if(n==="editor")return null;let d=$o(s,c);if(d.length===0)return null;let g=l!==void 0?l:typeof globalThis.document<"u"?globalThis.document.body:null;return g?ge(Jt,{children:d.map(b=>{let y=Gt(b);return y?Co.createPortal(ge("div",{"data-kubuild-artboard-portal":b.id,style:{pointerEvents:"auto"},children:ge(fe,{node:y,document:b.document,registry:a,context:i,viewport:o,mode:"runtime",onDiagnostic:p,onActionDispatch:f})},b.id),g,b.id):null})}):null},ma=({componentArtboards:r,modalManager:e,portalContainer:i,...o})=>So(Jt,{children:[ge($e,{...o}),ge(_e,{artboards:r,registry:o.registry,context:o.context,viewport:o.viewport,mode:o.mode,modalManager:e,container:i,onDiagnostic:o.onDiagnostic,onActionDispatch:o.onActionDispatch})]});import{useMemo as Le,useState as To}from"react";import{Fragment as Io,jsx as ee,jsxs as me}from"react/jsx-runtime";var Zt=Object.freeze({desktop:{width:"100%",maxWidth:"1280px",minHeight:"600px",label:"Desktop (1280px)",isFluid:!0},tablet:{width:"768px",height:"1024px",minHeight:"600px",label:"Tablet (768 \xD7 1024)",isFluid:!1},mobile:{width:"375px",height:"667px",minHeight:"500px",label:"Mobile (375 \xD7 667)",isFluid:!1}}),Eo=Object.freeze({mobile:480,tablet:768,desktop:1024});function ka(r,e){let i={...Eo,...e};return r<=i.mobile?"mobile":r<=i.tablet?"tablet":"desktop"}function Qt(r,e){let i=Zt[r]||Zt.desktop,o=e?.[r];return{...i,...o}}function Po(r,e,i){let o=Qt(r,e),n=i??o.scale??1,t=p=>typeof p=="number"?`${p}px`:p,l={width:t(o.width),maxWidth:t(o.maxWidth),minWidth:t(o.minWidth),height:t(o.height),minHeight:t(o.minHeight),maxHeight:t(o.maxHeight),aspectRatio:o.aspectRatio,transition:"width 0.2s ease, max-width 0.2s ease, height 0.2s ease"};return n!==1&&(l.transform=`scale(${n})`,l.transformOrigin="top center"),l}var Ao=({document:r,viewport:e="desktop",onViewportChange:i,viewportConfigs:o,breakpoints:n,registry:t,context:l,mode:p="runtime",showChrome:f=!1,chromeTitle:u,editorOverlay:c,scale:a,className:s,style:d,canvasClassName:g,canvasStyle:b,onNodeClick:y,onDiagnostic:x,onActionDispatch:h,componentArtboards:v})=>{let[m,k]=To(null),R=v??l?.componentArtboards,w=Le(()=>Qt(e,o),[e,o]),S=Le(()=>Po(e,o,a),[e,o,a]),E=Le(()=>({...S,...b,position:"relative",boxSizing:"border-box"}),[S,b]);return me("div",{"data-kubuild-preview-container":!0,"data-viewport":e,className:`kubuild-preview-viewport-adapter ${s||""}`,style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-start",width:"100%",height:"100%",boxSizing:"border-box",...d},children:[f&&me("div",{"data-kubuild-preview-chrome":!0,style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",maxWidth:S.maxWidth||S.width,padding:"8px 12px",marginBottom:"8px",backgroundColor:"#1e293b",color:"#f8fafc",borderRadius:"8px",fontSize:"12px",fontFamily:"system-ui, -apple-system, sans-serif",boxSizing:"border-box"},children:[me("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[ee("span",{style:{fontWeight:600},children:u||r.metadata?.title||"Preview"}),ee("span",{"data-testid":"viewport-badge",style:{fontSize:"10px",padding:"2px 6px",borderRadius:"4px",backgroundColor:"#334155",color:"#94a3b8",textTransform:"uppercase",fontWeight:700},children:e}),ee("span",{style:{fontSize:"11px",color:"#64748b"},children:w.label||`${w.width} \xD7 ${w.height||"auto"}`})]}),i&&ee("div",{"data-testid":"viewport-switcher",style:{display:"flex",gap:"4px",backgroundColor:"#0f172a",padding:"2px",borderRadius:"6px"},children:["desktop","tablet","mobile"].map(F=>{let I=e===F;return ee("button",{type:"button","data-testid":`viewport-btn-${F}`,onClick:()=>i(F),style:{padding:"4px 10px",fontSize:"11px",fontWeight:500,borderRadius:"4px",border:"none",cursor:"pointer",textTransform:"capitalize",backgroundColor:I?"#3b82f6":"transparent",color:I?"#ffffff":"#94a3b8",transition:"all 0.15s ease"},children:F},F)})})]}),me("div",{"data-kubuild-preview-canvas":!0,"data-viewport":e,className:`kubuild-preview-canvas ${g||""}`,style:E,children:[ee($e,{document:r,registry:t,context:l,viewport:e,mode:p,onNodeClick:y,onDiagnostic:x,onActionDispatch:h}),R&&R.length>0&&me(Io,{children:[ee("div",{ref:k,"data-kubuild-preview-overlay-host":!0,style:{position:"absolute",top:0,left:0,right:0,bottom:0,transform:"translate3d(0, 0, 0)",pointerEvents:"none"}}),m&&ee(_e,{artboards:R,registry:t,context:l,viewport:e,mode:p,container:m,onDiagnostic:x,onActionDispatch:h})]}),c&&ee("div",{"data-kubuild-preview-overlay":!0,style:{position:"absolute",top:0,left:0,right:0,bottom:0,pointerEvents:"none",zIndex:10},children:c})]})]})},Ca=Ao;function V(r){return r==null?"":String(r).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function T(r){return V(r)}function No(r){if(!r||typeof r!="string")return null;let e=r.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/i);return e?e[1]:null}function Fo(r){if(!r||typeof r!="string")return null;let e=r.match(/(?:vimeo\.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|))(\d+)/i);return e?e[3]:null}function j(r,e,i){let o=" ".repeat(e*(i.indentSize??2)),n=" ".repeat((e+1)*(i.indentSize??2)),t=r.props||{},l=r.children||[],f=i.includeNodeClasses!==!1?`kb-node-${r.id}`:"",u=(...a)=>a.filter(Boolean).join(" "),c=t.id?` id="${T(t.id)}"`:"";switch(r.type){case"page":{let a=i.rootTag||"main",s=u("kb-page",f),d=l.map(g=>j(g,e+1,i)).join(`
121
+ `);return d?`${o}<${a} class="${s}"${c}>
122
+ ${d}
123
+ ${o}</${a}>`:`${o}<${a} class="${s}"${c}></${a}>`}case"section":{let a=t.ariaLabel?` aria-label="${T(t.ariaLabel)}"`:"",s=u("kb-section",f),d=l.map(g=>j(g,e+1,i)).join(`
124
+ `);return d?`${o}<section class="${s}"${c}${a}>
125
+ ${d}
126
+ ${o}</section>`:`${o}<section class="${s}"${c}${a}></section>`}case"container":{let a=u("kb-container",f),s=l.map(d=>j(d,e+1,i)).join(`
127
+ `);return s?`${o}<div class="${a}"${c}>
128
+ ${s}
129
+ ${o}</div>`:`${o}<div class="${a}"${c}></div>`}case"columns":{let a=u("kb-columns",f),s=l.map(d=>j(d,e+1,i)).join(`
130
+ `);return s?`${o}<div class="${a}"${c}>
131
+ ${s}
132
+ ${o}</div>`:`${o}<div class="${a}"${c}></div>`}case"heading":{let a="h2";typeof t.level=="string"&&/^h[1-6]$/i.test(t.level)?a=t.level.toLowerCase():typeof t.level=="number"&&t.level>=1&&t.level<=6?a=`h${t.level}`:typeof t.tag=="string"&&/^h[1-6]$/i.test(t.tag)&&(a=t.tag.toLowerCase());let s=t.text??t.value??t.content??"Heading",d=u("kb-heading",f);return`${o}<${a} class="${d}"${c}>${V(s)}</${a}>`}case"paragraph":{let a=t.text??t.value??t.content??"",s=u("kb-paragraph",f);return`${o}<p class="${s}"${c}>${V(a)}</p>`}case"text":{let a=t.as||"p",s=t.text??t.value??t.content??"",d=u("kb-text",f);return`${o}<${a} class="${d}"${c}>${V(s)}</${a}>`}case"link":{let a=t.href?` href="${T(t.href)}"`:' href="#"',s=t.target?` target="${T(t.target)}"`:"",d=t.rel?` rel="${T(t.rel)}"`:s.includes("_blank")?' rel="noopener noreferrer"':"",g=t.text??t.label??t.value,b=u("kb-link",f);if(l.length>0){let y=l.map(x=>j(x,e+1,i)).join(`
133
+ `);return`${o}<a class="${b}"${c}${a}${s}${d}>
134
134
  ${y}
135
- ${o}</a>`}return`${o}<a class="${b}"${d}${s}${a}${c}>${A(m??"Link")}</a>`}case"blockquote":{let s=t.cite?` cite="${T(t.cite)}"`:"",a=t.quote??t.text??t.value,c=t.author??t.citeAuthor,m=u("kb-blockquote",p);if(a||c){let b=a?`${n}<p>${A(a)}</p>`:"",y=c?`${n}<cite>${A(c)}</cite>`:"",h=[b,y].filter(Boolean).join(`
136
- `);return`${o}<blockquote class="${m}"${d}${s}>
137
- ${h}
138
- ${o}</blockquote>`}if(l.length>0){let b=l.map(y=>q(y,e+1,i)).join(`
139
- `);return`${o}<blockquote class="${m}"${d}${s}>
135
+ ${o}</a>`}return`${o}<a class="${b}"${c}${a}${s}${d}>${V(g??"Link")}</a>`}case"blockquote":{let a=t.cite?` cite="${T(t.cite)}"`:"",s=t.quote??t.text??t.value,d=t.author??t.citeAuthor,g=u("kb-blockquote",f);if(s||d){let b=s?`${n}<p>${V(s)}</p>`:"",y=d?`${n}<cite>${V(d)}</cite>`:"",x=[b,y].filter(Boolean).join(`
136
+ `);return`${o}<blockquote class="${g}"${c}${a}>
137
+ ${x}
138
+ ${o}</blockquote>`}if(l.length>0){let b=l.map(y=>j(y,e+1,i)).join(`
139
+ `);return`${o}<blockquote class="${g}"${c}${a}>
140
140
  ${b}
141
- ${o}</blockquote>`}return`${o}<blockquote class="${m}"${d}${s}></blockquote>`}case"badge":{let s=t.text??t.label??t.value??"Badge",a=u("kb-badge",p);return`${o}<span class="${a}"${d}>${A(s)}</span>`}case"code-block":{let s=t.code??t.text??t.value??"",a=t.language||t.lang,c=a?` class="language-${T(a)}"`:"",m=u("kb-code-block",p);return`${o}<pre class="${m}"${d}><code${c}>${A(s)}</code></pre>`}case"divider":{let s=u("kb-divider",p),a=t.text??t.label;return a?`${o}<div class="${s}"${d} role="separator"><span>${A(a)}</span></div>`:`${o}<hr class="${s}"${d} />`}case"spacer":{let s=u("kb-spacer",p);return`${o}<div class="${s}"${d} aria-hidden="true"></div>`}case"image":{let s=t.src?` src="${T(t.src)}"`:' src=""',a=t.alt?` alt="${T(t.alt)}"`:' alt=""',c=t.loading?` loading="${T(t.loading)}"`:' loading="lazy"',m=u("kb-image",p);return`${o}<img class="${m}"${d}${s}${a}${c} />`}case"video":{let s=t.src||"",a=lo(s),c=co(s),m=u("kb-video",p);if(a)return`${o}<div class="kb-video-wrapper ${p}"${d}>
142
- ${n}<iframe src="https://www.youtube-nocookie.com/embed/${T(a)}" title="${T(t.title||"Video player")}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
143
- ${o}</div>`;if(c)return`${o}<div class="kb-video-wrapper ${p}"${d}>
144
- ${n}<iframe src="https://player.vimeo.com/video/${T(c)}" title="${T(t.title||"Video player")}" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>
145
- ${o}</div>`;let b=t.poster?` poster="${T(t.poster)}"`:"",y=t.controls!==!1?" controls":"",h=t.autoplay?" autoplay":"",v=t.loop?" loop":"",x=t.muted?" muted":"",g=s?` src="${T(s)}"`:"";return`${o}<video class="${m}"${d}${g}${b}${y}${h}${v}${x}></video>`}case"icon":{let s=t.name||t.icon||"star",a=t.ariaLabel?` aria-label="${T(t.ariaLabel)}"`:' aria-hidden="true"',c=u("kb-icon",p);return`${o}<span class="${c}"${d}${a} data-icon="${T(s)}"></span>`}case"html-embed":{let s=t.html??t.content??"",a=u("kb-html-embed",p);return s?`${o}<div class="${a}"${d}>
146
- ${n}${s}
147
- ${o}</div>`:`${o}<div class="${a}"${d}></div>`}case"button":{let s=t.label??t.text??t.value??"Button",a=t.type?` type="${T(t.type)}"`:' type="button"',c=t.disabled?" disabled":"",m=u("kb-button",p);if(t.href){let b=` href="${T(t.href)}"`,y=t.target?` target="${T(t.target)}"`:"";return`${o}<a class="${m}"${d}${b}${y}>${A(s)}</a>`}return`${o}<button class="${m}"${d}${a}${c}>${A(s)}</button>`}case"form":{let s=t.action?` action="${T(t.action)}"`:"",a=t.method?` method="${T(t.method)}"`:' method="POST"',c=u("kb-form",p),m=l.map(b=>q(b,e+1,i)).join(`
148
- `);return m?`${o}<form class="${c}"${d}${s}${a}>
149
- ${m}
150
- ${o}</form>`:`${o}<form class="${c}"${d}${s}${a}></form>`}case"input":{let s=t.type?` type="${T(t.type)}"`:' type="text"',a=t.name?` name="${T(t.name)}"`:"",c=t.placeholder?` placeholder="${T(t.placeholder)}"`:"",m=t.value!==void 0?` value="${T(t.value)}"`:"",b=t.required?" required":"",y=t.disabled?" disabled":"",h=u("kb-input",p);return`${o}<input class="${h}"${d}${s}${a}${c}${m}${b}${y} />`}case"textarea":{let s=t.name?` name="${T(t.name)}"`:"",a=t.placeholder?` placeholder="${T(t.placeholder)}"`:"",c=t.rows?` rows="${T(t.rows)}"`:' rows="4"',m=t.value??t.defaultValue??"",b=t.required?" required":"",y=t.disabled?" disabled":"",h=u("kb-textarea",p);return`${o}<textarea class="${h}"${d}${s}${a}${c}${b}${y}>${A(m)}</textarea>`}case"select":{let s=t.name?` name="${T(t.name)}"`:"",a=t.required?" required":"",c=t.disabled?" disabled":"",m=u("kb-select",p),b=Array.isArray(t.options)?t.options:[],y=" ".repeat((e+1)*(i.indentSize??2)),h=b.map(v=>{let x=typeof v=="object"?v.value:v,g=typeof v=="object"?v.label:v,w=t.value===x||t.defaultValue===x?" selected":"";return`${y}<option value="${T(x)}"${w}>${A(g)}</option>`}).join(`
151
- `);return h?`${o}<select class="${m}"${d}${s}${a}${c}>
152
- ${h}
153
- ${o}</select>`:`${o}<select class="${m}"${d}${s}${a}${c}></select>`}case"checkbox":{let s=t.name?` name="${T(t.name)}"`:"",a=t.checked||t.defaultChecked?" checked":"",c=t.label??t.text??"",m=u("kb-checkbox-label",p);return`${o}<label class="${m}"${d}><input type="checkbox"${s}${a} /><span>${A(c)}</span></label>`}case"radio":{let s=t.name?` name="${T(t.name)}"`:"",a=t.value?` value="${T(t.value)}"`:"",c=t.checked||t.defaultChecked?" checked":"",m=t.label??t.text??"",b=u("kb-radio-label",p);return`${o}<label class="${b}"${d}><input type="radio"${s}${a}${c} /><span>${A(m)}</span></label>`}case"list":{let s=t.tag==="ol"||t.type==="ol"||t.ordered?"ol":"ul",a=u("kb-list",p),c=l.map(m=>q(m,e+1,i)).join(`
154
- `);return c?`${o}<${s} class="${a}"${d}>
155
- ${c}
156
- ${o}</${s}>`:`${o}<${s} class="${a}"${d}></${s}>`}case"list-item":{let s=t.text??t.value,a=u("kb-list-item",p);if(l.length>0){let c=l.map(m=>q(m,e+1,i)).join(`
157
- `);return`${o}<li class="${a}"${d}>
158
- ${c}
159
- ${o}</li>`}return`${o}<li class="${a}"${d}>${A(s??"List item")}</li>`}case"table":{let s=u("kb-table",p),a=l.map(c=>q(c,e+1,i)).join(`
160
- `);return a?`${o}<table class="${s}"${d}>
161
- ${a}
162
- ${o}</table>`:`${o}<table class="${s}"${d}></table>`}case"table-row":{let s=u("kb-table-row",p),a=l.map(c=>q(c,e+1,i)).join(`
163
- `);return a?`${o}<tr class="${s}"${d}>
164
- ${a}
165
- ${o}</tr>`:`${o}<tr class="${s}"${d}></tr>`}case"table-cell":{let a=t.isHeader||t.type==="header"||t.tag==="th"?"th":"td",c=t.colSpan&&Number(t.colSpan)>1?` colspan="${T(t.colSpan)}"`:"",m=t.rowSpan&&Number(t.rowSpan)>1?` rowspan="${T(t.rowSpan)}"`:"",b=t.text??t.value??"",y=u("kb-table-cell",p);if(l.length>0){let h=l.map(v=>q(v,e+1,i)).join(`
166
- `);return`${o}<${a} class="${y}"${d}${c}${m}>
167
- ${h}
168
- ${o}</${a}>`}return`${o}<${a} class="${y}"${d}${c}${m}>${A(b)}</${a}>`}case"collection":{let s=u("kb-collection",p),a=l.map(c=>q(c,e+1,i)).join(`
169
- `);return a?`${o}<div class="${s}"${d}>
170
- ${a}
171
- ${o}</div>`:`${o}<div class="${s}"${d}></div>`}default:{let s=u(`kb-${r.type}`,p),a=l.map(c=>q(c,e+1,i)).join(`
172
- `);return a?`${o}<div class="${s}"${d}>
173
- ${a}
174
- ${o}</div>`:`${o}<div class="${s}"${d}></div>`}}}function uo(r,e={}){let i="document"in r?r.document:r;return i?q(i,0,e):""}function xe(r,e,i=""){if(!e.trim())return"";let o=e.split(";").map(t=>t.trim()).filter(Boolean);if(o.length===0)return"";let n=o.map(t=>`${i} ${t};`).join(`
141
+ ${o}</blockquote>`}return`${o}<blockquote class="${g}"${c}${a}></blockquote>`}case"badge":{let a=t.text??t.label??t.value??"Badge",s=u("kb-badge",f);return`${o}<span class="${s}"${c}>${V(a)}</span>`}case"code-block":{let a=t.code??t.text??t.value??"",s=t.language||t.lang,d=s?` class="language-${T(s)}"`:"",g=u("kb-code-block",f);return`${o}<pre class="${g}"${c}><code${d}>${V(a)}</code></pre>`}case"divider":{let a=u("kb-divider",f),s=t.text??t.label;return s?`${o}<div class="${a}"${c} role="separator"><span>${V(s)}</span></div>`:`${o}<hr class="${a}"${c} />`}case"spacer":{let a=u("kb-spacer",f);return`${o}<div class="${a}"${c} aria-hidden="true"></div>`}case"image":{let a=t.src?` src="${T(t.src)}"`:' src=""',s=t.alt?` alt="${T(t.alt)}"`:' alt=""',d=t.loading?` loading="${T(t.loading)}"`:' loading="lazy"',g=u("kb-image",f);return`${o}<img class="${g}"${c}${a}${s}${d} />`}case"video":{let a=t.src||"",s=No(a),d=Fo(a),g=u("kb-video",f);if(s)return`${o}<div class="kb-video-wrapper ${f}"${c}>
142
+ ${n}<iframe src="https://www.youtube-nocookie.com/embed/${T(s)}" title="${T(t.title||"Video player")}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
143
+ ${o}</div>`;if(d)return`${o}<div class="kb-video-wrapper ${f}"${c}>
144
+ ${n}<iframe src="https://player.vimeo.com/video/${T(d)}" title="${T(t.title||"Video player")}" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>
145
+ ${o}</div>`;let b=t.poster?` poster="${T(t.poster)}"`:"",y=t.controls!==!1?" controls":"",x=t.autoplay?" autoplay":"",h=t.loop?" loop":"",v=t.muted?" muted":"",m=a?` src="${T(a)}"`:"";return`${o}<video class="${g}"${c}${m}${b}${y}${x}${h}${v}></video>`}case"icon":{let a=t.name||t.icon||"star",s=t.ariaLabel?` aria-label="${T(t.ariaLabel)}"`:' aria-hidden="true"',d=u("kb-icon",f);return`${o}<span class="${d}"${c}${s} data-icon="${T(a)}"></span>`}case"html-embed":{let a=t.html??t.content??"",s=u("kb-html-embed",f);return a?`${o}<div class="${s}"${c}>
146
+ ${n}${a}
147
+ ${o}</div>`:`${o}<div class="${s}"${c}></div>`}case"button":{let a=t.label??t.text??t.value??"Button",s=t.type?` type="${T(t.type)}"`:' type="button"',d=t.disabled?" disabled":"",g=u("kb-button",f);if(t.href){let b=` href="${T(t.href)}"`,y=t.target?` target="${T(t.target)}"`:"";return`${o}<a class="${g}"${c}${b}${y}>${V(a)}</a>`}return`${o}<button class="${g}"${c}${s}${d}>${V(a)}</button>`}case"form":{let a=t.action?` action="${T(t.action)}"`:"",s=t.method?` method="${T(t.method)}"`:' method="POST"',d=u("kb-form",f),g=l.map(b=>j(b,e+1,i)).join(`
148
+ `);return g?`${o}<form class="${d}"${c}${a}${s}>
149
+ ${g}
150
+ ${o}</form>`:`${o}<form class="${d}"${c}${a}${s}></form>`}case"input":{let a=t.type?` type="${T(t.type)}"`:' type="text"',s=t.name?` name="${T(t.name)}"`:"",d=t.placeholder?` placeholder="${T(t.placeholder)}"`:"",g=t.value!==void 0?` value="${T(t.value)}"`:"",b=t.required?" required":"",y=t.disabled?" disabled":"",x=u("kb-input",f);return`${o}<input class="${x}"${c}${a}${s}${d}${g}${b}${y} />`}case"textarea":{let a=t.name?` name="${T(t.name)}"`:"",s=t.placeholder?` placeholder="${T(t.placeholder)}"`:"",d=t.rows?` rows="${T(t.rows)}"`:' rows="4"',g=t.value??t.defaultValue??"",b=t.required?" required":"",y=t.disabled?" disabled":"",x=u("kb-textarea",f);return`${o}<textarea class="${x}"${c}${a}${s}${d}${b}${y}>${V(g)}</textarea>`}case"select":{let a=t.name?` name="${T(t.name)}"`:"",s=t.required?" required":"",d=t.disabled?" disabled":"",g=u("kb-select",f),b=Array.isArray(t.options)?t.options:[],y=" ".repeat((e+1)*(i.indentSize??2)),x=b.map(h=>{let v=typeof h=="object"?h.value:h,m=typeof h=="object"?h.label:h,k=t.value===v||t.defaultValue===v?" selected":"";return`${y}<option value="${T(v)}"${k}>${V(m)}</option>`}).join(`
151
+ `);return x?`${o}<select class="${g}"${c}${a}${s}${d}>
152
+ ${x}
153
+ ${o}</select>`:`${o}<select class="${g}"${c}${a}${s}${d}></select>`}case"checkbox":{let a=t.name?` name="${T(t.name)}"`:"",s=t.checked||t.defaultChecked?" checked":"",d=t.label??t.text??"",g=u("kb-checkbox-label",f);return`${o}<label class="${g}"${c}><input type="checkbox"${a}${s} /><span>${V(d)}</span></label>`}case"radio":{let a=t.name?` name="${T(t.name)}"`:"",s=t.value?` value="${T(t.value)}"`:"",d=t.checked||t.defaultChecked?" checked":"",g=t.label??t.text??"",b=u("kb-radio-label",f);return`${o}<label class="${b}"${c}><input type="radio"${a}${s}${d} /><span>${V(g)}</span></label>`}case"list":{let a=t.tag==="ol"||t.type==="ol"||t.ordered?"ol":"ul",s=u("kb-list",f),d=l.map(g=>j(g,e+1,i)).join(`
154
+ `);return d?`${o}<${a} class="${s}"${c}>
155
+ ${d}
156
+ ${o}</${a}>`:`${o}<${a} class="${s}"${c}></${a}>`}case"list-item":{let a=t.text??t.value,s=u("kb-list-item",f);if(l.length>0){let d=l.map(g=>j(g,e+1,i)).join(`
157
+ `);return`${o}<li class="${s}"${c}>
158
+ ${d}
159
+ ${o}</li>`}return`${o}<li class="${s}"${c}>${V(a??"List item")}</li>`}case"table":{let a=u("kb-table",f),s=l.map(d=>j(d,e+1,i)).join(`
160
+ `);return s?`${o}<table class="${a}"${c}>
161
+ ${s}
162
+ ${o}</table>`:`${o}<table class="${a}"${c}></table>`}case"table-row":{let a=u("kb-table-row",f),s=l.map(d=>j(d,e+1,i)).join(`
163
+ `);return s?`${o}<tr class="${a}"${c}>
164
+ ${s}
165
+ ${o}</tr>`:`${o}<tr class="${a}"${c}></tr>`}case"table-cell":{let s=t.isHeader||t.type==="header"||t.tag==="th"?"th":"td",d=t.colSpan&&Number(t.colSpan)>1?` colspan="${T(t.colSpan)}"`:"",g=t.rowSpan&&Number(t.rowSpan)>1?` rowspan="${T(t.rowSpan)}"`:"",b=t.text??t.value??"",y=u("kb-table-cell",f);if(l.length>0){let x=l.map(h=>j(h,e+1,i)).join(`
166
+ `);return`${o}<${s} class="${y}"${c}${d}${g}>
167
+ ${x}
168
+ ${o}</${s}>`}return`${o}<${s} class="${y}"${c}${d}${g}>${V(b)}</${s}>`}case"collection":{let a=u("kb-collection",f),s=l.map(d=>j(d,e+1,i)).join(`
169
+ `);return s?`${o}<div class="${a}"${c}>
170
+ ${s}
171
+ ${o}</div>`:`${o}<div class="${a}"${c}></div>`}default:{let a=u(`kb-${r.type}`,f),s=l.map(d=>j(d,e+1,i)).join(`
172
+ `);return s?`${o}<div class="${a}"${c}>
173
+ ${s}
174
+ ${o}</div>`:`${o}<div class="${a}"${c}></div>`}}}function Do(r,e={}){let i="document"in r?r.document:r;return i?j(i,0,e):""}function Se(r,e,i=""){if(!e.trim())return"";let o=e.split(";").map(t=>t.trim()).filter(Boolean);if(o.length===0)return"";let n=o.map(t=>`${i} ${t};`).join(`
175
175
  `);return`${i}${r} {
176
176
  ${n}
177
- ${i}}`}function po(r,e={}){let i="document"in r?r.document:r;if(!i)return"";let o=e.classPrefix||"kb-node-",n=[],t=[],l=[],f=[],p=a=>{let c=`.${o}${a.id}`;if(a.styles){let m={...a.styles.base||{},...a.styles.desktop||{}},b=te(m);if(b&&n.push(xe(c,b)),a.styles.tablet){let y=te(a.styles.tablet);y&&t.push(xe(c,y," "))}if(a.styles.mobile){let y=te(a.styles.mobile);y&&l.push(xe(c,y," "))}if(a.styles.states&&typeof a.styles.states=="object")for(let[y,h]of Object.entries(a.styles.states)){if(!h)continue;let v=/^::?[a-zA-Z-]+$/.test(y)?y:null;if(!v)continue;let x=te(h);x&&f.push(xe(`${c}${v}`,x))}}a.children?.forEach(p)};p(i);let u=[];e.includeReset!==!1&&u.push(`/* ==========================================================================
177
+ ${i}}`}function Mo(r,e={}){let i="document"in r?r.document:r;if(!i)return"";let o=e.classPrefix||"kb-node-",n=[],t=[],l=[],p=[],f=s=>{let d=`.${o}${s.id}`;if(s.styles){let g={...s.styles.base||{},...s.styles.desktop||{}},b=ie(g);if(b&&n.push(Se(d,b)),s.styles.tablet){let y=ie(s.styles.tablet);y&&t.push(Se(d,y," "))}if(s.styles.mobile){let y=ie(s.styles.mobile);y&&l.push(Se(d,y," "))}if(s.styles.states&&typeof s.styles.states=="object")for(let[y,x]of Object.entries(s.styles.states)){if(!x)continue;let h=/^::?[a-zA-Z-]+$/.test(y)?y:null;if(!h)continue;let v=ie(x);v&&p.push(Se(`${d}${h}`,v))}}s.children?.forEach(f)};f(i);let u=[];e.includeReset!==!1&&u.push(`/* ==========================================================================
178
178
  Baseline Reset & Typography Standards
179
179
  ========================================================================== */
180
- ${Qe}`),n.length>0&&u.push(`/* ==========================================================================
180
+ ${st}`),n.length>0&&u.push(`/* ==========================================================================
181
181
  Component Styles
182
182
  ========================================================================== */
183
183
  ${n.join(`
184
184
 
185
- `)}`),f.length>0&&u.push(`/* ==========================================================================
185
+ `)}`),p.length>0&&u.push(`/* ==========================================================================
186
186
  Interactive & Hover States
187
187
  ========================================================================== */
188
- ${f.join(`
188
+ ${p.join(`
189
189
 
190
190
  `)}`),t.length>0&&u.push(`/* ==========================================================================
191
191
  Tablet Breakpoint (max-width: 1024px)
@@ -201,12 +201,12 @@ ${t.join(`
201
201
  ${l.join(`
202
202
 
203
203
  `)}
204
- }`);let d="document"in r?r:{schema:"stora.page",version:"1.0.0",document:i},s=me(d);return s&&u.push(`/* ==========================================================================
204
+ }`);let c="document"in r?r:{schema:"stora.page",version:"1.0.0",document:i},a=ve(c);return a&&u.push(`/* ==========================================================================
205
205
  Animations & Motion Keyframes
206
206
  ========================================================================== */
207
- ${s}`),u.join(`
207
+ ${a}`),u.join(`
208
208
 
209
- `)}function Bi(r,e={}){let i=A(r.metadata?.title||"KUBUILD Page"),o=r.metadata?.description?T(r.metadata.description):"",n=r.metadata?.author?T(r.metadata.author):"",t=e.lang||"en",l=po(r,e.cssOptions),f=uo(r,e.htmlOptions),p=o?` <meta name="description" content="${o}">
209
+ `)}function Ea(r,e={}){let i=V(r.metadata?.title||"KUBUILD Page"),o=r.metadata?.description?T(r.metadata.description):"",n=r.metadata?.author?T(r.metadata.author):"",t=e.lang||"en",l=Mo(r,e.cssOptions),p=Do(r,e.htmlOptions),f=o?` <meta name="description" content="${o}">
210
210
  `:"",u=n?` <meta name="author" content="${n}">
211
211
  `:"";return`<!DOCTYPE html>
212
212
  <html lang="${t}">
@@ -214,11 +214,11 @@ ${s}`),u.join(`
214
214
  <meta charset="UTF-8">
215
215
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
216
216
  <title>${i}</title>
217
- ${p}${u} <style>
217
+ ${f}${u} <style>
218
218
  ${l}
219
219
  </style>
220
220
  </head>
221
221
  <body>
222
- ${f}
222
+ ${p}
223
223
  </body>
224
- </html>`}export{Gt as ANIMATION_KEYFRAMES_CSS,J as ApiRequestError,be as ComponentErrorBoundary,io as DEFAULT_BREAKPOINTS,Qe as DEFAULT_CSS_RESET,ie as DEFAULT_RENDER_CONTEXT,Bt as DEFAULT_VIEWPORT_CONFIGS,j as EditableText,Pt as FormCheckboxNode,wt as FormContainerNode,St as FormInputNode,Nt as FormRadioNode,Ne as FormRuntimeContext,ht as FormRuntimeProvider,Et as FormSelectNode,It as FormSubmitButtonNode,Tt as FormTextareaNode,kt as HtmlEmbedView,Di as KubuildPreviewViewport,Ht as KubuildRenderer,Ee as ModalManager,Ie as NodeRenderer,ao as PreviewViewportAdapter,ze as RenderContextProvider,Cn as ToastCard,ft as ToastContainer,Se as ToastManager,nt as apiRequestRunner,Ot as aspectRatioToCss,ln as buildApiUrl,lt as closeModalRunner,me as collectAnimationStylesCss,Ze as collectStateStylesCss,ct as copyClipboardRunner,gn as copyToClipboard,we as createApiRequestHandler,wn as createDefaultActionRunners,vo as createMinimalRenderContext,Wt as createRenderContext,Ge as dispatchAction,D as executeNodeActions,po as generateDocumentCss,uo as generateSemanticHtml,Bi as generateStandaloneHtml,Qt as getEntranceAnimationCss,Jt as getHoverEffectCss,Zt as getLoopEffectCss,Dt as getVimeoId,At as getYouTubeId,Xe as isActionRegistered,se as modalManager,dt as navigateRunner,at as openModalRunner,dn as prepareRequestBody,ye as registerDefaultActionRunners,eo as renderCollectionNode,Kn as renderCustomComponent,to as renderFallbackNode,Qn as renderFormNode,Yn as renderLayoutNode,Gn as renderListNode,Zn as renderMediaNode,Mt as renderNodeContent,Jn as renderTableNode,Xn as renderTypographyNode,Co as replayNodeAnimation,ut as resetFormRunner,Ye as resolveActionPayload,Ke as resolveActionPayloadDetailed,Re as resolveAssetSync,Je as resolveNodeStyles,We as resolveVariable,so as resolveViewportContainerStyle,Lt as resolveViewportDimensions,Ai as resolveViewportFromWidth,st as showToastRunner,te as styleDefinitionToCssDeclarations,Ft as toPascalCase,Q as toastManager,Mn as transformEmbedHtml,$r as useFormContext,Sr as useFormField,X as useFormRuntime,wr as useFormStatus,Yo as useModal,Xo as useModals,$t as useNodeLoadActions,Ue as useRenderContext,ot as useToasts};
224
+ </html>`}export{cn as ANIMATION_KEYFRAMES_CSS,te as ApiRequestError,_e as ArtboardPortalHost,ke as ComponentErrorBoundary,Eo as DEFAULT_BREAKPOINTS,st as DEFAULT_CSS_RESET,oe as DEFAULT_RENDER_CONTEXT,Zt as DEFAULT_VIEWPORT_CONFIGS,W as EditableText,Ht as FormCheckboxNode,Mt as FormContainerNode,Ot as FormInputNode,_t as FormRadioNode,Ve as FormRuntimeContext,Et as FormRuntimeProvider,Bt as FormSelectNode,Lt as FormSubmitButtonNode,Vt as FormTextareaNode,Nt as HtmlEmbedView,Ca as KubuildPreviewViewport,ma as KubuildProjectRenderer,$e as KubuildRenderer,De as ModalManager,fe as NodeRenderer,Ao as PreviewViewportAdapter,Je as RenderContextProvider,On as ToastCard,Ct as ToastContainer,Ne as ToastManager,ct as apiRequestRunner,Ut as aspectRatioToCss,Rn as buildApiUrl,ht as closeModalRunner,ve as collectAnimationStylesCss,at as collectStateStylesCss,vt as copyClipboardRunner,En as copyToClipboard,Ie as createApiRequestHandler,Bn as createDefaultActionRunners,zo as createMinimalRenderContext,an as createRenderContext,ot as dispatchAction,B as executeNodeActions,Mo as generateDocumentCss,Do as generateSemanticHtml,Ea as generateStandaloneHtml,Gt as getArtboardContentNode,fn as getEntranceAnimationCss,un as getHoverEffectCss,pn as getLoopEffectCss,zt as getVimeoId,jt as getYouTubeId,Qn as handleFormButtonClick,nt as isActionRegistered,G as modalManager,xt as navigateRunner,rt as normalizeStyleObject,Me as openModalRunner,kn as prepareRequestBody,Ce as registerDefaultActionRunners,bo as renderCollectionNode,lo as renderCustomComponent,yo as renderFallbackNode,mo as renderFormNode,Wt as renderInteractiveNode,co as renderLayoutNode,po as renderListNode,go as renderMediaNode,Yt as renderNodeContent,fo as renderTableNode,uo as renderTypographyNode,Yo as replayNodeAnimation,Rt as resetFormRunner,tt as resolveActionPayload,et as resolveActionPayloadDetailed,Te as resolveAssetSync,it as resolveNodeStyles,Qe as resolveVariable,Po as resolveViewportContainerStyle,Qt as resolveViewportDimensions,ka as resolveViewportFromWidth,$o as selectOpenComponentArtboards,bt as showToastRunner,ie as styleDefinitionToCssDeclarations,qt as toPascalCase,re as toastManager,yt as toggleModalRunner,Gn as transformEmbedHtml,Kr as useFormContext,Xr as useFormField,Z as useFormRuntime,Yr as useFormStatus,gt as useModal,mt as useModals,Dt as useNodeLoadActions,Ze as useRenderContext,ut as useToasts};