1import{r as $,j as t}from"./vendor-react-De19kUq8.js";import{cm as g,B as M,h as b}from"./index-fAhlbWPM.js";import{A as k,D as j}from"./adSlotGeometry-Ds6V4dD3.js";import{g as x,P as v,H as y,y as N}from"./PreviewAdOverlay-Cb42h2m9.js";import"./vendor-ui-pO556hdz.js";import"./vendor-app-DH33cvx6.js";import"./vendor-supabase-Bm92Y2YK.js";import"./printSpec-BFk8TSoQ.js";function w({widthMm:a,heightMm:i,marksMm:o=0,label:m,tint:r="#2563eb"}){const n=a+2*o,s=i+2*o,e=o,c=Math.max(3,Math.min(a,i)/8),l=Math.max(3,Math.min(a,i)/10),d=(u,p)=>`<path d="M${u} ${p} h${l} M${u} ${p} v${l}" stroke="#16a34a" stroke-width="1" fill="none"/>`,h=e?`<rect x="0" y="0" width="${n}" height="${s}" fill="#f1f5f9"/> 2 <g stroke="#111" stroke-width="0.3"> 3 <path d="M0 ${e} h${e*.7} M${e} 0 v${e*.7}"/> 4 <path d="M${n} ${e} h-${e*.7} M${n-e} 0 v${e*.7}"/> 5 <path d="M0 ${s-e} h${e*.7} M${e} ${s} v-${e*.7}"/> 6 <path d="M${n} ${s-e} h-${e*.7} M${n-e} ${s} v-${e*.7}"/> 7 </g>`:"",f=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${n} ${s}" width="${n}mm" height="${s}mm"> 8 ${h} 9 <rect x="${e}" y="${e}" width="${a}" height="${i}" fill="#ffffff"/> 10 <rect x="${e+.5}" y="${e+.5}" width="${a-1}" height="${i-1}" fill="none" stroke="${r}" stroke-width="1"/> 11 <path d="M${e} ${e} L${e+a} ${e+i} M${e+a} ${e} L${e} ${e+i}" stroke="${r}" stroke-opacity="0.25" stroke-width="0.4"/> 12 ${d(e,e)} 13 <g transform="translate(${e+a} ${e}) rotate(90)">${d(0,0)}</g> 14 <g transform="translate(${e+a} ${e+i}) rotate(180)">${d(0,0)}</g> 15 <g transform="translate(${e} ${e+i}) rotate(270)">${d(0,0)}</g> 16 <text x="${e+a/2}" y="${e+i/2}" font-family="sans-serif" font-size="${c}" text-anchor="middle" dominant-baseline="middle" fill="${r}">${m}</text> 17 </svg>`;return`data:image/svg+xml;utf8,${encodeURIComponent(f)}`}const B=[{key:"ample-bleed",title:"Fond perdu supérieur au numéro",expectation:"Une seule créative visible, notamment dans les bandes hautes et basses.",fileBleedMm:6.5,marksMm:0},{key:"exact",title:"Fichier conforme",expectation:"Cadre bleu et 4 repères verts visibles, aucun trait noir.",fileBleedMm:null,marksMm:0},{key:"marks",title:"Fichier avec traits de coupe (5 mm)",expectation:"La bande grise et les traits noirs doivent avoir disparu.",fileBleedMm:null,marksMm:5},{key:"short-bleed",title:"Fichier 3 mm sur numéro 5 mm",expectation:"Cadre bleu aligné sur la coupe, zone massicot comblée.",fileBleedMm:3,marksMm:0},{key:"off-ratio",title:"Proportions incohérentes",expectation:"Visuel entier (du blanc peut rester), jamais tronqué.",fileBleedMm:null,marksMm:0,distort:1.35}];function L(){const[a,i]=$.useState(5),o=j,m=$.useMemo(()=>k,[]);return t.jsxs("div",{className:"mx-auto w-full max-w-6xl space-y-6 p-4 pb-16",children:[t.jsxs(g,{children:[t.jsx("title",{children:"Contrôle des formats publicitaires | Sortir"}),t.jsx("meta",{name:"robots",content:"noindex"})]}),t.jsxs("header",{className:"space-y-2",children:[t.jsx("h1",{className:"text-xl font-semibold",children:"Contrôle des encarts â fond perdu et traits de coupe"}),t.jsx("p",{className:"max-w-3xl text-sm text-muted-foreground",children:"Mire de test posée dans chaque format, avec les cas de fichiers réellement reçus. Aucune donnée n'est modifiée. Repères verts aux 4 angles = rien n'est coupé ; traits noirs visibles = bande technique non retirée."}),t.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[t.jsx("span",{className:"text-muted-foreground",children:"Fond perdu du numéro"}),[3,5].map(r=>t.jsxs(M,{size:"sm",variant:a===r?"default":"outline",onClick:()=>i(r),children:[r," mm"]},r))]})]}),t.jsx("div",{className:"space-y-10",children:m.map(r=>{const n=x(r.size,r.zone,void 0,{bleedMm:0});return t.jsxs("section",{className:"space-y-3",children:[t.jsxs("h2",{className:"text-sm font-medium",children:[r.label," ",t.jsxs("span",{className:"text-muted-foreground",children:["â ",Math.round(n.widthMm)," à ",Math.round(n.heightMm)," mm"]})]}),t.jsx("div",{className:"grid grid-cols-2 gap-4 md:grid-cols-5",children:B.map(s=>
17{const e=x(r.size,r.zone,void 0,{bleedMm:s.fileBleedMm??0}),c=w({widthMm:e.expectedWidthMm*(s.distort??1),heightMm:e.expectedHeightMm,marksMm:s.marksMm,label:r.short,tint:s.distort?"#dc2626":"#2563eb"}),l={id:`${r.id}-${s.key}`,page_number:4,size:r.size,zone:r.zone,preview_image_url:c,advertiser_name:"Mire de contrôle",render_config:{creative_bleed:{included:s.fileBleedMm!==null,mm:s.fileBleedMm??3},creative_marks:{present:s.marksMm>0,offsetMm:s.marksMm||5}}};return t.jsxs("figure",{className:"space-y-1.5",children:[t.jsx("div",{className:b("relative mx-auto w-full overflow-hidden border bg-white shadow-sm",s.distort&&"border-destructive/50"),style:{aspectRatio:`${o.width} / ${o.height}`},children:t.jsx(v,{pageMm:o,children:t.jsx(y,{bleedMm:a,children:t.jsx(N,{slots:[l],pageNumber:4})})})}),t.jsxs("figcaption",{className:"space-y-0.5",children:[t.jsx("p",{className:"text-[11px] font-medium",children:s.title}),t.jsx("p",{className:"text-[10px] leading-snug text-muted-foreground",children:s.expectation})]})]},s.key)})})]},r.id)})})]})}export{L 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.