1import{u as X,k as Y,m as Z,o,c as ee,w,a as k,b as r,h as te,d as e,l as R,s as S,e as p,f as U,g as b,n as h,v as _,i as n,t as a,j as u,F as le,r as re,O as j,T as D,p as g,z as N}from"./app-Cxaof6Lh.js";import{_ as se}from"./AdminLayout-Bk4voJpP.js";import{Q as L}from"./quill.snow-DeKICNsM.js";import{Q as z}from"./quill-better-table-Bff0fNka.js";import{_ as oe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./useFavorites-Ba-LDAsw.js";import"./useToast-hLUM2ACt.js";import"./Toast-ZUFVJ62-.js";const ne={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6 sm:mb-8"},ae={class:"bg-white rounded-xl shadow-sm border border-neutral-200 p-6"},ie={class:"space-y-4"},ue={key:0,class:"mt-1 text-sm text-red-600"},de={key:0,class:"mt-1 text-sm text-red-600"},me={key:0,class:"mt-1 text-sm text-red-600"},ce={key:0,class:"mt-1 text-sm text-red-600"},pe=["value"],be={key:0,class:"mb-4"},xe=["src"],fe=["required"],ge={key:1,class:"mt-1 text-sm text-red-600"},ve={class:"flex justify-end gap-3"},ye=["disabled"],we={key:0},ke={key:1},he={key:0,class:"w-full h-[400px] sm:h-[500px] lg:h-[600px] relative overflow-hidden"},_e=["src","alt"],Ce={class:"absolute bottom-0 left-0 right-0 p-8 sm:p-12 lg:p-16"},Te={class:"max-w-4xl mx-auto"},qe={key:0,class:"mb-4"},Me={class:"px-4 py-2 bg-white/90 backdrop-blur-sm rounded-full text-sm font-semibold text-primary-700"},Ie={class:"text-3xl sm:text-4xl lg:text-5xl font-bold text-white mb-4"},Se={class:"text-white/90 max-w-2xl"},Ue={key:0,class:"mb-8"},Le={key:0,class:"mb-4"},Ve={class:"px-4 py-2 bg-primary-100 text-primary-700 rounded-full text-sm font-semibold"},Be={class:"text-4xl sm:text-5xl font-bold text-neutral-900 mb-4"},Pe={class:"text-neutral-600 max-w-2xl"},Re=["innerHTML"],je={class:"relative min-h-screen flex items-center justify-center p-4"},De={class:"relative bg-white rounded-xl shadow-xl max-w-md w-full"},Ne={class:"p-6"},ze={class:"space-y-4"},Ee={class:"text-sm text-neutral-600"},Fe={__name:"Create",props:{categories:{type:Array,default:()=>[]}},setup(V){const E=V,l=X({title:"",slug:"",excerpt:"",content:"",category_id:null,status:"draft",cover_image:null});let d=null,B=null,T=null;const m=g(null),q=g(!1),v=g(!1),x=g(3),f=g(3);T=v;const M=g(!1),F=()=>{if(l.title){const i=l.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");M.value||(l.slug=i)}},H=()=>{M.value||F()},A=()=>{M.value=!0},Q=i=>{const t=i.target.files[0];if(t){l.cover_image=t;const s=new FileReader;s.onload=c=>{m.value=c.target.result},s.readAsDataURL(t)}},O=()=>{l.cover_image=null,m.value=null},$=()=>{d&&(l.content=d.root.innerHTML),q.value=!0},P=()=>{q.value=!1},G=()=>{const i=d.getModule("better-table");i&&(i.insertTable(x.value,f.value),v.value=!1,x.value=3,f.value=3)},I=()=>{v.value=!1,x.value=3,f.value=3},J=()=>{d&&(l.content=d.root.innerHTML),l.post(S("admin.tutorials.store"),{forceFormData:!0})},K=()=>d?d.root.innerHTML:l.content||"",W=N(()=>K()||'<p class="text-neutral-500 italic">No content yet...</p>'),C=N(()=>l.category_id?E.categories.find(i=>i.id===l.category_id):null);return Y(()=>{L.register({"modules/better-table":z},!0);const i=L.import("ui/icons");i.table='<svg viewBox="0 0 18 18"><rect class="ql-stroke" height="12" width="12" x="3" y="3"></rect><line class="ql-stroke" x1="9" x2="9" y1="3" y2="15"></line><line class="ql-stroke" x1="3" x2="15" y1="9" y2="9"></line></svg>',B=document.getElementById("quill-editor"),B&&(d=new L("#quill-editor",{theme:"snow",modules:{toolbar:{container:[[{header:[1,2,3,4,5,6,!1]}],["bold","italic","underline","strike"],[{list:"ordered"},{list:"bullet"}],[{script:"sub"},{script:"super"}],[{indent:"-1"},{indent:"+1"}],[{direction:"rtl"}],[{size:["small",!1,"large","huge"]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],["clean"],["link","image","video"],["table"]],handlers:{table:function(){T&&(T.value=!0)}}},"better-table":{operationMenu:{items:["insertColumnLeft","insertColumnRight","insertRowUp","insertRowDown","mergeCells","splitCell","deleteColumn","deleteRow","deleteTable"],color:"#fff"}},keyboard:{bindings:z.keyboardBindings}}}),setTimeout(()=>{const t=d.getModule("toolbar");
1if(t){const s=t.container;let c=s.querySelector(".ql-table");if(c||(c=s.querySelector('button[data-value="table"]')),!c){const y=s.querySelectorAll("button");c=y[y.length-1]}c&&c.addEventListener("click",y=>{y.preventDefault(),y.stopPropagation(),v.value=!0})}},500))}),Z(()=>{d&&(d=null)}),(i,t)=>(o(),ee(se,{title:"Create Tutorial"},{default:w(()=>[k(r(te),{title:"Create Tutorial"}),e("div",null,[e("div",ne,[t[8]||(t[8]=e("div",null,[e("h1",{class:"text-2xl sm:text-3xl font-bold text-neutral-900"},"Create Tutorial")],-1)),k(r(R),{href:r(S)("admin.tutorials.index"),class:"px-4 py-2 bg-white text-neutral-700 hover:bg-neutral-50 border border-neutral-300 rounded-lg text-sm font-medium transition-colors"},{default:w(()=>[...t[7]||(t[7]=[p(" Back to Tutorials ",-1)])]),_:1},8,["href"])]),e("form",{onSubmit:U(J,["prevent"]),class:"space-y-6"},[e("div",ae,[t[21]||(t[21]=e("h2",{class:"text-lg font-semibold text-neutral-900 mb-4"},"Tutorial Details",-1)),e("div",ie,[e("div",null,[t[9]||(t[9]=e("label",{for:"title",class:"block text-sm font-medium text-neutral-700 mb-2"},[p(" Title "),e("span",{class:"text-red-500"},"*")],-1)),b(e("input",{id:"title","onUpdate:modelValue":t[0]||(t[0]=s=>r(l).title=s),type:"text",required:"",onInput:H,class:h(["w-full px-4 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent",{"border-red-500":r(l).errors.title}])},null,34),[[_,r(l).title]]),r(l).errors.title?(o(),n("p",ue,a(r(l).errors.title),1)):u("",!0)]),e("div",null,[t[10]||(t[10]=e("label",{for:"slug",class:"block text-sm font-medium text-neutral-700 mb-2"}," Slug ",-1)),b(e("input",{id:"slug","onUpdate:modelValue":t[1]||(t[1]=s=>r(l).slug=s),type:"text",onInput:A,class:h(["w-full px-4 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent",{"border-red-500":r(l).errors.slug}]),placeholder:"Auto-generated from title if left empty"},null,34),[[_,r(l).slug]]),r(l).errors.slug?(o(),n("p",de,a(r(l).errors.slug),1)):u("",!0),t[11]||(t[11]=e("p",{class:"mt-1 text-xs text-neutral-500"},"Leave empty to auto-generate from title",-1))]),e("div",null,[t[12]||(t[12]=e("label",{for:"excerpt",class:"block text-sm font-medium text-neutral-700 mb-2"},[p(" Excerpt "),e("span",{class:"text-red-500"},"*")],-1)),b(e("textarea",{id:"excerpt","onUpdate:modelValue":t[2]||(t[2]=s=>r(l).excerpt=s),rows:"2",required:"",maxlength:"500",class:h(["w-full px-4 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent",{"border-red-500":r(l).errors.excerpt}]),placeholder:"Short subtitle shown under the title, e.g. 'Start your project in minutes...'"},null,2),[[_,r(l).excerpt]]),r(l).errors.excerpt?(o(),n("p",me,a(r(l).errors.excerpt),1)):u("",!0)]),e("div",null,[t[13]||(t[13]=e("label",{class:"block text-sm font-medium text-neutral-700 mb-2"},[p(" Content "),e("span",{class:"text-red-500"},"*")],-1)),t[14]||(t[14]=e("div",{id:"quill-editor",style:{"min-height":"400px"}},null,-1)),r(l).errors.content?(o(),n("p",ce,a(r(l).errors.content),1)):u("",!0)]),e("div",null,[t[16]||(t[16]=e("label",{for:"category_id",class:"block text-sm font-medium text-neutral-700 mb-2"}," Category ",-1)),b(e("select",{id:"category_id","onUpdate:modelValue":t[3]||(t[3]=s=>r(l).category_id=s),class:"w-full px-4 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent"},[t[15]||(t[15]=e("option",{value:null},"No Category",-1)),(o(!0),n(le,null,re(V.categories,s=>(o(),n("option",{key:s.id,value:s.id},a(s.name),9,pe))),128))],512),[[j,r(l).category_id]])]),e("div",null,[t[18]||(t[18]=e("label",{for:"status",class:"block text-sm font-medium text-neutral-700 mb-2"},[p(" Status "),e("span",{class:"text-red-500"},"*")],-1)),b(e("select",{id:"status","onUpdate:modelValue":t[4]||(t[4]=s=>r(l).status=s),required:"",class:"w-full px-4 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent"},[...t[17]||(t[17]=[e("option",{value:"draft"},"Draft",-1),e("option",{value:"published"},"Published",-1)])],512),[[j,r(l).status]]),t[19]||(t[19]=e("p",{class:"mt-1 text-xs text-neutral-500"},"Only published tutorials are visible to users.",-1))]),e("div",null,[t[20]||(t[20]=e("label",{for:"cover_image",class:"block text-sm font-medium text-neutral-700 mb-2"},[p(" Cover Image "),e("span",{class:"text-red-500"},"*")],-1)),m.value?(o(),n("div",be,[e("img",{src:m.value,alt:"Cover preview",class:"max-w-xs rounded-lg border border-neutral-300"},null,8,xe),e("button",{type:"button",onClick:O,class:"mt-2 px-3 py-1 bg-red-100 text-red-700 hover:bg-red-200 rounded text-sm transition-colors"}," Remove Image ")])):u("",!0),e("input",{id:"cover_image",type:"file",accept:"image/*",required:!r(l).cover_image,onChange:Q,class:h(["w-full px-4 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent",{"border-red-500":r(l).errors.cover_image}])},null,42,fe),r(l).errors.cover_image?(o(),n("p",ge,a(r(l).errors.cover_image),1)):u("",!0)])])]),e("div",ve,[k(r(R),{href:r(S)("admin.tutorials.index"),class:"px-6 py-2 bg-white text-neutral-700 hover:bg-neutral-50 border border-neutral-300 rounded-lg text-sm font-medium transition-colors"},{default:w(()=>[...t[22]||(t[22]=[p(" Cancel ",-1)])]),_:1},8,["href"]),e("button",{type:"button",onClick:$,class:"px-6 py-2 bg-neutral-100 text-neutral-700 hover:bg-neutral-200 rounded-lg text-sm font-medium transition-colors flex items-center gap-2"},[...t[23]||(t[23]=[e("span",{class:"material-icons text-lg"},"visibility",-1),p(" Preview ",-1)])]),e("button",{type:"submit",disabled:r(l).processing,class:"px-6 py-2 bg-primary-600 text-white hover:bg-primary-700 rounded-lg text-sm font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},[r(l).processing?(o(),n("span",we,"Creating...")):(o(),n("span",ke,"Create Tutorial"))],8,ye)])],32),k(D,{"enter-active-class":"transition ease-out duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition ease-in duration-150","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:w(()=>[q.value?(o(),n("div",{key:0,class:"fixed inset-0 z-50 overflow-y-auto bg-white",onClick:U(P,["self"])},[e("div",{class:"fixed top-4 right-4 z-10"},[e("button",{onClick:P,class:"w-10 h-10 flex items-center justify-center bg-white/90 backdrop-blur-sm text-neutral-700 hover:bg-white rounded-full shadow-lg transition-colors"},[...t[24]||(t[24]=[e("span",{class:"material-icons text-lg"},"close",-1)])])]),m.value?(o(),n("div",he,[e("img",{src:m.value,alt:r(l).title||"Cover image",class:"w-full h-full object-cover"},null,8,_e),t[25]||(t[25]=e("div",{class:"absolute inset-0 bg-gradient-to-t from-black/60 to-transparent"},null,-1)),e("div",Ce,[e("div",Te,[C.value?(o(),n("div",qe,[e("span",Me,a(C.value.name),1)])):u("",!0),e("h1",Ie,a(r(l).title||"Untitled Tutorial"),1),e("p",Se,a(r(l).excerpt),1)])])])):u("",!0),e("article",{class:h(["max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12",{"mt-24"
1:!m.value}])},[m.value?u("",!0):(o(),n("div",Ue,[C.value?(o(),n("div",Le,[e("span",Ve,a(C.value.name),1)])):u("",!0),e("h1",Be,a(r(l).title||"Untitled Tutorial"),1),e("p",Pe,a(r(l).excerpt),1)])),e("div",{class:"prose prose-lg max-w-none mb-12 tutorial-content",innerHTML:W.value},null,8,Re)],2)])):u("",!0)]),_:1}),k(D,{"enter-active-class":"transition ease-out duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition ease-in duration-150","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:w(()=>[v.value?(o(),n("div",{key:0,class:"fixed inset-0 z-50 overflow-y-auto",onClick:U(I,["self"])},[t[30]||(t[30]=e("div",{class:"fixed inset-0 bg-black bg-opacity-50"},null,-1)),e("div",je,[e("div",De,[e("div",{class:"flex items-center justify-between p-6 border-b border-neutral-200"},[t[27]||(t[27]=e("h2",{class:"text-xl font-bold text-neutral-900"},"Insert Table",-1)),e("button",{onClick:I,class:"p-2 text-neutral-500 hover:text-neutral-700 hover:bg-neutral-100 rounded-lg transition-colors"},[...t[26]||(t[26]=[e("span",{class:"material-icons"},"close",-1)])])]),e("div",Ne,[e("div",ze,[e("div",null,[t[28]||(t[28]=e("label",{for:"table-rows",class:"block text-sm font-medium text-neutral-700 mb-2"}," Number of Rows ",-1)),b(e("input",{id:"table-rows","onUpdate:modelValue":t[5]||(t[5]=s=>x.value=s),type:"number",min:"1",max:"20",class:"w-full px-4 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent"},null,512),[[_,x.value,void 0,{number:!0}]])]),e("div",null,[t[29]||(t[29]=e("label",{for:"table-cols",class:"block text-sm font-medium text-neutral-700 mb-2"}," Number of Columns ",-1)),b(e("input",{id:"table-cols","onUpdate:modelValue":t[6]||(t[6]=s=>f.value=s),type:"number",min:"1",max:"20",class:"w-full px-4 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent"},null,512),[[_,f.value,void 0,{number:!0}]])]),e("div",Ee," Preview: "+a(x.value)+" rows à "+a(f.value)+" columns ",1)])]),e("div",{class:"flex justify-end gap-3 p-6 border-t border-neutral-200"},[e("button",{onClick:I,class:"px-6 py-2 bg-white text-neutral-700 hover:bg-neutral-50 border border-neutral-300 rounded-lg text-sm font-medium transition-colors"}," Cancel "),e("button",{onClick:G,class:"px-6 py-2 bg-primary-600 text-white hover:bg-primary-700 rounded-lg text-sm font-medium transition-colors"}," Insert Table ")])])])])):u("",!0)]),_:1})])]),_:1}))}},We=oe(Fe,[["__scopeId","data-v-2a27b03d"]]);export{We 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.