PageSourceSearch

https://orkai.life/assets/designer.index-BTVBnYgc.js

js orkai.life collected 2026-10-10 01:07:06 UTC 15,696 bytes, 1 lines download raw bytes

1import{i as $,cO as K,r as m,u as Q,j as e,b as w,bE as Z,L as O,s as G,cP as J,bL as H,cQ as V,bK as W,bX as X,t as g,a3 as Y}from"./index-BRuMS4In.js";import{J as ee}from"./jszip.min-TmNpbIrr.js";import{F as te,a as se}from"./FileSaver.min-12oZVQxe.js";import{u as re}from"./use-designer-session-gGlnRjuy.js";import{u as q}from"./use-is-admin-DuFifn9U.js";import{B as ae}from"./BrandAssets-BlfGwZYk.js";import{D as I}from"./download-CWV6FMHn.js";import{U as ne}from"./upload-d7gbCukC.js";import"./orkai-founders-jacquard-production.pdf.asset-B7eDeAah.js";const{saveAs:ie}=se;function z(t){return t?t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/1024/1024).toFixed(1)} MB`:""}function fe(){const t=re(),_=q(),S=$(K),[j,B]=m.useState("designs"),[h,P]=m.useState(""),{data:u,isLoading:b,refetch:v,isFetching:E}=Q({queryKey:["designer","files"],queryFn:()=>S(),enabled:t});m.useEffect(()=>{const r=()=>{v()};return window.addEventListener("designer:refresh",r),()=>window.removeEventListener("designer:refresh",r)},[v]);const y=m.useMemo(()=>{const r=u?.orders??[],n=h.trim().toLowerCase();return[...n?r.filter(c=>c.label.toLowerCase().includes(n)||c.subtitle.toLowerCase().includes(n)||c.files.some(k=>k.name.toLowerCase().includes(n))):r].sort((c,k)=>{const L=c.needs_review?1:0,M=k.needs_review?1:0;return L!==M?M-L:0})},[u,h]),N=m.useMemo(()=>{const r=(u?.orders??[]).flatMap(i=>(i.final_files??[]).map(c=>({...c,orderId:i.order_id,source:`${i.label} · ${c.source}`}))),n=h.trim().toLowerCase();return n?r.filter(i=>i.name.toLowerCase().includes(n)||i.source.toLowerCase().includes(n)):r},[u,h]),C=async()=>{await G.auth.signOut(),window.location.href="/designer/login"};if(!t)return e.jsx("div",{className:"flex min-h-screen items-center justify-center",children:e.jsx(w,{className:"h-5 w-5 animate-spin"})});const D=(u?.orders??[]).length,A=(u?.orders??[]).reduce((r,n)=>r+(n.final_files?.length??0),0);return e.jsx("div",{className:"cream-surface min-h-screen bg-[#F5F1E8] px-4 py-8 md:px-10",children:e.jsxs("div",{className:"mx-auto max-w-6xl",children:[e.jsx(Z,{eyebrow:"ORKAI Designer",title:"Designs & artwork",description:"Everything you need to design — order files, shared documents, and client artwork.",backTo:_?"/admin":"",backLabel:"← Admin portal",actions:e.jsxs(e.Fragment,{children:[e.jsx(O,{to:"/designer/briefs",className:"text-xs font-semibold uppercase tracking-[0.2em] text-[#B8975A] hover:text-[#B8975A]/80",children:"Design Briefs"}),e.jsx(O,{to:"/designer/inbox",className:"text-xs font-semibold uppercase tracking-[0.2em] text-[#B8975A] hover:text-[#B8975A]/80",children:"Send to Admin"}),e.jsx("button",{onClick:C,className:"text-xs uppercase tracking-[0.2em] text-[#F5F1E8]/70 hover:text-[#F5F1E8]",children:"Sign out"})]})}),e.jsxs("div",{className:"mt-6 flex flex-wrap items-center gap-3",children:[e.jsx("div",{className:"flex gap-1 border border-border",children:["designs","logos"].map(r=>e.jsx("button",{type:"button",onClick:()=>B(r),className:`px-3 py-1.5 text-xs uppercase tracking-[0.15em] ${j===r?"designer-dark-action bg-foreground font-bold text-white":"text-foreground/60 hover:text-foreground"}`,children:r==="designs"?`Orders (${b?"…":D})`:`Finished designs (${b?"…":A})`},r))}),e.jsx("input",{type:"search",placeholder:"Search…",value:h,onChange:r=>P(r.target.value),className:"flex-1 min-w-[200px] border border-border bg-background px-3 py-1.5 text-sm"}),e.jsx("button",{type:"button",onClick:()=>v(),className:"text-xs uppercase tracking-[0.2em] text-foreground/60 hover:text-foreground",children:E?"Refreshing…":"Refresh"})]}),b&&e.jsx("div",{className:"py-12 text-center",children:e.jsx(w,{className:"mx-auto h-5 w-5 animate-spin"})}),e.jsx("div",{className:"mt-6",children:e.jsx(ae,{})}),!b&&j==="designs"&&e.jsx("div",{className:"mt-6 space-y-6",children:y.length===0?e.jsx("p",{className:"border border-dashed border-border p-10 text-center text-sm text-foreground/60",children:"No design files match."}):y.map(r=>e.jsx(oe,{order:r},`${r.portal}-${r.order_id}`))}),!b&&j==="logos"&&e.jsx("div",{className:"mt-6",children:N.length===0?e.jsx("p",{className:"border border-dashed border-border p-10 text-center text-sm text-foreground
1/60",children:"No finished designs uploaded yet."}):e.jsx("ul",{className:"divide-y divide-border border border-border",children:N.map(r=>e.jsxs("li",{className:"flex flex-wrap items-center justify-between gap-2 px-4 py-2.5 text-sm hover:bg-foreground/5",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"truncate font-medium",children:r.name}),e.jsxs("p",{className:"text-xs text-foreground/70",children:[r.source,r.size?` · ${z(r.size)}`:"",r.uploaded_at?` · ${new Date(r.uploaded_at).toLocaleString()}`:""]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("a",{href:r.url,download:r.name,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 border border-border px-2.5 py-1 text-xs uppercase tracking-[0.15em] text-foreground/70 hover:bg-foreground hover:text-white",children:[e.jsx(I,{className:"h-3 w-3"})," Download"]}),e.jsx("span",{className:"inline-flex items-center gap-1 border border-border px-2.5 py-1 text-xs uppercase tracking-[0.15em] text-foreground/60",children:r.shared?"Shared with client ✓":"Not shared with client"})]})]},`${r.bucket}-${r.path}`))})})]})})}function oe({order:t}){const[_,S]=m.useState(!1),j=$(J),B=$(H),h=$(V),P=$(W),u=q(),[b,v]=m.useState(!1),[E,y]=m.useState(null),[N,C]=m.useState(null),[D,A]=m.useState(!1),[,r]=m.useState(0),n=X(t.model_id??null),i=!!t.needs_review,c=t.files.map(a=>a.uploaded_at).filter(Boolean).sort().pop(),k=async a=>{if(!(!a||a.length===0)){if(a.length>10){g.error("Max 10 files at once");return}v(!0);try{const l=await Promise.all(Array.from(a).map(d=>new Promise((x,f)=>{if(d.size>41943040){f(new Error(`${d.name} exceeds 40 MB`));return}const s=new FileReader;s.onerror=()=>f(s.error),s.onload=()=>x({name:d.name,contentType:d.type||"application/octet-stream",dataUrl:String(s.result)}),s.readAsDataURL(d)})));await j({data:{orderId:t.order_id,kind:t.kind,files:l}}),g.success(`Uploaded ${l.length} file${l.length===1?"":"s"} for admin review`),r(d=>d+1),window.dispatchEvent(new Event("designer:refresh"))}catch(l){g.error(l?.message||"Upload failed")}finally{v(!1)}}},L=async()=>{S(!0);try{const a=new ee,l=new Map;await Promise.all(t.files.map(async x=>{const f=await fetch(x.url);if(!f.ok)throw new Error(`Failed to fetch ${x.name}`);const s=await f.blob();let o=x.name;const p=l.get(o)||0;if(p>0){const F=o.lastIndexOf(".");o=F>0?`${o.slice(0,F)}-${p}${o.slice(F)}`:`${o}-${p}`}l.set(x.name,p+1),a.file(o,s)}));const d=await a.generateAsync({type:"blob"});if(ie(d,`${t.label}.zip`),i)try{await h({data:{orderId:t.order_id,kind:t.kind}}),window.dispatchEvent(new Event("designer:refresh"))}catch{}}catch(a){g.error(a?.message||"Could not build ZIP")}finally{S(!1)}},M=async()=>{A(!0);try{await h({data:{orderId:t.order_id,kind:t.kind}}),g.success("Marked as reviewed"),window.dispatchEvent(new Event("designer:refresh"))}catch(a){g.error(a?.message||"Could not mark as reviewed")}finally{A(!1)}};return e.jsxs("section",{className:`border ${i?"border-[var(--brass)] ring-2 ring-[var(--brass)]/40":"border-border"}`,children:[e.jsxs("header",{className:`flex flex-wrap items-center justify-between gap-3 border-b px-4 py-3 ${i?"border-[var(--brass)] bg-[#16263D] text-[#F5F1E8]":"border-border bg-muted/30"}`,children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[i&&e.jsx("span",{className:"inline-flex items-center gap-1 bg-[var(--brass)] px-2 py-1 text-[11px] font-bold uppercase tracking-[0.15em] text-[#16263D]",children:"● New from client"}),e.jsx("span",{className:`inline-block px-2 py-1 text-[11px] font-bold uppercase tracking-[0.15em] ${t.portal==="gandg"||t.portal==="client"?"bg-[#16263D] text-[var(--brass)]":i?"bg-[#F5F1E8] text-[#16263D]":"bg-foreground font-bold text-white"}`,children:t.portal==="gandg"?"G&G":t.portal==="client"?"Client Studio":"Website"})]}),e.jsxs("p",{className:`mt-2 font-display text-3xl font-semibold leading-tight md:text-4xl ${i?"text-[#F5F1E8]":"text-foreground"}`,children:[t.subtitle,t.project_name?` · ${t.project_name}`:""]}),e.jsxs("p",{className:`mt-1.5 font-mono text-sm font-semibold ${i?"text-[#F5F1E8]/85":"text-foreground
1/80"}`,children:[t.label,c?` · Latest client upload: ${new Date(c).toLocaleString()}`:""]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[i&&e.jsxs("button",{type:"button",onClick:M,disabled:D,className:"inline-flex items-center gap-1.5 border border-[var(--brass)] px-3 py-1.5 text-xs font-semibold uppercase tracking-[0.15em] text-[var(--brass)] hover:bg-[var(--brass)] hover:text-[#16263D] disabled:opacity-50",children:[D?e.jsx(w,{className:"h-3.5 w-3.5 animate-spin"}):null,"Mark reviewed"]}),t.files.length>0&&e.jsxs("button",{type:"button",onClick:L,disabled:_,className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold uppercase tracking-[0.15em] disabled:opacity-50 ${i?"border border-[#F5F1E8] bg-[#F5F1E8] text-[#16263D]":"designer-dark-action border border-foreground bg-foreground font-semibold text-white"}`,children:[_?e.jsx(w,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(te,{className:"h-3.5 w-3.5"}),"Download all (",t.files.length,")"]})]})]}),n&&e.jsxs("div",{className:"flex items-center gap-3 border-b border-border bg-card p-3",children:[e.jsx("img",{src:n.image,alt:n.name,className:"h-28 w-28 flex-none border border-border bg-card object-contain p-1 md:h-32 md:w-32"}),e.jsxs("div",{className:"min-w-0 text-sm",children:[e.jsx("p",{className:"font-display text-2xl font-semibold leading-tight md:text-3xl",children:n.name}),e.jsxs("p",{className:"mt-0.5 text-xs font-semibold uppercase tracking-[0.15em] text-foreground/80",children:[n.categoryLabel,t.quantity?` · Qty ${t.quantity}`:""]}),e.jsx("p",{className:"mt-1 line-clamp-2 text-sm text-foreground/80",children:n.note})]})]}),t.notes&&t.notes.trim()&&e.jsxs("div",{className:"border-b border-border bg-[var(--ink-2)] p-3",children:[e.jsx("p",{className:"mb-1 text-[11px] font-bold uppercase tracking-[0.18em] text-[var(--brass)]",children:"Client instructions"}),e.jsx("p",{className:"whitespace-pre-wrap text-base font-semibold leading-relaxed text-[#F5F1E8]",children:t.notes})]}),t.files.length>0&&e.jsx("ul",{className:"divide-y divide-border",children:t.files.map(a=>e.jsxs("li",{className:"flex flex-wrap items-center justify-between gap-2 px-4 py-2.5 text-sm hover:bg-foreground
1/5",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"truncate text-base font-semibold",children:a.name}),e.jsxs("p",{className:"text-xs text-foreground/80",children:[a.source,a.size?` · ${z(a.size)}`:"",a.content_type?` · ${a.content_type}`:""]})]}),e.jsxs("a",{href:a.url,download:a.name,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 border border-border px-2.5 py-1 text-xs uppercase tracking-[0.15em] text-foreground/70 hover:bg-foreground hover:text-white",children:[e.jsx(I,{className:"h-3 w-3"})," Download"]})]},`${a.bucket}/${a.path}`))}),(t.kind==="portal_order"||t.kind==="custom_request")&&e.jsxs("div",{className:"border-t border-border bg-foreground/5 p-3",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between gap-2",children:[e.jsx("p",{className:"text-xs uppercase tracking-[0.15em] text-foreground/60",children:"Upload finished design for admin review"}),e.jsxs("label",{className:"designer-dark-action inline-flex cursor-pointer items-center gap-1.5 border border-foreground bg-foreground px-3 py-1.5 text-xs font-semibold uppercase tracking-[0.15em] text-white hover:opacity-90",children:[b?e.jsx(w,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(ne,{className:"h-3.5 w-3.5"}),"Upload",e.jsx("input",{type:"file",multiple:!0,hidden:!0,disabled:b,onChange:a=>{k(a.target.files),a.target.value=""}})]})]}),t.final_files&&t.final_files.length>0?e.jsx("ul",{className:"divide-y divide-border border border-border bg-background",children:(()=>{const a=[...t.final_files].sort((s,o)=>(s.uploaded_at||"").localeCompare(o.uploaded_at||"")),l=s=>{const o=s.match(/\bv\s?(\d+)\b/i);return o?parseInt(o[1],10):null},d=a.some(s=>l(s.name)!==null),x=new Map,f=new Map;return a.forEach(s=>{const o=d?l(s.name)??1:1,p=(x.get(o)??0)+1;x.set(o,p),f.set(s.path,p)}),a.map(s=>{const o=/final/i.test(s.name),p=d?l(s.name)??1:1,F=f.get(s.path)??1,T=(x.get(p)??1)>1?String.fromCharCode(96+F):"",U=o?"Final":`Version ${p}${T}`;return e.jsxs("li",{className:"flex flex-wrap items-center justify-between gap-2 px-3 py-2 text-sm",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:`inline-block px-1.5 py-0.5 text-[10px] uppercase tracking-[0.15em] ${U==="Final"?"bg-[var(--cabernet)] font-semibold text-[#F5F1E8]":"bg-foreground
1/10 font-semibold text-foreground/80"}`,children:U}),e.jsx("p",{className:"truncate font-medium",children:s.name})]}),e.jsx("p",{className:"text-xs text-foreground/80",children:s.shared?`Shared with client${s.shared_at?` · ${new Date(s.shared_at).toLocaleString()}`:""}`:"Awaiting Designer review"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("a",{href:s.url,download:s.name,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 border border-border px-2.5 py-1 text-xs uppercase tracking-[0.15em] text-foreground/70 hover:bg-foreground hover:text-white",children:[e.jsx(I,{className:"h-3 w-3"})," Download"]}),s.shared?e.jsx("span",{className:"inline-flex items-center gap-1 border border-[var(--cabernet)] bg-[var(--cabernet)] px-2.5 py-1 text-xs font-semibold uppercase tracking-[0.15em] text-[#F5F1E8]",title:"Sent to the client",children:"Sent to client ✓"}):u?e.jsxs("button",{type:"button",disabled:N===s.path,onClick:async()=>{C(s.path);try{await P({data:{orderId:t.order_id,kind:t.kind==="custom_request"?"custom_request":"portal_order",path:s.path,shared:!0}}),g.success("Sent to client"),window.dispatchEvent(new Event("designer:refresh"))}catch(R){g.error(R?.message||"Could not share")}finally{C(null)}},className:"inline-flex items-center gap-1 border border-[var(--brass)] bg-[var(--brass)] px-2.5 py-1 text-xs font-semibold uppercase tracking-[0.15em] text-[#16263D] hover:opacity-90 disabled:opacity-50",title:"Share this file with the client",children:[N===s.path?e.jsx(w,{className:"h-3 w-3 animate-spin"}):null,"Share with client"]}):e.jsx("span",{className:"inline-flex items-center gap-1 border border-border px-2.5 py-1 text-xs uppercase tracking-[0.15em] text-foreground/60",title:"Awaiting admin review",children:"Awaiting review"}),e.jsx("button",{type:"button",disabled:E===s.path,onClick:async()=>{if(confirm(`Permanently delete "${s.name}"? This cannot be undone.`)){y(s.path);try{await B({data:{orderId:t.order_id,kind:t.kind,path:s.path}}),g.success("File deleted"),window.dispatchEvent(new Event("designer:refresh"))}catch(R){g.error(R?.message||"Could not delete file")}finally{y(null)}}},title:"Permanently delete",className:"inline-flex items-center gap-1 border border-destructive bg-background px-2 py-1 text-xs text-destructive hover:bg-destructive hover:text-background disabled:opacity-50",children:E===s.path?e.jsx(w,{className:"h-3 w-3 animate-spin"}):e.jsx(Y,{className:"h-3 w-3"})})]})]},s.path)})})()}):e.jsx("p",{className:"text-xs text-foreground/70",children:"No finished designs uploaded yet."})]})]})}export{fe 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.