PageSourceSearch

https://manugeo.ai/assets/admin.content.articles._id-CunoxxDa.js

js manugeo.ai collected 2026-10-05 14:40:40 UTC 11,891 bytes, 6 lines download raw bytes

1import{bg as R,a as A,D as j,bh as S,bi as T,aY as M,r as x,j as n,F as E,L as z,V as L,al as P}from"./index-CnHApc00.js";import{f as $}from"./content-gen.functions-CARcaAwm.js";import{S as B,P as I,a as Q}from"./PublishConfirm-U8sOmXjF.js";import{R as D}from"./refresh-cw-BZCeRmk-.js";import{T as v}from"./trash-2-Dg5NHCVz.js";import{P as q}from"./plus-CAMdYWbf.js";import"./circle-check-DqODRjwN.js";import"./triangle-alert-CoSJkUWQ.js";function O(t){return{slug:t.slug,status:t.status,readingMinutes:t.readingMinutes,tags:t.tags.join(", "),languages:t.languages.join(", "),title_fr:t.title.fr,title_en:t.title.en,description_fr:t.description.fr,description_en:t.description.en,intro_fr:t.intro.fr,intro_en:t.intro.en,category_fr:t.category.fr,category_en:t.category.en,sections:t.sections.map(i=>({heading_fr:i.heading.fr,heading_en:i.heading.en,body_fr:i.body.fr.join(`
2`),body_en:i.body.en.join(`
3`)})),takeaways_fr:t.takeaways.fr.join(`
4`),takeaways_en:t.takeaways.en.join(`
5`),faq:t.faq.map(i=>({q_fr:i.q.fr,q_en:i.q.en,a_fr:i.a.fr,a_en:i.a.en}))}}function G(t,i){const d=o=>o.split(/\r?\n/).map(u=>u.trim()).filter(Boolean);return{id:i,slug:t.slug,status:t.status,readingMinutes:Math.max(1,Math.floor(t.readingMinutes)),tags:t.tags.split(",").map(o=>o.trim()).filter(Boolean),languages:t.languages.split(",").map(o=>o.trim()).filter(Boolean),title:{fr:t.title_fr,en:t.title_en},description:{fr:t.description_fr,en:t.description_en},intro:{fr:t.intro_fr,en:t.intro_en},category:{fr:t.category_fr,en:t.category_en},sections:t.sections.map(o=>({heading:{fr:o.heading_fr,en:o.heading_en},body:{fr:d(o.body_fr),en:d(o.body_en)}})),takeaways:{fr:d(t.takeaways_fr),en:d(t.takeaways_en)},faq:t.faq.map(o=>({q:{fr:o.q_fr,en:o.q_en},a:{fr:o.a_fr,en:o.a_en}}))}}function H(t){const i=t.title_fr.trim().length,d=t.title_en.trim().length,o=t.description_fr.trim().length,u=t.description_en.trim().length,g=t.sections.filter(e=>e.body_fr.trim()&&e.body_en.trim()).length;return[{label:"Slug défini",ok:/^[a-z0-9-]+$/.test(t.slug),hint:"Slug requis (minuscules, chiffres et tirets)."},{label:"Titre FR & EN présents",ok:!!t.title_fr&&!!t.title_en,hint:"Manque un titre bilingue."},{label:"Titres ≤ 60 caractères",ok:i>0&&d>0&&i<=60&&d<=60,hint:`FR ${i} · EN ${d} caractères.`},{label:"Meta descriptions 80–160 caractères",ok:o>=80&&o<=160&&u>=80&&u<=160,hint:`FR ${o} · EN ${u} caractères.`},{label:"Intro FR & EN rédigées",ok:t.intro_fr.trim().length>50&&t.intro_en.trim().length>50,hint:"Intro courte ou manquante dans une des langues."},{label:"Au moins 2 sections bilingues",ok:g>=2,hint:`${g} section(s) complète(s).`},{label:"FAQ (≥ 2 questions)",ok:t.faq.filter(e=>e.q_fr&&e.a_fr&&e.q_en&&e.a_en).length>=2,hint:"Une FAQ enrichie améliore l'AEO/GEO."},{label:"Takeaways présents",ok:!!t.takeaways_fr.trim()&&!!t.takeaways_en.trim()}]}function ee(){const{id:t}=R.useParams(),i=A(),d=j(S),o=j(T),u=j(M),g=j($),[e,a]=x.useState(null),[p,_]=x.useState(null),[k,f]=x.useState(null),[C,y]=x.useState(!1);async function F(){const r=await d({data:{id:t}});r&&a(O(r))}if(x.useEffect(()=>{F()},[t]),!e)return n.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[n.jsx(E,{className:"size-4 animate-spin"})," Chargement…"]});async function N(r){if(!e)return;const c=e;_("save"),f(null);try{const l=G({...c,status:r??c.status},t);await o({data:l}),a({...c,status:r??c.status}),f("✓ Sauvegardé")}catch(l){f(`✗ ${l?.message??"erreur"}`)}finally{_(null)}}return n.jsxs("div",{className:"space-y-6 max-w-4xl",children:[n.jsx("div",{className:"space-y-3",children:n.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[n.jsxs(z,{to:"/admin/content",className:"inline-flex items-center gap-1 text-xs font-mono uppercase tracking-widest text-primary-text",children:[n.jsx(L,{className:"size-3"})," Retour"]}),n.jsx(B,{status:e.status}),n.jsxs("div",{className:"ml-auto flex flex-wrap gap-2",children:[n.jsxs("button",{onClick:async()=>{if(confirm("Régénérer via IA (remplace le contenu, garde le slug) ?")){_("regen"),f(null);try{await g({data:{id:t}}),await F(),f("✓ Régénéré")}catch(r){f(`✗ ${r?.message??"erreur"}`)}finally{_(null)}}},disabled:!!p,className:"inline-flex items-center gap-2 px-3 py-1.5 rounded border border-border text-xs font-mono uppercase tracking-widest hover:text-primary-text disabled:opacity-50",children:[p==="regen"?n.jsx(E,{className:"size-3 animate-spin"}):n.jsx(D,{className:"size-3"}),"Régénérer IA"]}),n.jsx("button",{onClick:()=>N("draft"),disabled:!!p,className:"px-3 py-1.5 rounded border border-border text-xs font-mono uppercase tracking-widest hover:text-foreground disabled:opacity-50",children:"Brouillon"}),n.jsx("button",{onClick:()=>N("pending_review"),disabled:!!p,className:"px-3 py-1.5 rounded border border-warning/40 text-warning bg-warning/5 text-xs font-mono uppercase tracking-widest hover:bg-warning/10 disabled:opacity-50",children:"Envoyer en revue"}),n.jsx("button",{onClick:()=>y(!0),disabled:!!p,className:"px-3 py-1.5 rounded border border-primary bg-primary text-primary-foreground text-xs font-mono uppercase tracking-widest disabled:opacity-50",children:"Publier…"}),n.jsx("button",{onClick:async()=>{confirm("Supprimer définitivement ?")&&(await u({data:{id:t}}),i({to:"/admin/content"}))},disabled:!!p,className:"inline-flex items-center gap-1 px-3 py-1.5 rounded border border-destructive text-destructive-text text-xs font-mono uppercase tracking-widest disabled:opacity-50",children:n.jsx(v,{className:"size-3"})})]})]})}),n.jsx(I,{open:C,title:e.title_fr||e.slug,subtitle:`/${e.slug} · FR + EN`,checks:H(e),onCancel:()=>y(!1),onConfirm:async()=>{await N("published"),y(!1)}}),k&&n.jsx("div",{className:"text-xs font-mono border border-border bg-card rounded p-2",children:k}),n.jsxs(b,{title:"Métadonnées",children:[n.jsx(m,{label:"Slug",children:n.jsx("input",{value:e.slug,onChange:r=>a({...e,slug:r.target.value}),className:"input"})}),n.jsxs("div",{className:"grid md:grid-cols-2 gap-3",children:[n.jsx(m,{label:"Durée de lecture (min)",children:n.jsx("input",{type:"number",min:1,value:e.readingMinutes,onChange:r=>a({...e,readingMinutes:Number(r.target.value)}),className:"input"})}),n.jsx(m,{label:"Tags (ia, geo, fournisseurs)",children:n.jsx("input",{value:e.tags,onChange:r=>a({...e,tags:r.target.value}),className:"input"})})]}),n.jsxs("div",{className:"grid md:grid-cols-2 gap-3",children:[n.jsx(m,{label:"Catégorie FR",children:n.jsx("input",{value:e.category_fr,onChange:r=>a({...e,category_fr:r.target.value}),className:"input"})}),n.jsx(m,{label:"Category EN",children:n.jsx("input",{value:e.category_en,onChange:r=>a({...e,category_en:r.target.value}),className:"input"})})]})]}),n.jsxs(b,{title:"Titre & description",children:[n.jsx(w,{labelFr:"Titre FR",labelEn:"Title EN",fr:e.title_fr,en:e.title_en,onFr:r=>a({...e,title_fr:r}),onEn:r=>a({...e,title_en:r})}
5),n.jsx(h,{labelFr:"Description FR",labelEn:"Description EN",fr:e.description_fr,en:e.description_en,onFr:r=>a({...e,description_fr:r}),onEn:r=>a({...e,description_en:r}),rows:3}),n.jsx(h,{labelFr:"Intro FR",labelEn:"Intro EN",fr:e.intro_fr,en:e.intro_en,onFr:r=>a({...e,intro_fr:r}),onEn:r=>a({...e,intro_en:r}),rows:4})]}),n.jsx(b,{title:"Sections",action:n.jsxs("button",{onClick:()=>a({...e,sections:[...e.sections,{heading_fr:"",heading_en:"",body_fr:"",body_en:""}]}),className:"text-xs font-mono uppercase tracking-widest text-primary-text inline-flex items-center gap-1",children:[n.jsx(q,{className:"size-3"})," Ajouter"]}),children:e.sections.map((r,c)=>n.jsxs("div",{className:"border border-border rounded p-3 space-y-2 relative",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsxs("span",{className:"font-mono text-[10px] uppercase tracking-widest text-muted-foreground",children:["Section ",c+1]}),n.jsx("button",{onClick:()=>a({...e,sections:e.sections.filter((l,s)=>s!==c)}),className:"text-destructive-text",children:n.jsx(v,{className:"size-3"})})]}),n.jsx(w,{labelFr:"Titre FR",labelEn:"Heading EN",fr:r.heading_fr,en:r.heading_en,onFr:l=>{const s=[...e.sections];s[c]={...r,heading_fr:l},a({...e,sections:s})},onEn:l=>{const s=[...e.sections];s[c]={...r,heading_en:l},a({...e,sections:s})}}),n.jsx(h,{labelFr:"Paragraphes FR (une ligne = un paragraphe)",labelEn:"Paragraphs EN (one line = one paragraph)",fr:r.body_fr,en:r.body_en,onFr:l=>{const s=[...e.sections];s[c]={...r,body_fr:l},a({...e,sections:s})},onEn:l=>{const s=[...e.sections];s[c]={...r,body_en:l},a({...e,sections:s})},rows:5})]},c))}),n.jsx(b,{title:"À retenir (une ligne = un point)",children:n.jsx(h,{labelFr:"Takeaways FR",labelEn:"Takeaways EN",fr:e.takeaways_fr,en:e.takeaways_en,onFr:r=>a({...e,takeaways_fr:r}),onEn:r=>a({...e,takeaways_en:r}),rows:4})}),n.jsx(b,{title:"FAQ",action:n.jsxs("button",{onClick:()=>a({...e,faq:[...e.faq,{q_fr:"",q_en:"",a_fr:"",a_en:""}]}),className:"text-xs font-mono uppercase tracking-widest text-primary-text inline-flex items-center gap-1",children:[n.jsx(q,{className:"size-3"})," Ajouter"]}),children:e.faq.map((r,c)=>n.jsxs("div",{className:"border border-border rounded p-3 space-y-2",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsxs("span",{className:"font-mono text-[10px] uppercase tracking-widest text-muted-foreground",children:["Q&R ",c+1]}),n.jsx("button",{onClick:()=>a({...e,faq:e.faq.filter((l,s)=>s!==c)}),className:"text-destructive-text",children:n.jsx(v,{className:"size-3"})})]}),n.jsx(w,{labelFr:"Question FR",labelEn:"Question EN",fr:r.q_fr,en:r.q_en,onFr:l=>{const s=[...e.faq];s[c]={...r,q_fr:l},a({...e,faq:s})},onEn:l=>{const s=[...e.faq];s[c]={...r,q_en:l},a({...e,faq:s})}}),n.jsx(h,{labelFr:"Réponse FR",labelEn:"Answer EN",fr:r.a_fr,en:r.a_en,onFr:l=>{const s=[...e.faq];s[c]={...r,a_fr:l},a({...e,faq:s})},onEn:l=>{const s=[...e.faq];s[c]={...r,a_en:l},a({...e,faq:s})},rows:3})]},c))}),n.jsx(Q,{input:{kind:"article",slug:e.slug,title:{fr:e.title_fr,en:e.title_en},description:{fr:e.description_fr,en:e.description_en},category:{fr:e.category_fr,en:e.category_en},faq:e.faq.map(r=>({q:{fr:r.q_fr,en:r.q_en},a:{fr:r.a_fr,en:r.a_en}})),author:(()=>{const r=P(e.slug);return{name:r.name,jobTitle:r.jobTitle.fr,linkedin:r.linkedin,knowsAbout:r.knowsAbout}})()}}),n.jsx("style",{children:`.input{width:100%;padding:0.5rem 0.75rem;border:1px solid hsl(var(--border));background:hsl(var(--background));border-radius:0.375rem;font-size:0.875rem}
6      .input:focus{outline:none;border-color:hsl(var(--primary))}`})]})}function b({title:t,action:i,children:d}){return n.jsxs("section",{className:"space-y-3 border border-border bg-card rounded-lg p-4",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("h2",{className:"font-mono text-[10px] uppercase tracking-widest text-muted-foreground",children:t}),i]}),n.jsx("div",{className:"space-y-3",children:d})]})}function m({label:t,children:i}){return n.jsxs("label",{className:"block space-y-1",children:[n.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-muted-foreground",children:t}),i]})}function w({labelFr:t,labelEn:i,fr:d,en:o,onFr:u,onEn:g}){return n.jsxs("div",{className:"grid md:grid-cols-2 gap-3",children:[n.jsx(m,{label:t,children:n.jsx("input",{value:d,onChange:e=>u(e.target.value),className:"input"})}),n.jsx(m,{label:i,children:n.jsx("input",{value:o,onChange:e=>g(e.target.value),className:"input"})})]})}
6function h({labelFr:t,labelEn:i,fr:d,en:o,onFr:u,onEn:g,rows:e=3}){return n.jsxs("div",{className:"grid md:grid-cols-2 gap-3",children:[n.jsx(m,{label:t,children:n.jsx("textarea",{rows:e,value:d,onChange:a=>u(a.target.value),className:"input font-normal"})}),n.jsx(m,{label:i,children:n.jsx("textarea",{rows:e,value:o,onChange:a=>g(a.target.value),className:"input font-normal"})})]})}export{ee 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.