1import{u as P,_ as A,r as v,a as k,a6 as E,j as e,c_ as y,bJ as M,B as j,R as S,C as l,b as d,d as o,bh as g,e as c,Z as D,ab as r,bm as t,aY as C,bj as n,bt as R,P as U,bG as T}from"./index-CuSEeJFb.js";import{S as L}from"./save-DMqvNvzo.js";import{M as I}from"./mail-Dl1RGATy.js";const N={aiProvider:"anthropic",aiApiKey:"",aiCostPerCredit:.001,aiMaxCreditsPerUser:1e6,emailProvider:"sendgrid",emailApiKey:"",emailFromAddress:"[email protected]",platformName:"Boom Bam Marketing",maintenanceMode:!1,registrationEnabled:!0,trialEnabled:!0,trialDurationDays:14,trialCost:1.97,maxLoginAttempts:5,sessionTimeoutMinutes:480,requireEmailVerification:!0,newFeaturesEnabled:!0,betaFeaturesEnabled:!1,debugModeEnabled:!1,maxUsersPerOrganization:100,maxCampaignsPerUser:50,backupRetentionDays:30,apiRateLimit:1e3,maxFileUploadSizeMB:10,allowGuestAccess:!1,enableAuditLogs:!0,forcePasswordReset:!1,enableTwoFactor:!1,dataRetentionDays:365};function B(){const{subscription:p}=P(),{toast:b}=A(),[a,f]=v.useState(N),{data:m,isLoading:w}=k({queryKey:["/api/admin/platform-config"]});v.useEffect(()=>{m&&f({...N,...m})},[m]);const h=E({mutationFn:async s=>{const x=await fetch("/api/admin/platform-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!x.ok){const u=await x.json();throw new Error(u.error||"Failed to save configuration")}return x.json()},onSuccess:()=>{T.invalidateQueries({queryKey:["/api/admin/platform-config"]}),b({title:"Configuration Saved",description:"Platform configuration has been updated successfully."})},onError:s=>{b({title:"Error",description:s.message||"Failed to save configuration. Please try again.",variant:"destructive"})}});if(!p||p.plan!=="admin")return e.jsx("div",{children:e.jsx("div",{className:"max-w-7xl mx-auto space-y-6",children:e.jsxs("div",{className:"text-center py-12",children:[e.jsx(y,{className:"w-16 h-16 text-red-500 mx-auto mb-4"}),e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-white mb-2",children:"Access Denied"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"This page requires Administrator access. Please contact your system administrator."})]})})});const F=()=>{h.mutate(a)},i=(s,x)=>{f(u=>({...u,[s]:x}))};return e.jsx("div",{children:e.jsxs("div",{className:"max-w-7xl mx-auto space-y-6",children:[e.jsx("div",{className:"bg-gradient-to-r from-red-600 via-red-500 to-orange-500 rounded-2xl p-6 text-white",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx(M,{className:"w-8 h-8"}),e.jsx("h1",{className:"text-3xl font-bold",children:"Platform Configuration"})]}),e.jsx("p",{className:"text-red-100",children:"System-wide settings and feature management"})]}),e.jsxs(j,{onClick:F,disabled:h.isPending,className:"bg-white text-red-600 hover:bg-gray-100",children:[h.isPending?e.jsx(S,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(L,{className:"w-4 h-4 mr-2"}),"Save Changes"]})]})}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs(l,{className:"lg:col-span-2",children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(g,{className:"w-5 h-5 text-blue-500"}),"System Status"]})}),e.jsx(c,{children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"text-center p-4 bg-green-50 dark:bg-green-900/20 rounded-lg",children:[e.jsx("div",{className:"text-2xl font-bold text-green-600",children:"Online"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Platform Status"})]}),e.jsxs("div",{className:"text-center p-4 bg-blue-50 dark:bg-blue-900/20 rounded-lg",children:[e.jsx("div",{className:"text-2xl font-bold text-blue-600",children:w?"...":"8"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Active Users"})]}),e.jsxs("div",{className:"text-center p-4 bg-orange-50 dark:bg-orange-900/20 rounded-lg",children:[e.jsx("div",{className:"text-2xl font-bold text-orange-600",children:"1.2GB"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Storage Used"})]}),e.jsxs("div",{className:"text-center p-4 bg-purple-50 dark:bg-purple-900/20 rounded-lg",children:[e.jsx("div",{className:"text-2xl font-bold text-purple-600",children:"99.9%"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Uptime"})]})]})})]}),e.jsxs(l,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(D,{className:"w-5 h-5 text-yellow-500"}),"AI Configuration"]})}),e.jsxs(c,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"aiProvider",children:"AI Provider"}
1),e.jsxs("select",{id:"aiProvider",value:a.aiProvider,onChange:s=>i("aiProvider",s.target.value),className:"w-full mt-1 p-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800",children:[e.jsx("option",{value:"anthropic",children:"Anthropic (Claude)"}),e.jsx("option",{value:"openai",children:"OpenAI (GPT)"}),e.jsx("option",{value:"google",children:"Google (Gemini)"})]})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"aiApiKey",children:"AI API Key"}),e.jsx(t,{id:"aiApiKey",type:"password",value:a.aiApiKey,onChange:s=>i("aiApiKey",s.target.value),placeholder:"sk-ant-xxxxx"})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"aiCostPerCredit",children:"Cost per Credit (USD)"}),e.jsx(t,{id:"aiCostPerCredit",type:"number",step:"0.0001",value:a.aiCostPerCredit,onChange:s=>i("aiCostPerCredit",parseFloat(s))})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"aiMaxCredits",children:"Max Credits per User"}),e.jsx(t,{id:"aiMaxCredits",type:"number",value:a.aiMaxCreditsPerUser,onChange:s=>i("aiMaxCreditsPerUser",parseInt(s))})]})]})]}),e.jsxs(l,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(I,{className:"w-5 h-5 text-blue-500"}),"Email Configuration"]})}),e.jsxs(c,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"emailProvider",children:"Email Provider"}),e.jsxs("select",{id:"emailProvider",value:a.emailProvider,onChange:s=>i("emailProvider",s.target.value),className:"w-full mt-1 p-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800",children:[e.jsx("option",{value:"sendgrid",children:"SendGrid"}),e.jsx("option",{value:"mailgun",children:"Mailgun"}),e.jsx("option",{value:"ses",children:"Amazon SES"})]})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"emailApiKey",children:"Email API Key"}),e.jsx(t,{id:"emailApiKey",type:"password",value:a.emailApiKey,onChange:s=>i("emailApiKey",s.target.value),placeholder:"SG.xxxxx"})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"emailFrom",children:"From Email Address"}),e.jsx(t,{id:"emailFrom",type:"email",value:a.emailFromAddress,onChange:s=>i("emailFromAddress",s.target.value),placeholder:"[email protected]"})]})]})]}),e.jsxs(l,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(C,{className:"w-5 h-5 text-green-500"}),"Platform Settings"]})}),e.jsxs(c,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"platformName",children:"Platform Name"}),e.jsx(t,{id:"platformName",value:a.platformName,onChange:s=>i("platformName",s.target.value)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(r,{htmlFor:"maintenanceMode",children:"Maintenance Mode"}),e.jsx(n,{id:"maintenanceMode",checked:a.maintenanceMode,onCheckedChange:s=>i("maintenanceMode",s)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(r,{htmlFor:"registrationEnabled",children:"Registration Enabled"}),e.jsx(n,{id:"registrationEnabled",checked:a.registrationEnabled,onCheckedChange:s=>i("registrationEnabled",s)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(r,{htmlFor:"trialEnabled",children:"Trial Enabled"}),e.jsx(n,{id:"trialEnabled",checked:a.trialEnabled,onCheckedChange:s=>i("trialEnabled",s)})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"trialDuration",children:"Trial Duration (Days)"}),e.jsx(t,{id:"trialDuration",type:"number",value:a.trialDurationDays,onChange:s=>i("trialDurationDays",parseInt(s))})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"trialCost",children:"Trial Cost (USD)"}),e.jsx(t,{id:"trialCost",type:"number",step:"0.01",value:a.trialCost,onChange:s=>i("trialCost",parseFloat(s))})]})]})]}),e.jsxs(l,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(R,{className:"w-5 h-5 text-red-500"}),"Security Settings"]})}),e.jsxs(c,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"maxLoginAttempts",children:"Max Login Attempts"}),e.jsx(t,{id:"maxLoginAttempts",type:"number",value:a.maxLoginAttempts,onChange:s=>i("maxLoginAttempts",parseInt(s))})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"sessionTimeout",children:"Session Timeout (Minutes)"}),e.jsx(t,{id:"sessionTimeout",type:"number",value:a.sessionTimeoutMinutes,onChange:s=>i("sessionTimeoutMinutes",parseInt(s))})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(r,{htmlFor:"requireEmailVerification",children:"Require Email Verification"}),e.jsx(n,{id:"requireEmailVerification",checked:a.requireEmailVerification,onCheckedChange:s=>i("requireEmailVerification",s)})]})]})]})]}),e.jsxs(l,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(g,{className:"w-5 h-5 text-indigo-500"}),"User Management"]})}),e.jsxs(c,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"maxUsersPerOrganization",children:"Max Users per Organization"}),e.jsx(t,{id:"maxUsersPerOrganization",type:"number",value:a.maxUsersPerOrganization,onChange:s=>i("maxUsersPerOrganization",parseInt(s))})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"maxCampaignsPerUser",children:"Max Campaigns per User"}),e.jsx(t,{id:"maxCampaignsPerUser",type:"number",value:a.maxCampaignsPerUser,onChange:s=>i("maxCampaignsPerUser",parseInt(s))})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(r,{htmlFor:"allowGuestAccess",children:"Allow Guest Access"}),e.jsx(n,{id:"allowGuestAccess",checked:a.allowGuestAccess,onCheckedChange:s=>i("allowGuestAccess",s)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(r,{htmlFor:"forcePasswordReset",children:"Force Password Reset"}),e.jsx(n,{id:"forcePasswordReset",checked:a.forcePasswordReset,onCheckedChange:s=>i("forcePasswordReset",s)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(r,{htmlFor:"enableTwoFactor",children:"Enable Two-Factor Auth"}),e.jsx(n,{id:"enableTwoFactor",checked:a.enableTwoFactor,onCheckedChange:s=>i("enableTwoFactor",s)})]})]})]}),e.jsxs(l,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(C,{className:"w-5 h-5 text-cyan-500"}),"API & Performance"]})}),e.jsxs(c,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"apiRateLimit",children:"API Rate Limit (requests/hour)"}),e.jsx(t,{id:"apiRateLimit",type:"number",value:a.apiRateLimit,onChange:s=>i("apiRateLimit",parseInt(s))})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"maxFileUploadSizeMB",children:"Max File Upload Size (MB)"}),e.jsx(t,{id:"maxFileUploadSizeMB",type:"number",value:a.maxFileUploadSizeMB,onChange:s=>i("maxFileUploadSizeMB",parseInt(s))})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(r,{htmlFor:"enableAuditLogs",children:"Enable Audit Logs"}),e.jsx(n,{id:"enableAuditLogs",checked:a.enableAuditLogs,onCheckedChange:s=>i("enableAuditLogs",s)})]})]})]}),e.jsxs(l,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(g,{className:"w-5 h-5 text-teal-500"}),"Data Management"]})}),e.jsxs(c,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"backupRetentionDays",children:"Backup Retention (Days)"}),e.jsx(t,{id:"backupRetentionDays",type:"number",value:a.backupRetentionDays,onChange:s=>i("backupRetentionDays",parseInt(s))})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"dataRetentionDays",children:"Data Retention (Days)"}),e.jsx(t,{id:"dataRetentionDays",type:"number",value:a.dataRetentionDays,onChange:s=>i("dataRetentionDays",parseInt(s))})]})]})]}),e.jsxs(l,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(U,{className:"w-5 h-5 text-purple-500"}),"Feature Flags"]})}),e.jsx(c,{children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"newFeatures",children:"New Features"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Enable latest features for all users"})]}),e.jsx(n,{id:"newFeatures",checked:a.newFeaturesEnabled,onCheckedChange:s=>i("newFeaturesEnabled",s)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"betaFeatures",children:"Beta Features"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Enable experimental features"})]}),e.jsx(n,{id:"betaFeatures",checked:a.betaFeaturesEnabled,onCheckedChange:s=>i("betaFeaturesEnabled",s)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"debugMode",children:"Debug Mode"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Enable detailed logging"})]}),e.jsx(n,{id:"debugMode",checked:a.debugModeEnabled,onCheckedChange:s=>i("debugModeEnabled",s)})]})]})})]}),e.jsxs(l,{className:"border-red-200 dark:border-red-800",children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2 text-red-600",children:[e.jsx(y,{className:"w-5 h-5"}),"Danger Zone"]})}),e.jsxs(c,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(j,{variant:"outline",className:"border-red-300 text-red-600 hover:bg-red-50",children:"Reset All Settings"}),e.jsx(j,{variant:"outline",className:"border-red-300 text-red-600 hover:bg-red-50",children:"Clear All User Data"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"â ï¸ These actions cannot be undone. Please proceed with extreme caution."})]})]})]})})}export{B 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.