const SVC_TINT={cy:"var(--app-accent)",red:"var(--accent-red, var(--app-fail))",gd:"var(--pastel-gold, var(--app-warn))",lav:"var(--pastel-lavender, #939aff)",tl:"var(--accent-teal, var(--app-success))"};function svcTint(a){return SVC_TINT[a]||"var(--app-accent)"}function getEnablement(){if(!window.__enablement){const a={};(window.SERVICES_CATALOG||[]).forEach(n=>{a[n.id]={enabled:n.defaultEnabled,features:(n.features||[]).reduce((s,e)=>(s[e.id]=e.defaultEnabled,s),{})}}),window.__enablement=a}return window.__enablement}function flipService(a,n){const s=getEnablement();s[a]=s[a]||{enabled:!1,features:{}},s[a].enabled=n,window.__enablement={...s}}function flipFeature(a,n,s){const e=getEnablement();e[a]=e[a]||{enabled:!1,features:{}},e[a].features={...e[a].features||{},[n]:s},window.__enablement={...e}}function SvcToggle({on:a,onChange:n,disabled:s,accent:e}){return React.createElement("button",{className:`svc-toggle ${a?"svc-on":""} ${s?"svc-disabled":""}`,onClick:()=>!s&&n(!a),style:a&&e?{background:e,borderColor:e}:null,"aria-checked":a,role:"switch"},React.createElement("span",{className:"svc-toggle-knob"}))}function PricingBadge({tier:a}){const s={free:{label:"Free",cls:"svc-pb-free"},freemium:{label:"Freemium",cls:"svc-pb-freemium"},builder_only:{label:"Builder only",cls:"svc-pb-builder"}}[a]||{label:a,cls:""};return React.createElement("span",{className:`svc-pb mono ${s.cls}`},s.label)}function ServicesGridView({kind:a}){const n=a.catalog||[],s=a.categories||[],e=a.auditEntries||[],[,i]=React.useState(0),d=getEnablement();function u(o,p){flipService(o,p),i(t=>t+1)}function c(o,p,t){flipFeature(o,p,t),i(w=>w+1)}function g(){n.forEach(o=>flipService(o.id,o.defaultEnabled)),i(o=>o+1)}function r(){n.forEach(o=>flipService(o.id,o.defaultEnabled)),i(o=>o+1)}const m=Object.values(d).filter(o=>o.enabled).length;return React.createElement("div",{className:"view view-servicesGrid"},React.createElement("div",{className:"sg-toolbar"},React.createElement("div",{className:"sg-toolbar-left"},React.createElement("span",{className:"sg-toolbar-summary mono"},m," / ",n.length," active")),React.createElement("div",{className:"sg-toolbar-right"},React.createElement("button",{className:"sg-bulk-btn",onClick:g},React.createElement(MIcon,{name:"auto_awesome",size:14}),React.createElement("span",null,"Enable recommended")),React.createElement("button",{className:"sg-bulk-btn sg-bulk-ghost",onClick:r},React.createElement(MIcon,{name:"restart_alt",size:14}),React.createElement("span",null,"Reset to defaults")))),s.map(o=>{const p=n.filter(t=>t.category===o.id);return React.createElement("section",{key:o.id,className:"sg-category"},React.createElement("div",{className:"sg-cat-head"},React.createElement("div",{className:"sg-cat-label mono"},o.label),React.createElement("div",{className:"sg-cat-tag"},o.tagline)),React.createElement("div",{className:"sg-grid"},p.map(t=>{const w=d[t.id]||{enabled:!1,features:{}},f=w.enabled,v=svcTint(t.accent);return React.createElement("article",{key:t.id,className:`sg-card ${f?"sg-card-on":""}`,style:f?{"--svc-accent":v,borderColor:`color-mix(in srgb, ${v} 40%, var(--app-rule))`}:null},React.createElement("div",{className:"sg-card-head"},React.createElement("div",{className:"sg-card-icon",style:f?{background:`color-mix(in srgb, ${v} 18%, var(--app-elevated))`,color:v}:null},React.createElement(MIcon,{name:t.icon,size:18})),React.createElement("div",{className:"sg-card-title-wrap"},React.createElement("div",{className:"sg-card-title"},t.name),React.createElement("div",{className:"sg-card-domain mono"},t.domain)),React.createElement(SvcToggle,{on:f,accent:v,disabled:t.alwaysOn,onChange:l=>u(t.id,l)})),React.createElement("div",{className:"sg-card-desc"},t.description),React.createElement("div",{className:"sg-card-foot"},React.createElement(PricingBadge,{tier:t.pricingTier}),t.freeLimit&&React.createElement("span",{className:"sg-card-limit mono"},t.freeLimit),t.alwaysOn&&React.createElement("span",{className:"sg-card-pinned mono"},"always-on")),f&&t.features&&t.features.length>0&&React.createElement("div",{className:"sg-features"},t.features.map(l=>{const b=!!(w.features&&w.features[l.id]);return React.createElement("div",{key:l.id,className:"sg-feature"},React.createElement("div",{className:"sg-feature-meta"},React.createElement("div",{className:"sg-feature-label"},l.label),(l.pricingTier||l.freeLimit)&&React.createElement("div",{className:"sg-feature-sub mono"},l.pricingTier&&React.createElement(PricingBadge,{tier:l.pricingTier}),l.freeLimit&&React.createElement("span",{className:"sg-feature-limit"},l.freeLimit))),React.createElement(SvcToggle,{on:b,accent:v,onChange:N=>c(t.id,l.id,N)}))})))})))}),React.createElement("section",{className:"sg-audit"},React.createElement("div",{className:"sg-audit-head mono"},"Audit \xB7 letzte ",e.length," Toggle-Events"),e.map((o,p)=>React.createElement("div",{key:p,className:`sg-audit-row sg-audit-${o.tone||"ok"}`},React.createElement("span",{className:"sg-audit-ts mono"},o.ts),React.createElement("span",{className:"sg-audit-actor mono"},o.actor),React.createElement("span",{className:"sg-audit-action mono"},o.action),React.createElement("span",{className:"sg-audit-target"},o.service,o.feature?` \xB7 ${o.feature}`:"")))))}function OnboardingWizardView({kind:a}){const n=a.steps||[],s=a.catalog||[],e=a.agentSuggestions||[],i=a.contextOptions||{},[,d]=React.useState(0),u=typeof window.__onboardingStep=="number"?window.__onboardingStep:5,[c,g]=React.useState(u);React.useEffect(()=>{g(u)},[u]);const r=n[c]||n[n.length-1];window.__onboardingSelections||(window.__onboardingSelections={role:null,goal:null,industry:null,agent:null});const m=window.__onboardingSelections;function o(v,l){m[v]=l,d(b=>b+1)}function p(v){m.agent=v;const l=e.find(b=>b.id===v);l&&l.deps.forEach(b=>flipService(b,!0)),d(b=>b+1)}function t(){c<n.length-1?g(c+1):f()}function w(){c>0&&g(c-1)}function f(){window.__setTweak&&window.__setTweak("onboardingStep",6),d(v=>v+1)}return React.createElement("div",{className:"view view-onboardingWizard"},React.createElement(OnboardingStepIndicator,{steps:n,active:c}),React.createElement("div",{className:"ow-stage"},React.createElement("div",{className:"ow-stage-head"},React.createElement("div",{className:"ow-stage-eyebrow mono"},"Step ",c+1," of ",n.length," \xB7 ",r.label),React.createElement("h2",{className:"ow-stage-title"},r.title),React.createElement("p",{className:"ow-stage-tag"},r.tagline)),React.createElement("div",{className:"ow-stage-body"},c===0&&React.createElement(StepContext,{ctx:i,sel:m,onPick:o}),c===1&&React.createElement(StepAgents,{agents:e,catalog:s,sel:m,onPick:p}),c===2&&React.createElement(StepFirstTask,{sel:m,agents:e}),c===3&&React.createElement(StepVault,{sel:m,agents:e}),c===4&&React.createElement(StepWelcome,{sel:m,agents:e}),c===5&&React.createElement(StepServices,{catalog:s,sel:m,onTick:()=>d(v=>v+1)})),React.createElement("div",{className:"ow-stage-foot"},React.createElement("button",{className:"ow-btn ow-btn-ghost",onClick:w,disabled:c===0},React.createElement(MIcon,{name:"chevron_left",size:14}),React.createElement("span",null,"Zur\xFCck")),React.createElement("div",{className:"ow-stage-foot-mid mono"},n.map((v,l)=>React.createElement("span",{key:v.id,className:`ow-foot-dot ${l===c?"on":""} ${l<c?"done":""}`}))),React.createElement("button",{className:"ow-btn ow-btn-primary",onClick:t},React.createElement("span",null,c===n.length-1?"Fertig \xB7 Canvas \xF6ffnen":"Weiter"),React.createElement(MIcon,{name:"chevron_right",size:14})))))}function OnboardingStepIndicator({steps:a,active:n}){return React.createElement("div",{className:"ow-indicator"},a.map((s,e)=>React.createElement("div",{key:s.id,className:`ow-ind-step ${e===n?"on":""} ${e<n?"done":""}`},React.createElement("span",{className:"ow-ind-num mono"},e<n?"\u2713":e+1),React.createElement("span",{className:"ow-ind-label mono"},s.label))))}function StepContext({ctx:a,sel:n,onPick:s}){return React.createElement("div",{className:"ow-context"},React.createElement("div",{className:"ow-context-block"},React.createElement("div",{className:"ow-context-label mono"},"Ihre Rolle"),React.createElement("div",{className:"ow-chips"},(a.roles||[]).map(e=>React.createElement("button",{key:e,className:`ow-chip ${n.role===e?"on":""}`,onClick:()=>s("role",e)},e)))),React.createElement("div",{className:"ow-context-block"},React.createElement("div",{className:"ow-context-label mono"},"Ihr Ziel"),React.createElement("div",{className:"ow-chips"},(a.goals||[]).map(e=>React.createElement("button",{key:e,className:`ow-chip ${n.goal===e?"on":""}`,onClick:()=>s("goal",e)},e)))),React.createElement("div",{className:"ow-context-block"},React.createElement("div",{className:"ow-context-label mono"},"Branche"),React.createElement("div",{className:"ow-chips"},(a.industries||[]).map(e=>React.createElement("button",{key:e,className:`ow-chip ${n.industry===e?"on":""}`,onClick:()=>s("industry",e)},e)))))}function StepAgents({agents:a,catalog:n,sel:s,onPick:e}){return React.createElement("div",{className:"ow-agents"},React.createElement("div",{className:"ow-agents-hint mono"},"Empfohlen basierend auf ",s.role||"Ihrer Rolle"," + ",s.goal||"Ihrem Ziel"),React.createElement("div",{className:"ow-agents-grid"},a.map(i=>{const d=s.agent===i.id;return React.createElement("button",{key:i.id,className:`ow-agent-card ${d?"on":""}`,onClick:()=>e(i.id)},React.createElement("div",{className:"ow-agent-head"},React.createElement("span",{className:"ow-agent-name"},i.label),d&&React.createElement("span",{className:"ow-agent-mark"},React.createElement(MIcon,{name:"check_circle",size:14}))),React.createElement("div",{className:"ow-agent-desc"},i.description),React.createElement("div",{className:"ow-agent-deps mono"},"Pre-selected services: ",i.deps.map(u=>n.find(g=>g.id===u)?.name?.replace("AaaS ","")||u).join(" \xB7 ")))})))}function StepFirstTask({sel:a,agents:n}){const s=n.find(e=>e.id===a.agent)||n[0];return React.createElement("div",{className:"ow-firsttask"},React.createElement("div",{className:"ow-ft-prompt mono"},"First task for ",s.label),React.createElement("div",{className:"ow-ft-box"},React.createElement("textarea",{defaultValue:"Process the open invoices from May 2026 and send me a summary of the matched receipts."})),React.createElement("div",{className:"ow-ft-info mono"},React.createElement(MIcon,{name:"info",size:12}),React.createElement("span",null,"The agent runs for real \u2014 every decision branch is visible in the Decisions Timeline.")))}function StepVault({sel:a,agents:n}){const s=n.find(i=>i.id===a.agent)||n[0],e={"ap-discovery":[{k:"Stripe live key",placeholder:"sk_live_\u2026"},{k:"IBAN f\xFCr Mahnungen",placeholder:"DE \u2026 "}],"meeting-prep":[{k:"Google Cal \xB7 OAuth",placeholder:"connect \u2192"}],"podcast-brief":[{k:"Resend API key",placeholder:"re_\u2026"},{k:"Spotify \xB7 OAuth",placeholder:"connect \u2192"}],headshot:[{k:"Cloudflare API token",placeholder:"eyJ\u2026"}],"cv-builder":[{k:"LinkedIn \xB7 OAuth",placeholder:"connect \u2192"}]}[s.id]||[];return React.createElement("div",{className:"ow-vault"},React.createElement("div",{className:"ow-vault-head mono"},"Zug\xE4nge f\xFCr ",s.label),e.map(i=>React.createElement("div",{key:i.k,className:"ow-vault-row"},React.createElement("span",{className:"ow-vault-label"},i.k),React.createElement("input",{className:"ow-vault-input mono",placeholder:i.placeholder}),React.createElement("button",{className:"ow-vault-btn"},React.createElement(MIcon,{name:"lock",size:12}),"Verschl\xFCsseln"))),React.createElement("div",{className:"ow-vault-foot mono"},React.createElement(MIcon,{name:"shield",size:12}),React.createElement("span",null,"Alle Werte werden client-seitig verschl\xFCsselt und im Vault abgelegt. AaaS sieht nie Klartext.")))}function StepWelcome({sel:a,agents:n}){const s=n.find(e=>e.id===a.agent)||n[0];return React.createElement("div",{className:"ow-welcome"},React.createElement("div",{className:"ow-welcome-mark"},React.createElement(MIcon,{name:"celebration",size:36})),React.createElement("div",{className:"ow-welcome-title"},"Setup complete."),React.createElement("div",{className:"ow-welcome-sub"},React.createElement("strong",null,s.label)," is active. Next, pick which AaaS services should appear in your Canvas surface."),React.createElement("div",{className:"ow-welcome-hint mono"},"Step 5 of 6 next \u2014 every toggle is reversible later."))}function StepServices({catalog:a,sel:n,onTick:s}){const e=getEnablement(),i=(a&&n.agent,null),d=["use","discover","build"];return React.createElement("div",{className:"ow-services"},React.createElement("div",{className:"ow-services-hint mono"},React.createElement(MIcon,{name:"auto_awesome",size:12}),React.createElement("span",null,'Pre-selected based on the agent you picked in step 1. "Manage" services come later in the account menu.')),d.map(u=>{const c=a.filter(r=>r.category===u),g={use:"Use",discover:"Discover",build:"Build"}[u];return React.createElement("div",{className:"ow-svc-cat"},React.createElement("div",{className:"ow-svc-cat-label mono"},g),React.createElement("div",{className:"ow-svc-list"},c.map(r=>{const m=!!(e[r.id]&&e[r.id].enabled),o=svcTint(r.accent);return React.createElement("div",{key:r.id,className:`ow-svc-row ${m?"on":""}`},React.createElement("div",{className:"ow-svc-icon",style:m?{background:`color-mix(in srgb, ${o} 18%, var(--app-elevated))`,color:o}:null},React.createElement(MIcon,{name:r.icon,size:16})),React.createElement("div",{className:"ow-svc-meta"},React.createElement("div",{className:"ow-svc-name"},r.name.replace("AaaS ","")),React.createElement("div",{className:"ow-svc-tag"},r.tagline)),React.createElement(PricingBadge,{tier:r.pricingTier}),React.createElement(SvcToggle,{on:m,accent:o,disabled:r.alwaysOn,onChange:p=>{flipService(r.id,p),s()}}))})))}))}function ServiceUnlockModal(){const[a,n]=React.useState(null);if(React.useEffect(()=>(window.__openServiceUnlock=d=>n(d),()=>{delete window.__openServiceUnlock}),[]),!a)return null;const s=(window.SERVICES_CATALOG||[]).find(d=>d.id===a);if(!s)return null;function e(){flipService(a,!0),n(null)}const i=svcTint(s.accent);return React.createElement("div",{className:"svc-unlock-backdrop",onClick:()=>n(null)},React.createElement("div",{className:"svc-unlock-modal",onClick:d=>d.stopPropagation(),style:{borderColor:`color-mix(in srgb, ${i} 50%, var(--app-rule))`}},React.createElement("div",{className:"svc-unlock-head"},React.createElement("div",{className:"svc-unlock-icon",style:{background:`color-mix(in srgb, ${i} 18%, var(--app-elevated))`,color:i}},React.createElement(MIcon,{name:"lock",size:20})),React.createElement("div",null,React.createElement("div",{className:"svc-unlock-eyebrow mono",style:{color:i}},s.domain),React.createElement("div",{className:"svc-unlock-title"},s.name," isn't enabled yet."))),React.createElement("div",{className:"svc-unlock-body"},s.description),React.createElement("div",{className:"svc-unlock-meta"},React.createElement(PricingBadge,{tier:s.pricingTier}),s.freeLimit&&React.createElement("span",{className:"mono ink-faint"},s.freeLimit)),React.createElement("div",{className:"svc-unlock-actions"},React.createElement("button",{className:"svc-unlock-cta",style:{background:i,color:"var(--app-accent-ink)"},onClick:e},React.createElement(MIcon,{name:"bolt",size:14}),React.createElement("span",null,"Enable")),React.createElement("button",{className:"svc-unlock-cta svc-unlock-cta-ghost",onClick:()=>n(null)},React.createElement("span",null,"Decide later")))))}Object.assign(window.VIEWS,{servicesGrid:ServicesGridView,onboardingWizard:OnboardingWizardView}),window.VIEW_OPTIONS.push({value:"servicesGrid",label:"Services",icon:"toggle_on"},{value:"onboardingWizard",label:"Onboarding",icon:"rocket_launch"}),window.ServiceUnlockModal=ServiceUnlockModal;
