1import{i as z,a as P,o as A}from"../chunks/chunk-BCu5Hj0r.js";import{r,d as t,e}from"../chunks/chunk-D390FdIe.js";import{R as E}from"../chunks/chunk-DyojbYEH.js";import{i as U}from"../chunks/chunk-CdpMKUZ0.js";import{i as C,N as D}from"../chunks/chunk-Cyf8l42v.js";import"../chunks/chunk-VK2BfrL5.js";import"../chunks/chunk-gf2KyZyl.js";import"../chunks/chunk-Zc--m2dZ.js";import"../chunks/chunk-D3JVkGXf.js";/* empty css */import"../chunks/chunk-BBqaYHmK.js";import"../chunks/chunk-QgW17YsR.js";import"../chunks/chunk-BoBf6Ril.js";/* empty css *//* empty css */const O=[{value:"researcher",label:"Researcher",description:"Removes or limits your presence in publication rankings, dossiers, and talent analytics."},{value:"oss-contributor",label:"Open-source contributor",description:"Applies to GitHub activity and OSS contribution data indexed from public repositories."},{value:"inventor",label:"Inventor",description:"Applies to patent data sourced from public patent offices (EPO, USPTO, WIPO)."}],_=[{value:"all",label:"Remove all mentions"},{value:"ranking-only",label:"Remove from rankings only (keep name/bio)"},{value:"dossier-only",label:"Remove dossier page only"},{value:"name-only",label:"Remove named entries from report views"}],j="We could not send the confirmation message. Please try again.",L="An existing request for this email and role remains unchanged. To change its scope or context, contact the privacy team through /state/privacy.",h={width:"100%",maxWidth:"380px",padding:"0.5rem 0.75rem",fontFamily:"inherit",fontSize:"1rem",border:"1px solid #c8c8c0",background:"#fafaf8",color:"#1a1a18",boxSizing:"border-box"},q={...h,appearance:"auto"},u={display:"block",marginBottom:"0.35rem",fontWeight:600,fontSize:"0.9rem"},m={marginBottom:"1.25rem"};function B(){const n=r.useRef(null),[f,x]=r.useState("researcher"),[y,w]=r.useState("all"),p=r.useRef(null),g=r.useRef(null),[l,s]=r.useState("idle"),[S,c]=r.useState(null);async function R(o){o.preventDefault();const i=(n.current?.value??"").trim();if(!i||!i.includes("@")){s("error"),c("A valid email address is required.");return}s("submitting"),c(null);const d={email:i,subject_kind:f,scope:y},v=(p.current?.value??"").trim();v&&(d.notes=v);const b=(g.current?.value??"").trim();b&&(d.github_login=b);try{const a=await fetch("/api/state/opt-out",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)});if(n.current&&(n.current.value=""),p.current&&(p.current.value=""),!a.ok){const k=await a.json().catch(()=>({}));s("error"),c(a.status===503?j:a.status===409?L:k.error??`Request failed (${a.status}).`);return}const T=await a.json().catch(()=>({}));if(T.alreadyRequested&&T.verified){s("already-verified");return}s("sent")}catch(a){n.current&&(n.current.value=""),s("error"),c(a instanceof Error?a.message:"Network error.")}}return t(E,{children:[t("header",{children:[e("h1",{"data-testid":"opt-out-title",children:"Request data opt-out"}),e("p",{"data-testid":"opt-out-intent",style:{lineHeight:"1.6",marginTop:"0.5rem",color:"#444440"},children:"Under GDPR Article 21 you have the right to object to the processing of your personal data. Complete this form to request removal or restriction of your data from the Quantum, in Data report. We will send a confirmation link to the address you provide and action the request within one calendar month."})]}),l==="sent"?t("div",{"data-testid":"opt-out-success",role:"alert",style:{marginTop:"1.5rem",padding:"1rem",border:"1px solid #c8c8c0",background:"#f6f4f2"},children:[e("strong",{children:"Request received."})," Check your inbox to verify the request. Verification does not itself make suppression effective; the privacy team will apply it within one statutory month."]}):l==="already-verified"?t("div",{"data-testid":"opt-out-already-verified",role:"status",style:{marginTop:"1.5rem",padding:"1rem",border:"1px solid #c8c8c0",background:"#f6f4f2"},children:[e("strong",{children:"This request is already verified."})," No new confirmation message was sent. The privacy team handles suppression separately."]}):t("form",{onSubmit:R,"data-testid":"opt-out-form",style:{marginTop:"1.5rem"},noValidate:!0,children:[t("div",{style:m,children:[e("label",{htmlFor:"opt-out-email",style:u,"aria-label":"Your email address",children:"Your email address"}),e("input",{id:"opt-out-email",name:"email",type:"email",ref:n,required:!0,autoComplete:"email",placeholder:"[email protected]","data-testid":"opt-out-email-input","aria-describedby":"opt-out-email-hint",style:h}),e("p",{id:"opt-out-email-hint",style:{marginTop:"0.3rem",fontSize:"0.8rem",color:"#555550"},children:"Used only to send the confirmation link. We store a SHA-256 hash, not the address itself."})]}),t("fieldset",{style:{border:"none",padding:0,marginBottom:"1.25rem"},"aria-describedby":"opt-out-kind-hint",children:[e("legend",{style:{...u,marginBottom:"0.5rem"},children:"I am requesting as a"}),e("p",{id:"opt-out-kind-hint",style:{marginBottom:"0.5rem",fontSize:"0.8rem",color:"#555550"},children:"You may submit separate requests for each role."}),O.map(({value:o,label:i,description:d})=>
1t("label",{style:{display:"flex",alignItems:"flex-start",gap:"0.5rem",marginBottom:"0.5rem",cursor:"pointer",fontSize:"0.95rem"},children:[e("input",{type:"radio",name:"subject_kind",value:o,checked:f===o,onChange:()=>x(o),"data-testid":`opt-out-kind-${o}`,style:{marginTop:"0.2rem",flexShrink:0}}),t("span",{children:[e("strong",{children:i}),e("br",{}),e("span",{style:{color:"#555550",fontSize:"0.85rem"},children:d})]})]},o))]}),t("div",{style:m,children:[e("label",{htmlFor:"opt-out-scope",style:u,children:"Scope of removal"}),e("select",{id:"opt-out-scope",name:"scope",value:y,onChange:o=>w(o.target.value),"data-testid":"opt-out-scope-select",style:q,children:_.map(({value:o,label:i})=>e("option",{value:o,children:i},o))})]}),t("div",{style:m,children:[t("label",{htmlFor:"opt-out-github",style:u,children:["GitHub username"," ",e("span",{style:{fontWeight:400,color:"#555550"},children:"(optional)"})]}),e("input",{id:"opt-out-github",name:"github_login",type:"text",ref:g,placeholder:"your-github-handle","data-testid":"opt-out-github-input",autoComplete:"username",style:h}),e("p",{style:{marginTop:"0.3rem",fontSize:"0.8rem",color:"#555550"},children:"Helps us locate OSS contributor records when your email may not match. Do not include email addresses in this field or the additional context."})]}),t("div",{style:m,children:[t("label",{htmlFor:"opt-out-notes",style:u,children:["Additional context"," ",e("span",{style:{fontWeight:400,color:"#555550"},children:"(optional)"})]}),e("textarea",{id:"opt-out-notes",name:"notes",ref:p,rows:3,maxLength:2e3,placeholder:"Any context that helps us locate your records.","data-testid":"opt-out-notes-textarea",style:{...h,resize:"vertical",minHeight:"80px"}})]}),e("button",{type:"submit","data-testid":"opt-out-submit",disabled:l==="submitting",style:{padding:"0.5rem 1.25rem",fontFamily:"inherit",fontSize:"1rem",border:"1px solid #1a1a18",background:"#1a1a18",color:"#f6f4f2",cursor:l==="submitting"?"wait":"pointer"},children:l==="submitting"?"Sendingâ¦":"Send confirmation link"}),l==="error"&&S&&e("p",{"data-testid":"opt-out-error",role:"alert",style:{marginTop:"0.75rem",color:"#a13a1a"},children:S})]}),e("p",{style:{marginTop:"2rem",fontSize:"0.85rem",color:"#555550",lineHeight:"1.5"},children:"Requests are processed within one calendar month as required by GDPR Art. 12(3). The raw email address is never written to disk. See our methodology page for the full data-handling policy."})]})}const N=Object.freeze(Object.defineProperty({__proto__:null,default:B},Symbol.toStringTag,{value:"Module"})),te={serverOnlyHooks:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:!1}},isClientRuntimeLoaded:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:!0}},onBeforeRenderEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},dataEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},onRenderClient:{type:"standard",definedAtData:{filePathToShowToUser:"vike-react/__internal/integration/onRenderClient",fileExportPathToShowToUser:[]},valueSerialized:{type:"pointer-import",value:A}},Page:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/state/opt-out/+Page.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:N}},guard:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/+guard.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:U}},hydrationCanBeAborted:{type:"standard",definedAtData:{filePathToShowToUser:"vike-react/config",fileExportPathToShowToUser:["default","hydrationCanBeAborted"]},valueSerialized:{type:"js-serialized",value:!0}},prefetchStaticAssets:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/+config.ts",fileExportPathToShowToUser:["default","prefetchStaticAssets"]},valueSerialized:{type:"js-serialized",value:"viewport"}},hooksTimeout:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/state/+config.ts",fileExportPathToShowToUser:["default","hooksTimeout"]},valueSerialized:{type:"js-serialized",value:{data:{error:6e4,warning:4e3}}}},Layout:{type:"cumulative",definedAtData:[{filePathToShowToUser:"/components/state/shells/NoCookieGuardLayout/NoCookieGuardLayout.t
1sx",fileExportPathToShowToUser:["NoCookieGuardLayout"]},{filePathToShowToUser:"/pages/+Layout.tsx",fileExportPathToShowToUser:[]}],valueSerialized:[{type:"pointer-import",value:D},{type:"plus-file",exportValues:P}]},title:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/state/+config.ts",fileExportPathToShowToUser:["default","title"]},valueSerialized:{type:"js-serialized",value:"Quantum, in Data 2026"}},onBeforeRenderClient:{type:"cumulative",definedAtData:[{filePathToShowToUser:"/pages/state/+onBeforeRenderClient.ts",fileExportPathToShowToUser:[]}],valueSerialized:[{type:"plus-file",exportValues:C}]},Loading:{type:"standard",definedAtData:{filePathToShowToUser:"vike-react/__internal/integration/Loading",fileExportPathToShowToUser:[]},valueSerialized:{type:"pointer-import",value:z}}};export{te as configValuesSerialized};
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.