1import{j as e}from"./vendor-query-DJN3PFZQ.js";import{r}from"./vendor-react-Cbz8wLUo.js";import{s as m,ad as t,C as g,d as x,a as w,b as y,g as N,B as u,I as S}from"./index-Bc7XsZxF.js";import{L as c}from"./label-C-F4kt5F.js";import{S as C}from"./switch-CjX1u7wQ.js";import{T as M}from"./textarea-CScb_gZm.js";import{W as h}from"./wrench-DbUFYYMF.js";import{E}from"./eye-Cw5_i5ox.js";import{S as _}from"./save-D5VshXW7.js";import"./vendor-supabase--MomjbBX.js";import"./vendor-radix-BZn62lW2.js";import"./vendor-classnames-CYC2HZ_g.js";import"./vendor-date-BT9_t8_S.js";const $=()=>{const[s,i]=r.useState({enabled:!1,message:"We are currently performing scheduled maintenance. Please check back soon.",title:"Site Under Maintenance"}),[p,f]=r.useState(!0),[o,d]=r.useState(!1);r.useEffect(()=>{j()},[]);const j=async()=>{try{const{data:a,error:n}=await m.from("site_settings").select("setting_value").eq("setting_key","maintenance_mode").single();if(n&&n.code!=="PGRST116"){console.error("Error loading maintenance settings:",n),t.error("Failed to load maintenance settings");return}if(a){const l=a.setting_value;i({enabled:l.enabled||!1,message:l.message||"We are currently performing scheduled maintenance. Please check back soon.",title:l.title||"Site Under Maintenance"})}}catch(a){console.error("Error loading maintenance settings:",a),t.error("Failed to load maintenance settings")}finally{f(!1)}},v=async()=>{d(!0);try{const{error:a}=await m.from("site_settings").upsert({setting_key:"maintenance_mode",setting_value:s,description:"Controls site-wide maintenance mode",updated_at:new Date().toISOString()},{onConflict:"setting_key"});if(a){console.error("Error saving maintenance settings:",a),t.error("Failed to save maintenance settings");return}t.success(s.enabled?"Maintenance mode enabled":"Maintenance mode disabled")}catch(a){console.error("Error saving maintenance settings:",a),t.error("Failed to save maintenance settings")}finally{d(!1)}},b=`${window.location.origin}${s.enabled?"?preview=maintenance":""}`;return p?e.jsx(g,{children:e.jsx(x,{className:"flex items-center justify-center py-8",children:e.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"})})}):e.jsxs(g,{children:[e.jsxs(w,{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 space-y-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx(h,{className:"h-5 w-5"}),e.jsx(y,{children:"Maintenance Mode Control"}),e.jsx(N,{variant:s.enabled?"destructive":"secondary",children:s.enabled?"ACTIVE":"INACTIVE"})]}),e.jsx(u,{variant:"outline",size:"sm",asChild:!0,className:"gap-2 w-full sm:w-auto",children:e.jsxs("a",{href:b,target:"_blank",rel:"noopener noreferrer",children:[e.jsx(E,{className:"h-4 w-4"}),"Preview"]})})]}),e.jsxs(x,{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(c,{htmlFor:"maintenance-toggle",className:"text-base",children:"Enable Maintenance Mode"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:s.enabled?"Site is currently in maintenance mode - users will see the maintenance page":"Site is operating normally - users can access all features"})]}),e.jsx(C,{id:"maintenance-toggle",checked:s.enabled,onCheckedChange:a=>i(n=>({...n,enabled:a}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"maintenance-title",children:"Page Title"}),e.jsx(S,{id:"maintenance-title",value:s.title,onChange:a=>i(n=>({...n,title:a.target.value})),placeholder:"Site Under Maintenance"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"maintenance-message",children:"Maintenance Message"}),e.jsx(M,{id:"maintenance-message",value:s.message,onChange:a=>i(n=>({...n,message:a.target.value})),placeholder:"Enter the message users will see during maintenance...",rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"This message will be displayed to all site visitors when maintenance mode is enabled."})]}),e.jsx("div",{className:"flex justify-stretch sm:justify-end",children:e.jsxs(u,{onClick:v,disabled:o,className:"gap-2 w-full sm:w-auto",children:[e.jsx(_,{className:"h-4 w-4"}),o?"Saving...":"Save Settings"]})}),s.enabled&&e.jsx("div",{className:"p-4 border border-destructive/20 bg-destructive/5 rounded-lg",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(h,{className:"h-4 w-4 text-destructive mt-0.5"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-destructive",children:"Maintenance Mode Active"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"All site visitors (except this admin panel) will see the maintenance page. Remember to disable maintenance mode when maintenance is complete."})]})]})})]})]})};export{$ as MaintenanceModeControl};
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.