1import{e as x,u as M,v as I,i as T,w as $,o as f,a as e,A as B,B as g,D as c,C as k,k as a,R as h,c as S,t as b,j as C,T as D,P,r,q as m}from"./CwMcR19T.js";import{T as R}from"./Cww8eItP.js";import{_ as V}from"./DlAUqK2U.js";import"./CnLb32tY.js";const G={class:"il-field"},E={class:"il-field"},N={class:"tool-row"},q={class:"il-field"},A={class:"il-field"},F={key:0,class:"il-callout",role:"alert"},L={class:"tool-actions"},O=["disabled"],W={class:"tool-legal"},Y=["href"],j=["href"],y="Marketing Ideas Generator | IndieLogs",w="Generate practical marketing ideas for a startup based on your audience, budget, and current traction.",z={__name:"marketing",setup(H){const v=`${m}/tools/marketing`;x({title:y,description:w,ogTitle:y,ogDescription:w,ogImage:`${m}/img/marketing.webp`,ogUrl:v,twitterCard:"summary_large_image",twitterImage:`${m}/img/marketing.webp`}),M({link:[{key:"canonical",rel:"canonical",href:v}]});const s=r(""),i=r(""),u=r("0"),d=r("Under 100 users"),p=r(!1),n=r(""),_=I();async function U(){if(!s.value||!i.value){n.value="Add both the product and target market before generating ideas.";return}p.value=!0,n.value="";try{const l=await $fetch("/api/tools/generate",{method:"POST",body:{kind:"marketing",ideaDescription:s.value,targetMarket:i.value,monthlyMarketingBudget:u.value,currentUserBase:d.value}});if(!l?.id)throw new Error("The plan was not ready yet.");await _.push(`/tool/marketing/${l.id}`)}catch(l){console.error("Marketing plan generation failed",l),n.value="We could not create a growth plan right now. Please try again in a moment."}finally{p.value=!1}}return(l,t)=>(f(),T(R,{eyebrow:"Free founder tool · 02",title:"Build a marketing plan you can actually run",description:"Give the generator a clear product, audience, budget, and traction level. It creates a working set of marketing ideas for your next experiment.",number:"02","aside-title":"Start with one channel.","aside-description":"Good growth work is specific. Pick one idea, set a small success measure, then review what happened before adding more.",outcomes:["Ideas matched to your audience","Tactics sized to your budget","A short list for the next sprint"],note:"Generated suggestions are planning prompts, not performance guarantees."},{default:$(()=>[e("form",{class:"il-stack",onSubmit:B(U,["prevent"]),novalidate:""},[e("div",G,[t[4]||(t[4]=e("label",{for:"marketing-idea"},"What are you building?",-1)),g(e("textarea",{id:"marketing-idea","onUpdate:modelValue":t[0]||(t[0]=o=>c(s)?s.value=o:null),class:"il-input tool-textarea",required:"",maxlength:"2000",placeholder:"Describe the product, the problem it solves, and why it is useful."},null,512),[[k,a(s),void 0,{trim:!0}]])]),e("div",E,[t[5]||(t[5]=e("label",{for:"marketing-market"},"Who are you trying to reach?",-1)),g(e("input",{id:"marketing-market","onUpdate:modelValue":t[1]||(t[1]=o=>c(i)?i.value=o:null),class:"il-input",required:"",maxlength:"500",placeholder:"For example: independent designers who sell retainers"},null,512),[[k,a(i),void 0,{trim:!0}]])]),e("div",N,[e("div",q,[t[7]||(t[7]=e("label",{for:"marketing-users"},"Current user base",-1)),g(e("select",{id:"marketing-users","onUpdate:modelValue":t[2]||(t[2]=o=>c(d)?d.value=o:null),class:"il-input"},[...t[6]||(t[6]=[e("option",{value:"No users"},"No users",-1),e("option",{value:"Under 100 users"},"Under 100 users",-1),e("option",{value:"100-500 users"},"100â500 users",-1),e("option",{value:"501-1000 users"},"501â1,000 users",-1),e("option",{value:"1001-5000 users"},"1,001â5,000 users",-1),e("option",{value:"5001-10000 users"},"5,001â10,000 users",-1),e("option",{value:"10001 or more users"},"10,001+ users",-1)])],512),[[h,a(d)]])]),e("div",A,[t[9]||(t[9]=e("label",{for:"marketing-budget"},"Monthly marketing budget",-1)),g(e("select",{id:"marketing-budget","onUpdate:modelValue":t[3]||(t[3]=o=>c(u)?u.value=o:null),class:"il-input"},[...t[8]||(t[8]=[e("option",{value:"0"},"$0",-1),e("option",{value:"1-500"},"$1â500",-1),e("option",{value:"501-1000"},"$501â1,000",-1),e("option",{value:"1001-5000"},"$1,001â5,000",-1),e("option",{value:"5001-10000"},"$5,001â10,000",-1),e("option",{value:"10001 or more"},"$10,001+",-1)])],512),[[h,a(u)]])])]),a(n)?(f(),S("p",F,b(a(n)),1)):C("",!0),e("div",L,[e("button",{class:"il-action",type:"submit",disabled:a(p)},b(a(p)?"Preparing your planâ¦":"Generate a growth plan"),9,O),t[10]||(t[10]=e("span",{class:"tool-actions__hint"}
1,"No account required.",-1))]),e("p",W,[e("a",{href:a(D)},"Terms",8,Y),t[11]||(t[11]=e("span",{"aria-hidden":"true"},"·",-1)),e("a",{href:a(P)},"Privacy",8,j)])],32)]),_:1}))}},Z=V(z,[["__scopeId","data-v-bcfd4517"]]);export{Z as default};
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.