PageSourceSearch

https://mstudio.ai/build/assets/CharacterRefsRequiredModalBody.C85O1kU9.js

js mstudio.ai collected 2026-10-05 12:16:57 UTC 2,827 bytes, 1 lines download raw bytes

1import{r as c}from"./rolldown-runtime.C1f3BsDW.js";import"./inertia.BE4YqsTM.js";import"./http.DWpeO7Ui.js";import{I as x,Qr as f,S as u,_ as g}from"./icons.ChOq_Y4q.js";import{t as j}from"./react-core.CAMe6Z4j.js";import"./utils.CgzVjNgC.js";import"./state.L8kQliOB.js";import{Tt as b,U as w,k as r}from"./entry-client.DX3aUoe5.js";import"./dist.CoNAZqlp.js";import"./dist.DxccqHSW.js";import"./es2015.Cr2X04_P.js";import"./dist.DbqQa_sy.js";import{a as N,i as y,n as k,o as _,r as v,t as C}from"./dialog.Bb7MGeDP.js";import{n as D}from"./bestPractices.CtL0Jx0E.js";var A=c(f(),1),e=c(j(),1),R=({open:m,characters:n,projectUuid:t,onCancel:i,onAddFaces:l,onDrawnAll:h})=>{const[a,o]=(0,A.useState)(!1),d=n.length===1,p=async()=>{if(t){o(!0);try{const s=await w.designSheets(t);b.success(s.data.message),h()}catch{}finally{o(!1)}}};return(0,e.jsx)(C,{open:m,onOpenChange:s=>!s&&i(),children:(0,e.jsxs)(k,{className:"sm:max-w-md",onPointerDownOutside:i,children:[(0,e.jsxs)(N,{children:[(0,e.jsxs)("div",{className:"mb-2 flex items-center gap-3",children:[(0,e.jsx)("span",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-500/10 text-amber-400",children:(0,e.jsx)(u,{className:"h-5 w-5"})}),(0,e.jsx)(_,{children:"Add character faces first"})]}),(0,e.jsxs)(v,{className:"pt-1",children:[d?"This character needs a face before the shots that name them can be drawn.":"These characters need a face before the shots that name them can be drawn."," ","A locked face keeps everyone the same in every shot."]})]}),(0,e.jsx)("ul",{className:"space-y-1.5",children:n.map(s=>(0,e.jsxs)("li",{className:"flex items-center gap-2 rounded-md bg-muted/50 px-3 py-2 text-sm",children:[(0,e.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400"}),(0,e.jsx)("span",{className:"min-w-0 flex-1 truncate",children:s.name}),(0,e.jsx)(r,{size:"sm",variant:"ghost",disabled:a,onClick:()=>l(s.id),children:"Add a photo"})]},s.id))}),(0,e.jsxs)("div",{className:"rounded-md border border-border/60 bg-muted/30 px-3 py-2.5",children:[(0,e.jsx)("p",{className:"mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-primary",children:"What a good reference looks like"}),(0,e.jsx)("ul",{className:"space-y-1",children:D.map(s=>(0,e.jsxs)("li",{className:"flex items-start gap-2 text-xs text-muted-foreground",children:[(0,e.jsx)("span",{className:"mt-1.5 h-1 w-1 shrink-0 rounded-full bg-foreground
1/40","aria-hidden":"true"}),s]},s))})]}),(0,e.jsxs)(y,{children:[(0,e.jsx)(r,{variant:"ghost",onClick:i,disabled:a,children:"Cancel"}),(0,e.jsxs)(r,{variant:"outline",onClick:()=>l(),disabled:a,children:[(0,e.jsx)(g,{className:"h-4 w-4"}),"Open the cast"]}),t&&(0,e.jsxs)(r,{onClick:p,isLoading:a,children:[(0,e.jsx)(x,{className:"h-4 w-4"}),d?"Draw the face":"Draw them all"]})]})]})})},Q=R;export{Q 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.