1import{r as g,j as e,jK as f,jD as F,p7 as v,p as I,hQ as _,al as H,bI as y,p8 as q,aY as G,p9 as K,c8 as V,c9 as Q,bY as X,aU as J,Q as C,x as $,bM as Z,jX as E,jG as ee,U as se,aG as ae,aB as ne,cC as le,a0 as W,aX as O,at as ie,jE as te,pa as ce,ci as re,eC as B,iw as oe,pb as de,mv as pe,bb as he,jc as S,iC as ue,p4 as me,L,aP as D,v as z,a_ as xe,hf as je,dg as be,K as ge,jM as fe}from"./index-B3LkCOOS.js";import{u as U,a as Ne,A as ve}from"./AppRunner-MXWzc6Ai.js";import{a as ke,b as Te,u as Ae,t as Ce}from"./opportunities.functions-2JzIE4dl.js";import{A as Ie,a as ye}from"./icons-BPkFpo5o.js";import{d as we}from"./discover-vDfZiB8Q.js";const Se=[{value:"number",label:"Number"},{value:"currency",label:"Currency"},{value:"percent",label:"Percent"},{value:"text",label:"Text"},{value:"longtext",label:"Long Text"},{value:"select",label:"Choice"},{value:"toggle",label:"Yes / No"},{value:"date",label:"Date"}],Le=[{value:"number",label:"Number"},{value:"currency",label:"Currency"},{value:"percent",label:"Percent"}],Pe=Object.keys(F);function M(s,a){const o=s.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_|_$/g,"")||"field";let d=o,r=2;for(;a.includes(d);)d=`${o}_${r++}`;return d}function Fe({app:s}){const a=s.schema??{fields:[],outputs:[]},[o,d]=g.useState(null),r=g.useMemo(()=>[...a.fields.map(n=>n.key),...a.outputs.map(n=>n.key)],[a]);function c(n){v(s.id,{fields:n})}function p(n){v(s.id,{outputs:n})}function m(){const n=`Input ${a.fields.length+1}`;c([...a.fields,{key:M(n,r),label:n,type:"number",required:!1}])}function x(){const n=`Result ${a.outputs.length+1}`;p([...a.outputs,{key:M(n,r),label:n,expression:a.fields[0]?.key??"0",format:"number",primary:a.outputs.length===0}])}return e.jsxs("div",{className:"apx-build",children:[e.jsxs("section",{className:"apx-build-sec",children:[e.jsx("h3",{children:"Basics"}),e.jsxs("div",{className:"apx-build-grid",children:[e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"App Name"}),e.jsx("input",{value:s.name,onChange:n=>f(s.id,{name:n.target.value})})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Type"}),e.jsx("select",{value:s.kind,onChange:n=>f(s.id,{kind:n.target.value}),children:Pe.map(n=>e.jsx("option",{value:n,children:F[n]},n))})]})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Short Description"}),e.jsx("input",{value:s.description,onChange:n=>f(s.id,{description:n.target.value}),placeholder:"What A Member Gets From This Tool."})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Instructions Shown Above The Inputs"}),e.jsx("textarea",{rows:2,value:a.intro??"",onChange:n=>v(s.id,{intro:n.target.value})})]}),e.jsx("div",{className:"apx-icons",children:Ie.map(n=>e.jsx("button",{type:"button",className:`apx-icon-pick${s.icon===n?" is-on":""}`,onClick:()=>f(s.id,{icon:n}),children:ye(n,16)},n))})]}),e.jsxs("section",{className:"apx-build-sec",children:[e.jsxs("div",{className:"apx-build-head",children:[e.jsx("h3",{children:"Inputs"}),e.jsxs("button",{type:"button",className:"apx-mini",onClick:m,children:[e.jsx(I,{size:13})," Add Input"]})]}),a.fields.length===0&&e.jsx("p",{className:"apx-muted",children:"No inputs yet. Add what the member needs to enter."}),a.fields.map((n,u)=>{const b=`f-${n.key}`,l=o===b;return e.jsxs("div",{className:"apx-row",children:[e.jsxs("div",{className:"apx-row-head",children:[e.jsxs("button",{type:"button",className:"apx-row-toggle",onClick:()=>d(l?null:b),children:[l?e.jsx(_,{size:14}):e.jsx(H,{size:14}),e.jsx("strong",{children:n.label}),e.jsx("code",{children:n.key})]}),e.jsx("button",{type:"button",className:"apx-row-del",onClick:()=>c(a.fields.filter((t,h)=>h!==u)),children:e.jsx(y,{size:13})})]}),l&&e.jsxs("div",{className:"apx-row-body",children:[e.jsxs("div",{className:"apx-build-grid",children:[e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Label"}),e.jsx("input",{value:n.label,onChange:t=>c(a.fields.map((h,i)=>i===u?{...h,label:t.target.value}:h))})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Type"}
1),e.jsx("select",{value:n.type,onChange:t=>c(a.fields.map((h,i)=>i===u?{...h,type:t.target.value}:h)),children:Se.map(t=>e.jsx("option",{value:t.value,children:t.label},t.value))})]})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Helper Text"}),e.jsx("input",{value:n.help??"",onChange:t=>c(a.fields.map((h,i)=>i===u?{...h,help:t.target.value}:h))})]}),n.type==="select"&&e.jsxs("div",{className:"apx-opts",children:[e.jsx("span",{className:"apx-field-l",children:"Choices. A Score Makes The Choice Usable In Formulas"}),(n.options??[]).map((t,h)=>e.jsxs("div",{className:"apx-opt",children:[e.jsx("input",{value:t.label,placeholder:"Label",onChange:i=>c(a.fields.map((j,k)=>k===u?{...j,options:(j.options??[]).map((N,w)=>w===h?{...N,label:i.target.value,value:N.value||i.target.value}:N)}:j))}),e.jsx("input",{type:"number",value:t.score??"",placeholder:"Score",onChange:i=>c(a.fields.map((j,k)=>k===u?{...j,options:(j.options??[]).map((N,w)=>w===h?{...N,score:Number(i.target.value)}:N)}:j))}),e.jsx("button",{type:"button",className:"apx-row-del",onClick:()=>c(a.fields.map((i,j)=>j===u?{...i,options:(i.options??[]).filter((k,N)=>N!==h)}:i)),children:e.jsx(y,{size:12})})]},h)),e.jsxs("button",{type:"button",className:"apx-mini",onClick:()=>c(a.fields.map((t,h)=>h===u?{...t,options:[...t.options??[],{label:"New Choice",value:`opt_${(t.options?.length??0)+1}`,score:0}]}:t)),children:[e.jsx(I,{size:12})," Add Choice"]})]}),e.jsxs("div",{className:"apx-build-grid",children:[e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Default Value"}),e.jsx("input",{value:String(n.defaultValue??""),onChange:t=>c(a.fields.map((h,i)=>i===u?{...h,defaultValue:t.target.value===""?void 0:h.type==="text"||h.type==="longtext"||h.type==="select"||h.type==="date"?t.target.value:Number(t.target.value)}:h))})]}),e.jsxs("label",{className:"apx-check-inline",children:[e.jsx("input",{type:"checkbox",checked:!!n.required,onChange:t=>c(a.fields.map((h,i)=>i===u?{...h,required:t.target.checked}:h))}),"Required"]})]})]})]},n.key)})]}),e.jsxs("section",{className:"apx-build-sec",children:[e.jsxs("div",{className:"apx-build-head",children:[e.jsx("h3",{children:"Results"}),e.jsxs("button",{type:"button",className:"apx-mini",onClick:x,children:[e.jsx(I,{size:13})," Add Result"]})]}),e.jsx("p",{className:"apx-muted",children:"Formulas Use Input Keys And Support + â à ÷, Comparisons, And min, max, round, abs, pow, if(condition, a, b)."}),a.outputs.map((n,u)=>{const b=q(n.expression).filter(l=>!r.includes(l));return e.jsxs("div",{className:"apx-row is-open",children:[e.jsxs("div",{className:"apx-row-head",children:[e.jsx("strong",{children:n.label}),e.jsx("button",{type:"button",className:"apx-row-del",onClick:()=>p(a.outputs.filter((l,t)=>t!==u)),children:e.jsx(y,{size:13})})]}),e.jsxs("div",{className:"apx-row-body",children:[e.jsxs("div",{className:"apx-build-grid",children:[e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Label"}),e.jsx("input",{value:n.label,onChange:l=>p(a.outputs.map((t,h)=>h===u?{...t,label:l.target.value}:t))})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Format"}),e.jsx("select",{value:n.format??"number",onChange:l=>p(a.outputs.map((t,h)=>h===u?{...t,format:l.target.value}:t)),children:Le.map(l=>e.jsx("option",{value:l.value,children:l.label},l.value))})]})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Formula"}),e.jsx("input",{className:"apx-code",value:n.expression,onChange:l=>p(a.outputs.map((t,h)=>h===u?{...t,expression:l.target.value}:t))})]}),b.length>0&&e.jsxs("p",{className:"apx-warn",children:[e.jsx(G,{size:12})," Unknown Keys: ",b.join(", ")]}),e.jsxs("label",{className:"apx-check-inline",children:[e.jsx("input",{type:"checkbox",checked:!!n.primary,onChange:()=>p(a.outputs.map((l,t)=>({...l,primary:t===u})))}),"Headline Result"]})]})]},n.key)})]}),(s.kind==="generator"||a.template)&&e.jsxs("section",{className:"apx-build-sec",children:[e.jsx("h3",{children:"Text Output"}),e.jsxs("p",{className:"apx-muted",children:["Use ","{{input_key}}"," Or ","{{result_key}}"," To Insert Values."]}),e.jsx("textarea",{rows:7,className:"apx-code",value:a.template??"",onChange:n=>v(s.id,{template:n.target.value})})]}),(s.kind==="checklist"||a.checklist?.length)&&e.jsxs("section",{className:"apx-build-sec",children:[e.jsxs("div",{className:"apx-build-head",children:[e.jsx("h3",{children:"Checklist Items"}),e.jsxs("button",{type:"button",className:"apx-mini",onClick:()=>v(s.id,{checklist:[...a.checklist??[],{id:`c${(a.checklist?.length??0)+1}_${Math.random().toString(36).slice(2,5)}`,label:"New Step"}]}),children:[e.jsx(I,{size:13})," Add Step"]})]}),(a.checklist??[]).map((n,u)=>e.jsxs("div",{className:"apx-opt",children:[e.jsx("input",{value:n.label,onChange:b=>v(s.id,{checklist:(a.checklist??[]).map((l,t)=>t===u?{...l,label:b.target.value}:l)})}),e.jsx("button",{type:"button",className:"apx-row-del",onClick:()=>v(s.id,{checklist:(a.checklist??[]).filter((b,l)=>l!==u)}),children:e.jsx(y,{size:12})})]},n.id))]})]})}const Oe={calculator:"Run The Numbers On",assessment:"Score Where They Stand On",quiz:"Test What They Know About",planner:"Build A Plan For",tracker:"Track Progress On",generator:"Generate",intake:"Capture What You Need For",checklist:"Work Through","ai-tool":"Get AI Help With",embed:"Use"};function R(s){return s.name.replace(/\b(calculator|analyzer|planner|tracker|assessment|quiz|generator|builder|tool|app)\b/gi,"").trim()||s.name}function Y(s){return s.description?.trim()?s.description.trim():`${Oe[s.kind]??"Use"} ${R(s)} In Under A Minute. Using Your Own Method, Not A Generic Formula.`}function De(s){const a=s.schema??{fields:[],outputs:[]},o=a.fields[0]?.label,d=a.outputs.find(c=>c.primary)??a.outputs[0],r=[];return r.push(o?`Enter Your ${o} â Everything Else Builds From There.`:"Answer The Questions In Order."),a.fields.length>2&&r.push(`Fill In The Remaining ${a.fields.length-1} Fields. Estimates Are Fine To Start.`),d&&r.push(`Read Your ${d.label} â That's The Number To Act On.`),r.push("Save Or Share Your Result, Then Bring Questions To The Community."),r}function ze(s){const a=s.schema??{outputs:[]},o=a.outputs.find(r=>r.primary)??a.outputs[0],d=[{q:`What Is This ${F[s.kind]} For?`,a:Y(s)},{q:"What If I Don't Know One Of The Numbers?",a:"Use Your Best Estimate. The Tool Is Built To Show You Direction First And Precision Second. You Can Refine It Later."}];return o&&d.push({q:`How Should I Read My ${o.label}?`,a:o.help?.trim()||`Treat ${o.label} As The Decision Point. If It Doesn't Clear Your Own Threshold, Change One Input At A Time And Watch What Moves.`}),d.push({q:"Is My Data Saved?",a:"Your Entries Stay In Your Session Unless You Choose To Save The Result To Your Club Profile."}),d}function Me(s){const a=s.schema??{fields:[],outputs:[]};return a.fields.length+a.outputs.length*2+(a.interpretations?.length??0)}function $e(s,a,o){const d=Me(s),r=a.nodes.filter(n=>(n.access.mode==="purchase"||n.access.mode==="upgrade"||n.access.mode==="plan"||n.access.mode==="membership")&&n.type!=="app").length,c={label:"Free For Every Member",pricing:{model:"free"},access:{mode:"free"}},p={label:"Included With Membership",pricing:{model:"free"},access:{mode:"membership"}},m=d>=16?49:d>=10?29:19,x={label:`Paid Upgrade, $${m} One-Time`,pricing:{model:"one-time",price:m},access:{mode:"purchase",offer:{price:m,ctaLabel:"Unlock App",benefit:`Full Access To ${s.name}.`}}};return d>=12&&o>=8?{...x,headline:`Sell It, $${m} One-Time`,rationale:`This Is A Substantial Tool (${d} Moving Parts) And ${o} Members Have Already Shown They Need It. A One-Time Upgrade Price
1s It Like Software, Not Like A Download.`,alternatives:[p,c]}:r>0&&d>=6?{...p,headline:"Include It With Membership",rationale:"You Already Sell Paid Access Elsewhere. Bundling This Tool Makes The Membership Harder To Cancel And Costs You Nothing To Deliver.",alternatives:[x,c]}:{...c,headline:"Give It Away",rationale:"It's Light Enough To Be A Great First Experience. Free Apps Are The Cheapest Way To Show Members How You Think. Charge For The Deeper One Later.",alternatives:[p,x]}}function Ee(s){const{signals:a,isDemo:o}=V(),d=[...R(s).toLowerCase().split(/\s+/),s.kind].filter(x=>x.length>3),c=Q(a,60).filter(x=>x.topics.some(n=>d.some(u=>n.includes(u)||u.includes(n)))),p=new Set(c.map(x=>x.memberId)),m=c.map(x=>x.text).filter(x=>!!x).slice(0,2);return p.size===0?{count:0,label:"Everyone, To Start",reason:"No One Has Asked For This Yet. Launch It To The Whole Club And I'll Watch Who Actually Uses It.",quotes:[]}:{count:p.size,label:`${p.size} Members`,reason:`${p.size} Members Have Raised This Topic In The Last 60 Days${o?" (Sample Data)":""}. They're The People To Tell First.`,quotes:m}}function We(s,a,o){const d=o.nodes.filter(c=>c.type==="course"||c.type==="coaching").filter(c=>c.access.mode!=="free").slice(0,2),r=[];return a.access.mode==="free"?r.push("Use The Result Screen As The Handoff. When A Member Gets Their Number, Offer The Content That Explains What To Do With It."):r.push("Offer It Free For Seven Days, Then Ask For The Upgrade Once They've Seen Their First Real Result."),d.length&&r.push(`Bundle It With ${d.map(c=>c.title).join(" And ")} So The Tool Sells The Program, Not The Other Way Around.`),r.push("Send Members Who Complete It Twice A Note From Your AI Persona Offering The Next Step."),r}function Be(s,a){const o=Ee(s),d=$e(s,a,o.count),r=we(a,K("app",s.id),{limit:6});return{description:Y(s),onboarding:De(s),help:ze(s),pricing:d,audience:o,placements:r,upsell:We(s,d,a)}}function Ue({app:s}){const{graph:a}=X(),[o,d]=g.useState(0),r=g.useMemo(()=>Be(s,a),[s,a,o]),[c,p]=g.useState({}),m=l=>p(t=>({...t,[l]:!0}));function x(){f(s.id,{description:r.description}),m("description")}function n(){f(s.id,{config:{...s.config,onboarding:r.onboarding,help:r.help}}),m("onboarding")}function u(l=r.pricing.access,t=r.pricing.pricing){f(s.id,{access:l,pricing:t}),m("pricing")}function b(l){le(l),m("placements")}return e.jsxs("div",{className:"apx-kit",children:[e.jsxs("div",{className:"apx-kit-head",children:[e.jsxs("div",{children:[e.jsx("h3",{children:" AI Launch Kit"}),e.jsx("p",{className:"apx-muted",children:"I looked at this tool, your content and what members have been asking for. Here's everything i'd do next. Nothing goes live until you say so."})]}),e.jsxs("button",{className:"apx-mini",onClick:()=>d(l=>l+1),children:[e.jsx(J,{size:13})," Rethink"]})]}),e.jsxs(T,{icon:e.jsx($,{size:14}),title:"How I'd Describe It",done:c.description,children:[e.jsx("p",{className:"apx-kit-copy",children:r.description}),e.jsx("button",{className:"apx-mini",onClick:x,disabled:c.description,children:c.description?e.jsxs(e.Fragment,{children:[e.jsx(C,{size:13})," Applied"]}):"Use This Description"})]}),e.jsxs(T,{icon:e.jsx(Z,{size:14}),title:"Member Onboarding And Help",done:c.onboarding,children:[e.jsx("ol",{className:"apx-kit-steps",children:r.onboarding.map(l=>e.jsx("li",{children:l},l))}),e.jsx("div",{className:"apx-kit-faq",children:r.help.map(l=>e.jsxs("details",{children:[e.jsx("summary",{children:l.q}),e.jsx("p",{children:l.a})]},l.q))}),e.jsx("button",{className:"apx-mini",onClick:n,disabled:c.onboarding,children:c.onboarding?e.jsxs(e.Fragment,{children:[e.jsx(C,{size:13})," Added To The App"]}):"Add To The App"})]}),e.jsxs(T,{icon:e.jsx(ee,{size:14}),title:"Free Or Paid",done:c.pricing,children:[e.jsx("p",{className:"apx-kit-lead",children:r.pricing.headline}),e.jsx("p",{className:"apx-kit-copy",children:r.pricing.rationale}),e.jsxs("div",{className:"apx-kit-opts",children:[e.jsx("button",{className:"apx-primary-btn",onClick:()=>u(),disabled:c.pricing,children:c.pricing?"Applied":`Set To ${E(r.pricing.access)}`}
1),r.pricing.alternatives.map(l=>e.jsx("button",{className:"apx-mini",disabled:c.pricing,onClick:()=>u(l.access,l.pricing),children:l.label},l.label))]}),e.jsx("p",{className:"apx-muted",children:"You can change this any time under access and pricing."})]}),e.jsxs(T,{icon:e.jsx(se,{size:14}),title:"Who It's For",children:[e.jsx("p",{className:"apx-kit-lead",children:r.audience.label}),e.jsx("p",{className:"apx-kit-copy",children:r.audience.reason}),r.audience.quotes.map((l,t)=>e.jsxs("p",{className:"apx-kit-quote",children:["â",l,"â"]},t))]}),e.jsx(T,{icon:e.jsx(ae,{size:14}),title:"Where It Belongs",done:c.placements,children:r.placements.length===0?e.jsx("p",{className:"apx-muted",children:"Nothing to connect it to yet. Add a course or resource and I'll find the spots."}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"apx-kit-copy",children:["I Found ",r.placements.length," Places Where This Tool Would Make Existing Content Better."]}),e.jsx("ul",{className:"apx-kit-places",children:r.placements.map((l,t)=>e.jsxs("li",{children:[e.jsx("strong",{children:l.sourceTitle}),e.jsx("span",{children:l.reason})]},t))}),e.jsx("button",{className:"apx-mini",onClick:()=>b(r.placements),disabled:c.placements,children:c.placements?e.jsxs(e.Fragment,{children:[e.jsx(C,{size:13})," Sent For Review"]}):"Add These Connections"}),e.jsx("p",{className:"apx-muted",children:"Connections land in AIVA â Settings â Connections for approval before members see them."})]})}),e.jsx(T,{icon:e.jsx(ne,{size:14}),title:"How I'd Grow Revenue Around It",children:e.jsx("ul",{className:"apx-kit-places",children:r.upsell.map(l=>e.jsx("li",{children:e.jsx("span",{children:l})},l))})})]})}function T({icon:s,title:a,done:o,children:d}){return e.jsxs("section",{className:`apx-kit-sec${o?" is-done":""}`,children:[e.jsxs("h4",{children:[s," ",a,o&&e.jsxs("em",{children:[e.jsx(C,{size:12})," Done"]})]}),d]})}function Re({app:s}){const{clubId:a}=W(),[o,d]=g.useState([]),[r,c]=g.useState(!0),[p,m]=g.useState(null),[x,n]=g.useState(null);g.useEffect(()=>{let l=!0;if(!a){c(!1);return}return c(!0),ke({data:{clubId:a,appId:s.id}}).then(t=>{l&&(t.ok?d(t.suggestions):m(t.error))}).catch(()=>l&&m("Suggestions Could Not Be Loaded.")).finally(()=>l&&c(!1)),()=>{l=!1}},[a,s.id]);async function u(l,t){if(a){n(l.lessonId);try{const h=await Te({data:{clubId:a,appId:s.id,lessonId:l.lessonId,decision:t,reason:l.reason}});h.ok?d(i=>i.map(j=>j.lessonId===l.lessonId?{...j,status:t==="add"?"added":"dismissed"}:j)):m(h.error)}catch{m("That Change Could Not Be Saved.")}finally{n(null)}}}const b=o.filter(l=>l.status==="open");return e.jsxs("section",{className:"apx-build-sec",children:[e.jsx("h4",{children:" Where This App Would Help"}),r?e.jsxs("p",{className:"apx-muted",children:[e.jsx(O,{size:13,className:"apx-spin"})," Checking Your Lessonsâ¦"]}):p?e.jsx("p",{className:"apx-warn",children:p}):o.length===0?e.jsx("p",{className:"apx-muted",children:"No lessons cover this work yet. Once you publish content about it, AIVA will suggest where to add the app."}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"apx-muted",children:["You Have ",b.length||o.length," ",(b.length||o.length)===1?"Lesson":"Lessons"," Where ",s.name," Would Help. Adding It Attaches A Link To The Lesson. Your Content Is Never Rewritten."]}),e.jsx("div",{className:"aop-list",children:o.map(l=>e.jsxs("div",{className:"aop-card",children:[e.jsx("header",{className:"aop-head",children:e.jsxs("div",{children:[e.jsxs("span",{className:"aop-pattern",children:[e.jsx($,{size:11})," ",l.courseTitle]}),e.jsx("h4",{children:l.lessonTitle}),e.jsx("p",{className:"aop-problem",children:l.reason})]})}),l.status==="open"?e.jsxs("footer",{className:"aop-actions",children:[e.jsxs("button",{className:"apx-primary-btn",disabled:x===l.lessonId,onClick:()=>{u(l,"add")},children:[x===l.lessonId?e.jsx(O,{size:13,className:"apx-spin"}):e.jsx(C,{size:13})," Add To Lesson"]}),e.jsxs("button",{className:"apx-mini",disabled:x===l.lessonId,onClick:()=>{u(l,"dismiss")},children:[e.jsx(ie,{size:13})," Not Here"]})]}):e.jsx("span",{className:"aop-chip",children:l.status==="added"?"Added To This Lesson":"Dismissed"})]},l.lessonId))})]})]})}const Ye=["free","membership","plan","course","coaching","purchase","upgrade","admin","custom"];function _e({policy:s,onChange:a,plans:o,courses:d,programs:r,productNoun:c="App"}){const p=s.offer??{price:29},m=s.mode==="purchase"||s.mode==="upgrade"||s.mode==="custom",x=s.mode==="plan"||s.mode==="upgrade"||s.mode==="custom",n=s.mode==="course"||s.mode==="upgrade"||s.mode==="custom",u=s.mode==="coaching"||s.mode==="upgrade"||s.mode==="custom",b=g.useMemo(()=>E(s),[s]),l=i=>a({...s,...i}),t=i=>l({offer:{...p,...i}}),h=(i,j)=>(i??[]).includes(j)?(i??[]).filter(k=>k!==j):[...i??[],j];return e.jsxs("div",{className:"cmx-editor",children:[e.jsx("div",{className:"cmx-modes",children:Ye.map(i=>e.jsxs("button",{className:`cmx-mode${s.mode===i?" is-on":""}`,onClick:()=>a(He(s,i)),children:[e.jsx("strong",{children:te[i]}),e.jsx("em",{children:ce[i]})]},i))}),x&&e.jsx(P,{title:"Eligible Plans",hint:s.mode==="upgrade"?"Members On These Plans Get It Free.":"Only These Plans Get Access.",options:o.map(i=>({id:i,label:`${i} Plan`})),selected:s.plans??[],onToggle:i=>l({plans:h(s.plans,i)})}),n&&e.jsx(P,{title:"Included With Courses",hint:"Enrolling In Any Of These Unlocks It.",options:d,selected:s.courseIds??[],onToggle:i=>l({courseIds:h(s.courseIds,i),courseLabels:{...s.courseLabels,[i]:d.find(j=>j.id===i)?.label??i}})}),u&&e.jsx(P,{title:"Included With Coaching Programs",hint:"Joining Any Of These Unlocks It.",options:r,selected:s.programIds??[],onToggle:i=>l({programIds:h(s.programIds,i),programLabels:{...s.programLabels,[i]:r.find(j=>j.id===i)?.label??i}})}),s.mode==="custom"&&e.jsxs("label",{className:"apx-check-inline",children:[e.jsx("input",{type:"checkbox",checked:(s.rules??[]).some(i=>i.kind==="purchase"),onChange:i=>l({rules:i.target.checked?[...s.rules??[],{kind:"purchase"}]:(s.rules??[]).filter(j=>j.kind!=="purchase")})}),"Also Allow A One-Time Purchase"]}),m&&re({...s,offer:p})&&e.jsxs("div",{className:"cmx-offer",children:[e.jsx("h4",{children:"Purchase Details"}),e.jsxs("div",{className:"apx-build-grid",children:[e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Price"}),e.jsx("input",{type:"number",min:0,value:p.price,onChange:i=>t({price:Number(i.target.value)})})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Billing"}),e.jsxs("select",{value:p.interval??"one-time",onChange:i=>t({interval:i.target.value==="one-time"?void 0:i.target.value}),children:[e.jsx("option",{value:"one-time",children:"One-Time"}),e.jsx("option",{value:"month",children:"Monthly"}),e.jsx("option",{value:"year",children:"Yearly"})]})]})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Short Benefit"}
1),e.jsx("input",{value:p.benefit??"",placeholder:`What This ${c} Helps Them Do`,onChange:i=>t({benefit:i.target.value})})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Purchase Description"}),e.jsx("textarea",{rows:3,value:p.purchaseDescription??"",placeholder:"What They Get, And Why It's Worth It.",onChange:i=>t({purchaseDescription:i.target.value})})]}),e.jsxs("label",{className:"apx-field",children:[e.jsx("span",{className:"apx-field-l",children:"Upgrade Button"}),e.jsx("input",{value:p.ctaLabel??"",placeholder:`Unlock ${c}`,onChange:i=>t({ctaLabel:i.target.value})})]})]}),e.jsxs("p",{className:"cmx-preview",children:["Members See: ",e.jsx("strong",{children:b})]})]})}function P({title:s,hint:a,options:o,selected:d,onToggle:r}){return e.jsxs("div",{className:"cmx-pick",children:[e.jsx("span",{className:"cmx-pick-t",children:s}),e.jsx("span",{className:"cmx-pick-h",children:a}),o.length===0?e.jsx("p",{className:"apx-muted",children:"Nothing to choose from yet."}):e.jsx("div",{className:"cmx-pick-list",children:o.map(c=>e.jsxs("label",{className:`cmx-pick-item${d.includes(c.id)?" is-on":""}`,children:[e.jsx("input",{type:"checkbox",checked:d.includes(c.id),onChange:()=>r(c.id)}),c.label]},c.id))})]})}function He(s,a){const o={...s,mode:a};return(a==="purchase"||a==="upgrade")&&(o.offer=s.offer??{price:29,ctaLabel:"Unlock App"}),(a==="free"||a==="admin"||a==="membership")&&delete o.offer,o}function qe(){const s=B().membership,a=[];return s?.freeLabel&&a.push({id:s.freeLabel,label:s.freeLabel}),s?.hasPaid&&s.paidLabel&&a.push({id:s.paidLabel,label:s.paidLabel}),a.length?a:[{id:"Free",label:"Free"},{id:"Pro",label:"Pro"},{id:"Founding",label:"Founding"}]}function Ge(){try{return oe().map(s=>({id:s.id,label:s.title}))}catch{return[]}}async function Ke(s){if(!s)return[];try{return(await de(s)).entries.map(o=>({id:o.id,label:o.name}))}catch{return[]}}function ss(){const{appId:s}=pe({from:"/app/apps/$appId/edit"}),{isAdmin:a}=he(),o=U("apps","Apps"),d=Ne(),[r,c]=g.useState(S.accent),[p,m]=g.useState("build"),x=Ae();g.useEffect(()=>(c(B().coverColor||S.accent),ue(b=>c(b.coverColor||S.accent))),[]);const n=g.useMemo(()=>d.find(b=>b.id===s)??d.find(b=>b.id===me(s)),[d,s]);if(!a)return e.jsx("div",{className:"pg",children:e.jsxs("div",{className:"apx-empty",children:[e.jsx("strong",{children:"Admins Only"}),e.jsx("span",{children:"Switch To Admin View To Edit Apps."})]})});if(!n)return e.jsxs("div",{className:"pg",children:[e.jsxs(L,{to:"/app/apps",className:"apx-back",children:[e.jsx(D,{size:14})," ",o]}),e.jsxs("div",{className:"apx-empty",children:[e.jsx("strong",{children:"App Not Found"}),e.jsx("span",{children:"It May Have Been Removed."})]})]});const u=x.statsFor(n.id);return e.jsxs("div",{className:"pg",children:[e.jsxs("div",{className:"apx-edit-bar",children:[e.jsxs(L,{to:"/app/apps",className:"apx-back",children:[e.jsx(D,{size:14})," ",o]}),e.jsxs("div",{className:"apx-edit-actions",children:[e.jsxs(L,{to:"/app/apps/$appId",params:{appId:n.id},className:"apx-mini",children:[e.jsx(z,{size:13})," Preview As Member"]}),e.jsx("button",{className:`apx-status${n.status==="published"?" is-live":""}`,onClick:()=>{Ce(n)},children:n.status==="published"?"Published":"Draft"})]})]}),e.jsxs("div",{className:"pg-head",children:[e.jsx("h1",{className:"pg-title",children:n.name}),e.jsx("p",{className:"pg-sub",children:n.source==="ai"?"Drafted With AI. Every Field, Formula And Label Is Yours To Change.":"Changes Save As You Type."})]}),e.jsxs("div",{className:"apx-tabs",children:[e.jsxs(A,{on:p==="build",onClick:()=>m("build"),children:[e.jsx(xe,{size:13})," Build"]}),e.jsxs(A,{on:p==="preview",onClick:()=>m("preview"),children:[e.jsx(z,{size:13})," Preview"]}),e.jsxs(A,{on:p==="settings",onClick:()=>m("settings"),children:[e.jsx(je,{size:13})," Access & Pricing"]}),e.jsxs(A,{on:p==="placement",onClick:()=>m("placement"),children:[e.jsx(be,{size:13})," Placement"]}),e.jsxs(A,{on:p==="launch",onClick:()=>m("launch"),children:[" ","AI Launch Kit"]}),e.jsxs(A,{on:p==="usage",onClick:()=>m("usage"),children:[e.jsx(ge,{size:13})," Usage"]})]}),p==="build"&&e.jsx(Fe,{app:n}),p==="preview"&&e.jsxs("div",{className:"apx-preview-frame",children:[e.jsx("p",{className:"apx-muted",children:"This is exactly what A member sees, in your club's colours."}),e.jsx(ve,{app:n,accent:r})]}),p==="settings"&&e.jsx(Ve,{app:n}),p==="placement"&&e.jsx(Re,{app:n}),p==="launch"&&e.jsx(Ue,{app:n}),p==="usage"&&e.jsxs("div",{className:"apx-totals",children:[e.jsxs("div",{className:"apx-total",children:[e.jsx("span",{children:"Opens"}),e.jsx("strong",{children:u.opens})]}),e.jsxs("div",{className:"apx-total",children:[e.jsx("span",{children:"Completions"}),e.jsx("strong",{children:u.completions})]}),e.jsxs("div",{className:"apx-total",children:[e.jsx("span",{children:"Completion Rate"}),e.jsxs("strong",{children:[u.completionRate,"%"]})]}),e.jsxs("div",{className:"apx-total",children:[e.jsx("span",{children:"Members Reached"}),e.jsx("strong",{children:u.members})]}),e.jsxs("div",{className:"apx-total",children:[e.jsx("span",{children:"Last Used"}),e.jsx("strong",{children:u.lastUsedAt?new Date(u.lastUsedAt).toLocaleDateString():"Not Yet"})]})]})]})}function A({on:s,onClick:a,children:o}){return e.jsx("button",{className:`apx-tab${s?" is-on":""}`,onClick:a,children:o})}function Ve({app:s}){const a=U("apps","Apps"),o=g.useMemo(()=>qe().map(m=>m.id),[]),d=g.useMemo(()=>Ge(),[]),{clubId:r}=W(),[c,p]=g.useState([]);return g.useEffect(()=>{let m=!1;return Ke(r).then(x=>{m||p(x)}),()=>{m=!0}},[r]),e.jsxs("div",{className:"apx-build",children:[e.jsxs("section",{className:"apx-build-sec",children:[e.jsx("h3",{children:"Access And Pricing"}),e.jsx(_e,{policy:fe(s.access),onChange:m=>f(s.id,{access:m}),plans:o,courses:d,programs:c,productNoun:"App"})]}),e.jsxs("section",{className:"apx-build-sec",children:[e.jsx("h3",{children:"Visibility"}),e.jsxs("label",{className:"apx-check-inline",children:[e.jsx("input",{type:"checkbox",checked:s.listed!==!1,onChange:m=>f(s.id,{listed:m.target.checked})}),"Show In The ",a," List"]}),e.jsx("p",{className:"apx-muted",children:"Hidden apps still work for anyone with a direct link. Useful for funnels and course lessons."})]}),s.prompt&&e.jsxs("section",{className:"apx-build-sec",children:[e.jsx("h3",{children:" Built From"}),e.jsxs("p",{className:"apx-muted",children:['"',s.prompt,'"']})]})]})}export{ss as component};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.