PageSourceSearch

https://wystem.ai/assets/OrgRegisterPage-BKntNNr4.js

js wystem.ai collected 2026-10-05 15:26:16 UTC 16,879 bytes, 1 lines download raw bytes

1import{r as a,j as e,R as H}from"./vendor-react-BTaBH3I0.js";import{H as E}from"./vendor-helmet-BVAFyVM5.js";import{u as J,o as j,m as O,_ as D,d as T,e as _,$ as M,a0 as X,p as q,L as A,a1 as Q,A as Z}from"./index-pVy5dhMT.js";import"./vendor-misc-DOep9v2o.js";import"./vendor-router-DaUSQCqh.js";const le=()=>{const{t}=J(),[l,h]=a.useState(1),[g,U]=a.useState(""),[u,I]=a.useState(null),p=a.useRef(null),[o,V]=a.useState(""),[n,d]=a.useState("idle"),[w,x]=a.useState(null),[c,f]=a.useState(null),[y,v]=a.useState(!1),[N,b]=a.useState(null),[m,B]=a.useState(null),[k,W]=a.useState(!1),[i,G]=a.useState(null),[P,R]=a.useState(!1);a.useEffect(()=>{fetch("/api/config").then(s=>s.json()).then(s=>G(s.serviceAccountEmail??null)).catch(()=>{})},[]);const S=()=>{i&&navigator.clipboard.writeText(i).then(()=>{R(!0),setTimeout(()=>R(!1),2e3)})},$=s=>{var L;const r=(L=s.target.files)==null?void 0:L[0];if(!r)return;if(!r.type.startsWith("image/")){alert(t("orgRegisterPage.error.logoType","Please select an image file."));return}if(r.size>2*1024*1024){alert(t("orgRegisterPage.error.logoSize","Logo must be smaller than 2 MB."));return}const z=new FileReader;z.onload=Y=>{var F;return I((F=Y.target)==null?void 0:F.result)},z.readAsDataURL(r)},K=a.useCallback(async()=>{if(o.trim()){d("verifying"),x(null),f(null);try{const r=await(await fetch("/api/org/verify-folder",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({drive_folder_url:o.trim()})})).json();r.accessible?(d("ok"),f({folder_id:r.folder_id,name:r.name,fileCount:r.fileCount}),setTimeout(()=>{C()},800)):(d("error"),x(r.error||t("orgRegisterPage.error.accessCheck","Access check failed.")))}catch{d("error"),x(t("orgRegisterPage.error.networkError","Network error. Please try again."))}}},[o]),C=async()=>{v(!0),b(null);try{const r=await(await fetch("/api/org/register",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({org_name:g.trim(),drive_folder_url:o.trim()||void 0,logo_data_url:u||void 0})})).json();r.success?(B(r.slug),h(3)):b(r.error||t("orgRegisterPage.error.registrationFailed","Registration failed."))}catch{b(t("orgRegisterPage.error.networkError","Network error. Please try again."))}finally{v(!1)}};return m?e.jsxs("div",{className:"min-h-screen bg-slate-50 flex flex-col justify-center items-center px-6 py-20 font-sans",children:[e.jsx(E,{children:e.jsx("title",{children:t("orgRegisterPage.success.helmetTitle","Registration Successful | Wystem")})}),e.jsxs("div",{className:"bg-white border border-slate-100 shadow-xl rounded-3xl max-w-md w-full p-10 flex flex-col items-center gap-6 text-center",children:[e.jsx("div",{className:"w-20 h-20 bg-emerald-50 rounded-full flex items-center justify-center",children:e.jsx(j,{className:"w-10 h-10 text-emerald-500"})}),e.jsx("h1",{className:"text-3xl font-bold tracking-tight text-slate-900",children:t("orgRegisterPage.success.title","You're in.")}),e.jsxs("p",{className:"text-slate-600 font-serif italic leading-relaxed",children:[e.jsx("strong",{children:g})," ",t("orgRegisterPage.success.lead","has been registered in the Wystem Knowledge Commons. Your organization page is now live at:")]}),e.jsxs("a",{href:`/${encodeURIComponent(m)}`,className:"font-mono text-sm text-emerald-700 underline break-all bg-emerald-50 px-4 py-2 rounded-lg",children:["wystem.ai/",m]}),i?e.jsxs("div",{className:"w-full border border-slate-100 bg-slate-50 p-6 rounded-2xl text-left space-y-3",children:[e.jsx("p",{className:"text-label font-bold uppercase tracking-widest text-slate-500",children:t("orgRegisterPage.success.step1Label","Step 1 — Share your Drive folder with:")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("code",{className:"flex-1 text-xs font-mono bg-white border border-slate-200 px-3 py-2 text-slate-800 break-all rounded-lg",children:i}),e.jsx("button",{onClick:S,className:"shrink-0 flex items-center gap-1.5 px-3 py-2 bg-white border border-slate-200 rounded-lg text-xs font-bold text-slate-600 hover:border-emerald-500 hover:text-emerald-600 transition-colors shadow-sm",children:P?e.jsxs(e.Fragment,{children:[e.jsx(O,{size:12,className:"text-emerald-600"})," ",t("orgRegisterPage.copied","Copied")]}):e.jsxs(e.Fragment,{children:[e.jsx(D,{size:12})," ",t("orgRegisterPage.copy","Copy")]})})]}),e.jsx("p",{className:"text-label text-slate-500 font-serif italic",children:t("orgRegisterPage.success.step1Hint","Set access to Viewer and Wystem will ingest your documents automatically.")})]}):e.jsx("p",{className:"text-xs text-slate-500 font-serif italic",children:t("orgRegisterPage.success.noEmailFallback","Once you share your Google Drive folder with the Wystem service account, your documents will be ingested and your knowledge page will populate automatically.")}),e.jsxs("a",{href:`/${encodeURIComponent(m)}`,className:"w-full inline-flex items-center justify-center gap-2 px-6 py-4 bg-slate-900 text-white text-sm font-bold rounded-2xl hover:bg-brand-sienna shadow-lg shadow-slate-200 hover:shadow-emerald-100 transition-colors",children:[t("orgRegisterPage.success.viewButton","View your page")," ",e.jsx(T,{size:16})]})]})]}):e.jsxs("div",{className:"min-h-screen text-slate-900 font-sans","data-wystem-page":"org",style:{background:"var(--wystem-surface-page)"},children:[e.jsx(E,{children:e.jsx("title",{children:t("orgRegisterPage.helmetTitle","Register Your Organization | Wystem Knowledge Commons")})}),e.jsx("section",{className:"py-section-loose px-6",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 bg-emerald-50 border border-emerald-100 text-emerald-700 text-label font-bold uppercase tracking-widest mb-6 rounded-full",children:[e.jsx(_,{size:10})," ",t("orgRegisterPage.hero.badge","Wystem Knowledge Commons")]}),e.jsx("h1",{className:"text-4xl md:text-5xl font-bold tracking-tight mb-4 leading-tight",children:t("orgRegisterPage.hero.title","Register Your Organisation")}),e.jsx("p",{className:"text-lg text-slate-500 font-serif leading-relaxed max-w-xl italic",children:t("orgRegisterPage.hero.lead","Connect your documents to the Wystem Knowledge Commons. Your reports, field notes, and research become a living, searchable knowledge page — automatically.")})]})}),e.jsx("div",{className:"px-6 py-6 sticky top-16 z-sticky backdrop-blur-md",style:{background:"color-mix(in srgb, var(--wystem-surface-page) 90%, transparent)"},children:e.jsx("div",{className:"max-w-2xl mx-auto flex items-center gap-4",children:[{n:1,label:t("orgRegisterPage.steps.org","Organisation")},{n:2,label:t("orgRegisterPage.steps.connectData","Connect Data")},{n:3,label:t("orgRegisterPage.steps.success","Success")}].map(({n:s,label:r})=>e.jsxs(H.Fragment,{children:[e.jsxs("div",{className:`flex items-center gap-3 text-label font-bold uppercase tracking-wider ${l===s?"text-slate-900":l>s?"text-emerald-600":"text-slate-300"}`,children:[e.jsx("span",{className:`w-8 h-8 flex items-center justify-center rounded-full border-2 transition-colors ${l===s?"border-slate-900 bg-slate-900 text-white shadow-lg shadow-slate-200":l>s?"border-emerald-500 bg-emerald-500 text-white":"border-slate-200 text-slate-300"}`,children:l>s?"✓":s}),e.jsx("span",{className:"hidden sm:inline",children:r})]}),s<3&&e.jsx("div",{className:`flex-1 h-0.5 rounded-full ${l>s?"bg-emerald-400":"bg-slate-100"}`})]},s))})}),e.jsxs("section",{className:"max-w-2xl mx-auto py-16 px-6",children:[l===1&&e.jsxs("div",{className:"bg-white border border-slate-100 shadow-xl rounded-3xl p-10 flex flex-col gap-8 animate-in fade-in slide-in-from-bottom-4 duration-500",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:"block text-label font-bold uppercase tracking-widest text-slate-500",children:[t("orgRegisterPage.orgNameLabel","Organisation Name")," ",e.jsx("span",{className:"text-brand-sienna",children:"*"})]}),e.jsx("input",{type:"text",value:g,onChange:s=>U(s.target.value),placeholder:t("orgRegisterPage.orgNamePlaceholder","e.g. Socratus Foundation"),className:"w-full border border-slate-200 bg-slate-50 rounded-2xl px-6 py-4 text-lg font-serif focus:outline-none focus:border-emerald-500 focus:bg-white transition-colors placeholder:text-slate-300 shadow-sm"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:"block text-label font-bold uppercase tracking-widest text-slate-500",children:[t("orgRegisterPage.logoLabel","Organisation Logo")," ",e.jsx("span",{className:"text-slate-300 normal-case font-medium ml-1",children:t("orgRegisterPage.logoOptional","(optional, max 2 MB)")})]}),e.jsx("div",{role:"button",tabIndex:0,"aria-label":t("orgRegisterPage.uploadAriaLabel","Upload organization logo"),
1className:"border-2 border-dashed border-slate-200 bg-slate-50 rounded-3xl hover:border-emerald-500 hover:bg-emerald-50/20 p-10 flex flex-col items-center justify-center gap-4 cursor-pointer transition-colors group",onClick:()=>{var s;return(s=p.current)==null?void 0:s.click()},onKeyDown:s=>{var r;(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),(r=p.current)==null||r.click())},children:u?e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("div",{className:"bg-white p-4 rounded-2xl shadow-md",children:e.jsx("img",{src:u,alt:"Logo preview",className:"max-h-32 max-w-48 object-contain"})}),e.jsx("span",{className:"text-xs text-emerald-600 font-bold uppercase tracking-wider",children:t("orgRegisterPage.changeLogo","Change logo")})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"w-16 h-16 bg-white rounded-2xl flex items-center justify-center shadow-sm group-hover:shadow-md transition-colors",children:e.jsx(M,{className:"w-8 h-8 text-slate-300 group-hover:text-emerald-500 transition-colors"})}),e.jsxs("p",{className:"text-sm text-slate-500 font-serif text-center italic",children:[t("orgRegisterPage.uploadPromptPrefix","Drop your logo here, or")," ",e.jsx("span",{className:"text-emerald-600 font-bold not-italic",children:t("orgRegisterPage.uploadPromptBrowse","click to browse")})]}),e.jsx("p",{className:"text-label text-slate-500 uppercase font-bold tracking-widest",children:t("orgRegisterPage.logoFormats","PNG, JPG, SVG")})]})}),e.jsx("input",{ref:p,type:"file",accept:"image/*",className:"hidden",onChange:$})]}),e.jsxs("label",{className:"flex items-start gap-2 pt-2 text-sm text-slate-600 leading-relaxed cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:k,onChange:s=>W(s.target.checked),className:"mt-1 shrink-0 cursor-pointer"}),e.jsxs("span",{children:[t("orgRegisterPage.agreePrefix","I confirm I have the right to share this organisation’s material, and I agree to the")," ",e.jsx("a",{href:"/terms",target:"_blank",rel:"noopener noreferrer",className:"text-brand-sienna underline underline-offset-2",children:t("orgRegisterPage.termsLink","Terms of Service")})," ",t("common.and","and")," ",e.jsx("a",{href:"/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-brand-sienna underline underline-offset-2",children:t("orgRegisterPage.privacyLink","Privacy Policy")}),"."]})]}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsxs("button",{disabled:g.trim().length<2||!k,onClick:()=>h(2),className:"inline-flex items-center gap-2 px-8 py-4 bg-slate-900 text-white text-sm font-bold rounded-2xl hover:bg-brand-sienna shadow-lg shadow-slate-200 hover:shadow-emerald-100 transition-colors disabled:opacity-40 disabled:pointer-events-none",children:[t("orgRegisterPage.nextStepButton","Next Step")," ",e.jsx(T,{size:16})]})})]}),l===2&&e.jsxs("div",{className:"bg-white border border-slate-100 shadow-xl rounded-3xl p-10 flex flex-col gap-8 animate-in fade-in slide-in-from-bottom-4 duration-500",children:[i&&e.jsxs("div",{className:"border border-emerald-100 bg-emerald-50/30 p-6 rounded-2xl space-y-4",children:[e.jsxs("p",{className:"text-label font-bold uppercase tracking-widest text-emerald-700 flex items-center gap-2",children:[e.jsx(X,{size:12})," ",t("orgRegisterPage.step2.authLabel","Step 1 — Authorise access")]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("code",{className:"flex-1 text-xs font-mono bg-white border border-emerald-100 px-4 py-3 text-slate-800 break-all rounded-xl shadow-sm",children:i}),e.jsx("button",{onClick:S,className:"shrink-0 flex items-center gap-2 px-4 py-3 bg-white border border-emerald-100 rounded-xl text-xs font-bold text-emerald-600 hover:bg-brand-sienna hover:text-white transition-colors shadow-sm",children:P?e.jsxs(e.Fragment,{children:[e.jsx(O,{size:14})," ",t("orgRegisterPage.copied","Copied")]}):e.jsxs(e.Fragment,{children:[e.jsx(D,{size:14})," ",t("orgRegisterPage.copy","Copy")]})})]}),e.jsxs("ol",{className:"text-xs text-slate-600 font-serif italic leading-relaxed list-decimal list-inside space-y-2 pl-2",children:[e.jsx("li",{children:t("orgRegisterPage.step2.instruction1","Open Google Drive and right-click your folder → Share.")}),e.jsx("li",{children:t("orgRegisterPage.step2.instruction2","Paste the email above and set access to Viewer.")}),e.jsx("li",{children:t("orgRegisterPage.step2.instruction3","Click Send, then return here to paste the folder link.")})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:"block text-label font-bold uppercase tracking-widest text-slate-500",children:[i?t("orgRegisterPage.step2Prefix","Step 2 — "):"",t("orgRegisterPage.driveFolderLabel","Google Drive Folder URL")]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(q,{className:"absolute left-4 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-500"}),e.jsx("input",{type:"url",value:o,onChange:s=>{V(s.target.value),d("idle"),f(null),x(null)},placeholder:t("orgRegisterPage.driveFolderPlaceholder","https://drive.google.com/drive/folders/..."),className:"w-full border border-slate-200 bg-slate-50 rounded-2xl pl-11 pr-6 py-4 text-sm font-mono focus:outline-none focus:border-emerald-500 focus:bg-white transition-colors placeholder:text-slate-300 shadow-sm"})]}),e.jsxs("button",{onClick:K,disabled:!o.trim()||n==="verifying",className:"px-6 py-4 bg-slate-900 text-white text-xs font-bold uppercase tracking-widest rounded-2xl hover:bg-brand-sienna transition-colors shadow-lg shadow-slate-200 hover:shadow-emerald-100 disabled:opacity-40 disabled:pointer-events-none flex items-center gap-2 shrink-0",children:[n==="verifying"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(j,{size:14}),t("orgRegisterPage.verifyButton","Verify")]})]}),n==="ok"&&c&&e.jsxs("div",{className:"mt-4 flex items-start gap-4 p-5 bg-emerald-50 border border-emerald-100 rounded-2xl animate-in zoom-in-95 duration-300",children:[e.jsx("div",{className:"w-10 h-10 bg-emerald-500 rounded-full flex items-center justify-center shrink-0",children:e.jsx(j,{className:"w-6 h-6 text-white"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-bold text-emerald-900",children:t("orgRegisterPage.connectionSuccess","Connection Successful")}),c.name&&e.jsx("p",{className:"text-xs text-emerald-700 font-serif italic",children:c.name}),e.jsx("p",{className:"text-label text-emerald-600 font-mono mt-1 uppercase font-bold tracking-wider",children:c.fileCount!=null?t("orgRegisterPage.itemsFound","{N} items found").replace("{N}
1",String(c.fileCount)):t("orgRegisterPage.folderValidation","Link validated")})]})]}),n==="error"&&w&&e.jsxs("div",{className:"mt-4 flex items-start gap-4 p-5 bg-rose-50 border border-rose-100 rounded-2xl animate-in zoom-in-95 duration-300",children:[e.jsx("div",{className:"w-10 h-10 bg-rose-500 rounded-full flex items-center justify-center shrink-0",children:e.jsx(Q,{className:"w-6 h-6 text-white"})}),e.jsx("p",{className:"text-sm text-rose-700 font-serif italic mt-2",children:w})]})]}),N&&e.jsx("div",{className:"p-4 bg-rose-50 border border-rose-100 rounded-2xl text-sm text-rose-700 font-serif italic",children:N}),e.jsxs("div",{className:"flex justify-between items-center pt-4",children:[e.jsxs("button",{onClick:()=>h(1),className:"inline-flex items-center gap-2 px-6 py-3 border border-slate-200 rounded-xl text-slate-500 text-xs font-bold uppercase tracking-widest hover:bg-slate-50 hover:text-slate-900 transition-colors",children:[e.jsx(Z,{size:14})," ",t("orgRegisterPage.backButton","Back")]}),e.jsxs("button",{onClick:C,disabled:y||o.trim()!==""&&n!=="ok",className:"inline-flex items-center gap-3 px-8 py-4 bg-slate-900 text-white text-sm font-bold rounded-2xl hover:bg-brand-sienna shadow-lg shadow-slate-200 hover:shadow-emerald-100 transition-colors disabled:opacity-40 disabled:pointer-events-none",children:[y?e.jsx(A,{size:16,className:"animate-spin"}):e.jsx(_,{size:16}),o.trim()?t("orgRegisterPage.submitComplete","Complete Registration"):t("orgRegisterPage.submitFinish","Finish Setup")]})]})]})]})]})};export{le as OrgRegisterPage};

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.