PageSourceSearch

https://core30-web-production.up.railway.app/assets/Settings-CKCXlufr.js

js core30-web-production.up.railway.app collected 2026-10-03 12:11:55 UTC 24,570 bytes, 1 lines download raw bytes

1import{r,j as e,b as u,z as o,x as de,m as me,y as xe}from"./index-BT02rLOg.js";import{g as ue,T as pe,a as be}from"./theme-BLf8pNn-.js";import{L as h}from"./loader-circle-CXTGJTbD.js";import{C as K}from"./circle-check-big-CbpFjuB1.js";import{T as V}from"./triangle-alert-C_PlogRD.js";function he(){const[a,N]=r.useState(ue()),f=d=>N(be(d));return e.jsx("div",{className:"flex gap-2",children:pe.map(d=>{const p=a===d.id;return e.jsxs("button",{type:"button",onClick:()=>f(d.id),"aria-pressed":p,className:`flex-1 px-4 py-3 rounded-md border text-left transition-colors ${p?"bg-accent border-accent text-accent-contrast":"bg-surface-raised border-control text-content-secondary hover:border-accent-border"}`,children:[e.jsx("div",{className:"text-sm font-semibold",children:d.label}),e.jsx("div",{className:`text-xs mt-0.5 ${p?"text-accent-contrast":"text-content-muted"}`,children:d.hint})]},d.id)})})}const H=[],Z=[{key:"anthropic",label:"Anthropic (Claude)",placeholder:"sk-ant-...",testable:!0,help:"Get your key at console.anthropic.com",helpUrl:"https://console.anthropic.com/settings/keys"},{key:"openai",label:"OpenAI",placeholder:"sk-...",testable:!0,help:"Get your key at platform.openai.com/api-keys",helpUrl:"https://platform.openai.com/api-keys"},{key:"gemini",label:"Google Gemini",placeholder:"AIza...",testable:!0,help:"Get your key at aistudio.google.com",helpUrl:"https://aistudio.google.com/apikey"},{key:"zerogpt",label:"ZeroGPT (AI Detection)",placeholder:"Your ZeroGPT API key",testable:!0,help:"Create an account and fund balance at zerogpt.com/my-account.",helpUrl:"https://www.zerogpt.com/my-account"},{key:"winston",label:"Winston AI (AI Detection)",placeholder:"API key",testable:!0,help:"Get your key at gowinston.ai/dashboard",helpUrl:"https://gowinston.ai"},{key:"gptzero",label:"GPTZero (AI Detection)",placeholder:"API key",testable:!0,help:"Get your key at gptzero.me/developers",helpUrl:"https://gptzero.me/developers"},{key:"dataforseo_login",label:"DataForSEO Login",placeholder:"[email protected]",testable:!0},{key:"dataforseo_password",label:"DataForSEO Password",placeholder:"password"},{key:"google_places",label:"Google Places API (New)",placeholder:"AIza...",testable:!0,help:'Get a key at console.cloud.google.com → APIs & Services → Credentials. Enable "Places API (New)".',helpUrl:"https://console.cloud.google.com/apis/credentials"},{key:"pictory_client_id",label:"Pictory Client ID",placeholder:"Client ID",testable:!0},{key:"pictory_client_secret",label:"Pictory Client Secret",placeholder:"Client Secret"}],$=[{key:"google_client_id",label:"Google Client ID",placeholder:"xxxxxxxxxxxx-xxxxxxxxxxxxx.apps.googleusercontent.com",help:"Required for YouTube upload. Get from Google Cloud Console → APIs & Services → Credentials → OAuth 2.0 Client IDs.",helpUrl:"https://console.cloud.google.com/apis/credentials"},{key:"google_client_secret",label:"Google Client Secret",placeholder:"GOCSPX-...",help:"Required for YouTube upload. Get from Google Cloud Console → APIs & Services → Credentials → OAuth 2.0 Client IDs.",helpUrl:"https://console.cloud.google.com/apis/credentials"}];function A(a){return a==="dataforseo_login"||a==="dataforseo_password"?["dataforseo_login","dataforseo_password"]:a==="pictory_client_id"||a==="pictory_client_secret"?["pictory_client_id","pictory_client_secret"]:[a]}function we({auth:a,onBack:N,onLogout:f,onOpenBilling:d}){const[p,P]=r.useState({}),[E,b]=r.useState(null),[y,m]=r.useState(""),[_,T]=r.useState({}),[q,D]=r.useState({}),[M,J]=r.useState(!0),[X,G]=r.useState("zerogpt"),[z,O]=r.useState(!1),[Q,w]=r.useState({}),[L,ee]=r.useState(!1),[x,U]=r.useState(null),[k,B]=r.useState(!1),[te,C]=r.useState(!1),[se,W]=r.useState(!1),[S,I]=r.useState(""),[g,F]=r.useState(!1);async function ne(){if(S.trim().toLowerCase()===((a==null?void 0:a.email)||"").toLowerCase()){F(!0);try{await u.post("/account/delete"),o.success("Your account has been deleted. API credentials have been removed immediately; other data will be deleted per our retention schedule.",{duration:8e3}),f()}catch(t){o.error(t.message||"Failed to delete account. Please try again."),F(!1)}}}r.useEffect(()=>{le(),oe(),ae()},[]);async function ae(){try{U(await u.get("/account/batch-library-pro"))}catch{U(null)}}async function re(){if(!(!x||k)){B(!0);try{await u.put("/account/batch-library-pro",{enabled:!x.storedEnabled});const t=await u.get("/account/batch-library-pro");de(t);
1try{sessionStorage.setItem("core30_batch_library_pro_notice",t.effectiveEnabled?"enabled":"disabled")}catch{}window.location.reload()}catch(t){o.error(t.message||"Batch Library could not be updated."),B(!1)}}}function ge(t){return t}function R(t,s){const n=Q[t];return s!=null&&s.set?n?n.severity==="ok"?{color:"rgb(var(--success-solid))",title:n.reason||"Valid"}:n.severity==="warning"?{color:"rgb(var(--warning-solid))",title:n.reason||"Warning"}:{color:"rgb(var(--danger-solid))",title:n.reason||"Invalid"}:{color:"rgb(var(--text-subtle))",title:"Stored (status not checked)"}:{color:"rgb(var(--text-subtle))",title:"Not configured"}}async function le(){try{const t=await u.get("/credentials");P(t.credentials||{}),ee(!!t.providerKeysEnabled)}catch(t){console.error("Failed to load credentials:",t.message)}finally{J(!1)}}async function oe(){var t;try{const s=await u.get("/settings");(t=s.settings)!=null&&t.ai_detection_provider&&G(s.settings.ai_detection_provider)}catch(s){console.error("Failed to load settings:",s.message)}}async function ie(t){G(t),O(!0);try{await u.put("/settings/setting",{key:"ai_detection_provider",value:t}),o.success(`AI detection set to ${t==="zerogpt"?"ZeroGPT":"None"}`)}catch{o.error("Failed to save AI detection provider")}finally{O(!1)}}async function j(t){if(!y.trim())return o.error("Please enter a value");T(s=>({...s,[t]:!0}));try{const s=await me(t,y.trim());P(l=>({...l,[t]:{set:!0,masked:s.masked,updated_at:new Date().toISOString()}})),b(null),m("");const n=[...Z,...H,...$].find(l=>l.key===t);o.success(`${(n==null?void 0:n.label)||t} saved`),w(l=>{const i={...l};for(const c of A(t))delete i[c];return i})}catch(s){o.error(s.message||"Failed to save")}finally{T(s=>({...s,[t]:!1}))}}async function ce(t){D(s=>({...s,[t]:!0}));try{const s=await xe(t);s.success?o.success(s.message||"Key is valid"):o.error(s.error||"Test failed"),s.status&&w(n=>({...n,...Object.fromEntries(A(t).map(l=>[l,s.status]))}))}catch(s){if(s.status===429){const n={ok:!1,severity:"warning",reason:"Could not verify — test limit reached; try again later"};w(l=>({...l,...Object.fromEntries(A(t).map(i=>[i,n]))})),o.error(n.reason)}else o.error(s.message||"Test failed")}finally{D(s=>({...s,[t]:!1}))}}function Y(t){b(t),m("")}return e.jsxs("div",{className:"min-h-screen bg-canvas text-content",children:[e.jsxs("header",{className:"border-b border-line px-6 py-4 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:N,className:"text-content-muted hover:text-content transition-colors",children:"← Back"}),e.jsx("h1",{className:"text-lg font-semibold",children:"Settings"})]}),e.jsx("button",{onClick:f,className:"px-4 py-2 bg-danger-solid/20 hover:bg-danger-solid/30 text-danger border border-danger/30 rounded-md text-sm",children:"Logout"})]}),e.jsxs("main",{className:"max-w-3xl mx-auto px-6 py-8 space-y-6",children:[e.jsxs("div",{className:"bg-surface border border-line rounded-lg p-6",children:[e.jsx("h2",{className:"text-lg font-semibold mb-1",children:"Appearance"}),e.jsx("p",{className:"text-sm text-content-muted mb-4",children:"Choose your color theme. Applies instantly and is remembered on this device."}),e.jsx(he,{})]}),e.jsxs("div",{className:"bg-surface border border-line rounded-lg p-6",children:[e.jsx("h2",{className:"text-lg font-semibold mb-1",children:"Account"}),e.jsx("p",{className:"text-sm text-content-muted",children:a==null?void 0:a.email}),e.jsx("p",{className:"text-xs text-content-subtle mt-1",children:"Connection credentials are encrypted and stored securely on the server. They are never exposed in your browser."})]}),e.jsxs("div",{className:"bg-surface border border-accent-border/50 rounded-lg p-6 flex flex-wrap items-center justify-between gap-5",children:[e.jsxs("div",{className:"max-w-xl",children:[e.jsx("h2",{className:"text-lg font-semibold mb-1",children:"Client interview"}),e.jsx("p",{className:"text-sm leading-6 text-content-muted",children:"Run a focused business interview before you create the client in the Wizard."})]}),e.jsx("button",{type:"button",onClick:()=>C(!0),className:"px-4 py-2.5 bg-accent hover:bg-accent-hover text-accent-contrast rounded-md text-sm font-semibold transition-colors",children:"NEW CLIENT INTERVIEW"})]}),(x==null?void 0:x.available)&&e.jsxs("div",{className:"bg-surface border border-accent-border/50 rounded-lg p-6 flex flex-wrap items-center justify-between gap-4",children:[e.jsxs("div",{className:"max-w-xl",children:[e.jsx("h2",{className:"text-lg font-semibold mb-1",children:"Batch Library"}),e.jsx("p",{className:"text-sm text-content-muted",children:"Create, reopen, revise, and rerun permanent content Batches. The existing Content Generator remains available."}),x.storedEnabled&&e.jsx("p",{className:"mt-2 text-xs text-content-subtle",children:"Your Batches and generated pages are preserved. Work already running is not cancelled if you disable access. Re-enable Batch Library to open Batch History again."})]}),e.jsx("button",{type:"button","aria-pressed":x.storedEnabled===!0,onClick:re,disabled:k,className:"px-4 py-2.5 bg-accent hover:bg-accent-hover text-accent-contrast rounded-md text-sm font-semibold transition-colors disabled:opacity-50",children:k?"S
1aving…":x.storedEnabled?"Disable Batch access":"Try Batch Library"})]}),e.jsxs("div",{className:"bg-surface border border-accent-border/50 rounded-lg p-6 flex flex-wrap items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-1",children:"Usage & Billing"}),e.jsx("p",{className:"text-sm text-content-muted",children:"Review monthly usage, plans, payment methods, invoices, and billing terms."})]}),e.jsx("button",{onClick:d,className:"px-4 py-2.5 bg-accent hover:bg-accent-hover text-accent-contrast rounded-md text-sm font-semibold transition-colors",children:"Open Usage & Billing"})]}),e.jsxs("div",{className:"bg-surface border border-line rounded-lg p-6",children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"Image Generation"}),e.jsx("p",{className:"text-sm text-content",children:"OpenAI (gpt-image-2)"}),e.jsx("p",{className:"text-xs text-content-subtle mt-2",children:"Core30's image generator."})]}),e.jsxs("div",{className:"bg-surface border border-line rounded-lg p-6",children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"AI Detection"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("label",{className:"block text-sm text-content-muted mb-1",children:"Provider"}),e.jsxs("select",{value:X,onChange:t=>ie(t.target.value),disabled:z,className:"w-full px-3 py-2 bg-surface-raised border border-line rounded-md text-content text-sm focus:outline-none focus:border-accent-border",children:[e.jsx("option",{value:"zerogpt",children:"ZeroGPT"}),e.jsx("option",{value:"none",children:"None (Disable)"})]})]}),z&&e.jsx(h,{size:14,className:"animate-spin text-accent-text mt-6"})]}),e.jsxs("div",{className:"text-xs text-content-subtle mt-2",children:[e.jsx("p",{className:"mb-2",children:"Scores content for AI detection probability during generation."}),e.jsx("p",{children:"Core30 currently supports ZeroGPT for this check. Disable detection here if you do not want it included in generation."})]})]}),e.jsxs("div",{className:"bg-surface border border-line rounded-lg p-6 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Connected Services"}),e.jsxs("div",{className:"flex items-center gap-3 text-xs text-content-muted",children:[e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-success-solid"})," Valid"]}),e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-warning-solid"})," Low balance"]}),e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-danger-solid"})," Invalid"]}),e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-content-subtle"})," Not set"]})]})]}),e.jsxs("div",{className:"bg-canvas border border-line rounded-md p-3 text-xs text-content-muted leading-relaxed",children:["Core30 supplies all AI-provider credentials. Optional connection credentials are encrypted at rest and used only to connect the services you authorize. See our"," ",e.jsx("a",{href:"/privacy",className:"text-accent-text hover:text-accent-text underline",children:"Privacy Policy"})," ","for details on how credentials are stored and processed."]}),e.jsxs("div",{className:"bg-canvas border border-line rounded-md p-3 text-xs text-content-muted leading-relaxed space-y-2",children:[L?e.jsx("p",{children:"Your saved provider keys are used for the services they cover; work without a saved key runs on Core30’s platform credentials and applies your membership and account balance."}):e.jsx("p",{children:"You do not need to supply Anthropic, OpenAI, Gemini, Pictory, detector, DataForSEO, or Google Places keys. Core30 routes those services through platform-owned credentials and applies your membership and account balance."}),e.jsxs("ul",{className:"list-none space-y-1 pl-2",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-content-secondary",children:"YouTube / Google OAuth:"})," connect your own channel when you want Core30 to upload generated videos."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-content-secondary",children:"WordPress:"})," configure each client’s publishing connection from that client’s settings."]})]}),e.jsx("p",{children:"These are service connections, not alternate AI billing paths."})]}),M?e.jsxs("div",{className:"flex items-center justify-center py-4",children:[e.jsx(h,{size:16,className:"animate-spin text-accent-text mr-2"}),e.jsx("span",{className:"text-sm text-content-muted",children:"Loading credentials..."})]}):[...L?Z:[],...H].map(t=>{const s=p[t.key],n=E===t.key,l=_[t.key],i=q[t.key],c=R(t.key,s);return e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm text-content-muted mb-1",children:[e.jsx("span",{"aria-label":c.title,title:c.title,className:"inline-block w-2.5 h-2.5 rounded-full flex-shrink-0",style:{backgroundColor:c.color}}),e.jsx("span",{children:t.label}),(s==null?void 0:s.set)&&!n&&e.jsxs("span",{className:"text-xs text-success inline-flex items-center gap-1",children:[e.jsx(K,{size:10})," Set"]})]}),t.help&&!(s!=null&&s.set)&&!n&&e.jsxs("p",{className:"text-xs text-content-subtle mb-1.5",children:[t.help," ",t.helpUrl&&e.jsx("a",{href:t.helpUrl,target:"_blank",rel:"noopener noreferrer",className:"text-accent-text hover:underline",children:"Open Console"})]}),t.usageHint&&e.jsx("p",{className:"text-xs text-content-muted italic mb-1.5",children:t.usageHint}),n?e.jsx("input",{type:"password",value:y,onChange:v=>m(v.target.value),placeholder:t.placeholder,autoFocus:!0,className:"w-full px-3 py-2 bg-surface-raised border border-accent-border/50 rounded-md text-content placeholder-content-subtle focus:outline-none focus:border-accent-border text-sm",onKeyDown:v=>{v.key==="Enter"&&j(t.key),v.key==="Escape"&&(b(null),m(""))}}):e.jsx("div",{className:"w-full px-3 py-2 bg-surface-raised border border-line rounded-md text-sm text-content-muted font-mono select-none",style:{userSelect:"none",WebkitUserSelect:"none"},children:s!=null&&s.set?"••••••••":"Not set"}),t.costWarning&&(s==null?void 0:s.set)&&e.jsx("p",{className:"mt-1.5 text-xs text-warning bg-warning-solid/5 border border-warning/20 rounded px-2 py-1.5 leading-relaxed",children:t.costWarning})]}),e.jsx("div",{className:"flex gap-2 mt-6",children:n?e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>j(t.key),disabled:l,className:"px-3 py-2 bg-accent hover:bg-accent-hover rounded-md text-sm font-medium transition-colors disabled:opacity-50",children:l?e.jsx(h,{size:14,className:"animate-spin"}):"Save"}),e.jsx("button",{onClick:()=>{b(null),m("")},className:"px-3 py-2 bg-surface-overlay hover:bg-surface-overlay rounded-md text-sm transition-colors",children:"Cancel"})]}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>Y(t.key),className:"px-3 py-2 bg-surface-overlay hover:bg-surface-overlay rounded-md text-sm transition-colors",children:s!=null&&s.set?"Update":"Set"}),(s==null?void 0:s.set)&&t.testable&&e.jsx("button",{onClick:()=>ce(t.key),disabled:i,className:"px-3 py-2 bg-surface-overlay hover:bg-surface-overlay rounded-md text-sm transition-colors disabled:opacity-50",children:i?e.jsx(h,{size:14,className:"animate-spin"}):"Test"})]})})]},t.key)})]}),e.jsxs("div",{className:"bg-surface border border-line rounded-lg p-6 space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold mb-1",children:"YouTube / Google OAuth"}),e.jsx("p",{className:"text-xs text-content-subtle mb-2",children:"Required for uploading generated videos to YouTube. Both fields come from the same OAuth 2.0 Client ID in Google Cloud Console."}),$.map(t=>{const s=p[t.key],n=E===t.key,l=_[t.key],i=R(t.key,s);return e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm text-content-muted mb-1",children:[e.jsx("span",{"aria-label":i.title,title:i.title,className:"inline-block w-2.5 h-2.5 rounded-full flex-shrink-0",style:{backgroundColor:i.color}}),e.jsx("span",{children:t.label}),(s==null?void 0:s.set)&&!n&&e.jsxs("span",{className:"ml-2 text-xs text-success inline-flex items-center gap-1",children:[e.jsx(K,{size:10})," Set"]})]}),t.help&&!(s!=null&&s.set)&&!n&&e.jsxs("p",{className:"text-xs text-content-subtle mb-1.5",children:[t.help," ",t.helpUrl&&e.jsx("a",{href:t.helpUrl,target:"_blank",rel:"noopener noreferrer",className:"text-accent-text hover:underline",children:"Open Console"})]}),t.usageHint&&e.jsx("p",{className:"text-xs text-content-muted italic mb-1.5",children:t.usageHint}),n?e.jsx("input",{type:"password",value:y,onChange:c=>m(c.target.value),placeholder:t.placeholder,autoFocus:!0,className:"w-full px-3 py-2 bg-surface-raised border border-accent-border/50 rounded-md text-content placeholder-content-subtle focus:outline-none focus:border-accent-border text-sm",onKeyDown:c=>{c.key==="Enter"&&j(t.key),c.key==="Escape"&&(b(null),m(""))}}):e.jsx("div",{className:"w-full px-3 py-2 bg-surface-raised border border-line rounded-md text-sm text-content-muted font-mono select-none",style:{userSelect:"none",WebkitUserSelect:"none"},children:s!=null&&s.set?"••••••••":"Not set"})]}),e.jsx("div",{className:"flex gap-2 mt-6",children:n?e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>j(t.key),disabled:l,className:"px-3 py-2 bg-accent hover:bg-accent-hover rounded-md text-sm font-medium transition-colors disabled:opacity-50",children:l?e.jsx(h,{size:14,className:"animate-spin"}):"Save"}),e.jsx("button",{onClick:()=>{b(null),m("")},className:"px-3 py-2 bg-surface-overlay hover:bg-surface-overlay rounded-md text-sm transition-colors",children:"Cancel"})]}):e.jsx("button",{onClick:()=>Y(t.key),className:"px-3 py-2 bg-surface-overlay hover:bg-surface-overlay rounded-md text-sm transition-colors",children:s!=null&&s.set?"Update":"Set"})})]},t.key)})]}),e.jsxs("div",{className:"bg-surface border border-danger/30 rounded-lg p-6 space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(V,{size:16,className:"text-danger"}),e.jsx("h2",{className:"text-lg font-semibold text-danger",children:"Delete Account"})]}),e.jsxs("p",{className:"text-sm text-content-muted leading-relaxed",children:["Deleting your account will immediately remove your stored API credentials and sign you out. Other data will be deleted per the schedule in our"," ",e.jsx("a",{href:"/privacy",className:"text-accent-text hover:text-accent-text underline",children:"Privacy Policy"}),"."]}),e.jsx("button",{onClick:()=>{I(""),W(!0)},className:"px-4 py-2 bg-danger-solid/20 hover:bg-danger-solid/30 text-danger border border-danger/30 rounded-md text-sm font-medium transition-colors",children:"Delete my account"})]})]}),te&&e.jsx("div",{className:"fixed inset-0 z-50 grid place-items-center bg-scrim/70 p-4",role:"presentation",onClick:t=>t.target===t.currentTarget&&C(!1),children:e.jsxs("section",{role:"dialog","aria-modal":"true","aria-labelledby":"
1client-interview-info-title",className:"w-full max-w-lg rounded-xl border border-line bg-surface p-6 shadow-2xl sm:p-7",children:[e.jsx("h2",{id:"client-interview-info-title",className:"text-2xl font-semibold tracking-tight text-content-primary",children:"Interview a new client"}),e.jsxs("div",{className:"mt-4 space-y-3 text-sm leading-6 text-content-secondary",children:[e.jsx("p",{children:"This standalone interview is designed for a live conversation, including an in-person meeting or a Zoom call. It does not create or change a client record while you are interviewing."}),e.jsx("p",{children:"When you approve the answers, Core30 saves a structured interview that the Wizard can find later. You can also download the same answers as JSON for Core30 or as an editable Word document."}),e.jsx("p",{children:"When you create the client, the Wizard will offer a matching saved interview. Importing fills only empty interview-backed fields; it does not replace information already saved for the client."})]}),e.jsxs("div",{className:"mt-7 flex flex-col-reverse gap-3 sm:flex-row sm:justify-end",children:[e.jsx("button",{type:"button",onClick:()=>C(!1),className:"rounded-lg px-4 py-2.5 text-sm font-semibold text-content-secondary hover:text-content-primary",children:"Cancel"}),e.jsx("button",{type:"button",onClick:()=>{window.location.href="/interview-demo"},className:"rounded-lg bg-accent px-5 py-2.5 text-sm font-semibold text-accent-contrast hover:bg-accent-hover",children:"Start client interview"})]})]})}),se&&e.jsx("div",{className:"fixed inset-0 bg-scrim/70 flex items-center justify-center z-50 p-4",children:e.jsxs("div",{className:"bg-surface border border-danger/30 rounded-lg p-6 max-w-md w-full space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(V,{size:18,className:"text-danger"}),e.jsx("h3",{className:"text-lg font-semibold text-danger",children:"Delete your account?"})]}),e.jsx("p",{className:"text-sm text-content-secondary leading-relaxed",children:"This is permanent. Your stored API credentials (API keys, WordPress credentials, and YouTube tokens) will be removed immediately and you will be signed out. Other data will be deleted per our retention schedule."}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-xs text-content-muted mb-1",children:["Type ",e.jsx("span",{className:"font-mono text-content-secondary",children:a==null?void 0:a.email})," to confirm:"]}),e.jsx("input",{type:"email",value:S,onChange:t=>I(t.target.value),placeholder:a==null?void 0:a.email,autoFocus:!0,disabled:g,className:"w-full px-3 py-2 bg-surface-raised border border-line rounded-md text-content placeholder-content-subtle focus:outline-none focus:border-danger"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:()=>{W(!1),I("")},disabled:g,className:"px-4 py-2 bg-surface-overlay hover:bg-surface-overlay text-content-secondary rounded-md text-sm font-medium transition-colors disabled:opacity-50",children:"Cancel"}),e.jsxs("button",{onClick:ne,disabled:g||S.trim().toLowerCase()!==((a==null?void 0:a.email)||"").toLowerCase(),className:"px-4 py-2 bg-danger-solid hover:bg-danger-hover text-on-solid rounded-md text-sm font-medium transition-colors disabled:opacity-50 flex items-center gap-2",children:[g&&e.jsx(h,{size:14,className:"animate-spin"}),g?"Deleting…":"Delete my account"]})]})]})})]})}export{we 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.