1import{j as e}from"./ui-vendor-Nh__yRYT.js";import{h as I,a as n}from"./react-vendor-NvA41F0Y.js";import{a2 as T,f as A,ao as L,cM as q,cR as F,cS as O,cT as z,bK as V,a3 as D,B as v}from"./index-BinsBWQu.js";import{S as G}from"./section-eyebrow-BPze8Wk_.js";import{E as H,D as K,g as M}from"./workspace-primitives-NfWnrCu4.js";import{R as Q}from"./resource-page-skeleton-1KNZyHNw.js";import{P as U}from"./production-action-pending-dialog-CEnJIigo.js";import{D as $,a as J,b as W,c as X,d as Y}from"./dialog-DUysxSdj.js";import{I as Z}from"./input-mDdvRMTd.js";import{L as ee}from"./label-Xg45tH-2.js";import{S as te}from"./switch-Bhpovbex.js";import{S as se}from"./storage-workspace-primitives-CGw6Ag0L.js";import{T as ie}from"./trash-2-DBiMCj_2.js";import"./box-zbrfzSyp.js";import"./resource-routing-D4y0aruO.js";import"./database-BwSA2v_u.js";import"./hard-drive-BW90_1Zg.js";import"./globe-CBV7s-GX.js";import"./server-Ce0Gr2DT.js";async function re(i){const o=await i.deleteBucket(i.bucketID);return o.status==="approval_required"||!i.resourceID?o:(i.onBucketCompleted?.(),i.deleteResource(i.resourceID))}function De({directBucket:i,resource:o}){const{toast:c}=T(),N=I(),b=A(),r=L(),{data:w,isLoading:C}=q(o?.id??""),s=i??w,{data:d,isLoading:B}=F(s?.id||""),m=O(s?.id||""),u=z(),g=V(),[p,j]=n.useState(!0),[x,S]=n.useState("versioning"),[P,l]=n.useState(!1),[y,f]=n.useState(""),[E,k]=n.useState(null);if(n.useEffect(()=>{d&&j(d.versioning_enabled)},[d]),n.useEffect(()=>{S("versioning")},[s?.id,o?.id]),C||B)return e.jsx(Q,{kind:"storage",tab:"settings",variant:"tab"});if(!s)return e.jsx(H,{label:"No bucket found for this storage resource"});const R=async()=>{let t;try{t=r.capture(b)}catch{return}try{await m.mutateAsync({versioning_enabled:p}),r.commit(t,()=>{c({title:"Storage settings saved"})})}catch(a){r.commit(t,()=>{c({title:"Failed to save storage settings",description:a instanceof Error?a.message:"Please try again.",variant:"destructive"})})}},_=async()=>{let t;try{t=r.capture(b)}catch{return}try{const a=await re({bucketID:s.id,resourceID:s.resource_id,deleteBucket:h=>u.mutateAsync(h),deleteResource:h=>g.mutateAsync(h)});if(a.status==="approval_required"){r.commit(t,()=>{l(!1),f(""),k(a)});return}if(!r.isCurrent(t))return;r.commit(t,()=>{c({title:"Bucket deletion queued",description:`${s.name} will be removed.`}),N("/storage")})}catch(a){r.commit(t,()=>{c({title:"Failed to delete bucket",description:a instanceof Error?a.message:"Please try again.",variant:"destructive"})})}};return e.jsxs(se,{bucket:s,resource:o,showHeader:!1,children:[e.jsxs("div",{className:"grid gap-6 lg:grid-cols-[200px_minmax(0,1fr)]",children:[e.jsx(K,{active:x,items:[{id:"versioning",label:"Versioning"},{id:"danger",label:"Danger zone"}],onChange:S}),x==="versioning"?e.jsx("div",{className:"min-w-0 space-y-6",children:e.jsxs("section",{className:"border border-cool-border bg-surface-primary",children:[e.jsxs("div",{className:"border-b border-mist-line px-5 py-4",children:[e.jsx("p",{className:"text-sm font-semibold text-foreground",children:"Versioning"}),e.jsx("p",{className:"mt-1 text-xs font-medium text-muted-foreground",children:"Control whether overwritten objects remain recoverable."})]}),e.jsx("div",{className:"divide-y divide-mist-line",children:e.jsxs("div",{className:"grid min-h-20 gap-4 px-5 py-4 md:grid-cols-[160px_minmax(0,1fr)] md:items-center",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-semibold text-foreground",children:"Object versioning"}),e.jsx("p",{className:"mt-1 text-xs font-medium text-void-400",children:"Keep recoverable versions of overwritten objects."})]}),e.jsxs("div",{className:"flex items-center gap-3 md:justify-end",children:[e.jsx(te,{checked:p,disabled:!d?.versioning_mutable,onCheckedChange:j}),e.jsx("span",{className:"text-xs font-semibold text-accent-strong",children:p?"Enabled":"Disabled"})]})]})}),e.jsx("div",{className:"flex justify-end border-t border-mist-line px-5 py-3",children:e.jsxs(M,{disabled:m.isPending,onClick:()=>{R()},tone:"primary",width:"w-[156px]",children:[m.isPending?e.jsx(D,{className:"h-4 w-4"}):null,"Save Changes"]})})]})}):null,x==="danger"?e.jsx("div",{className:"min-w-0 space-y-6",children:e.jsxs("section",{className:"border border-status-error bg-surface-primary",children:[e.jsx("div",{className:"flex h-11 items-center gap-2 border-b border-status-error px-5",children:e.jsx(G,{children:"Danger zone"})}),e.jsxs("div",{className:"grid min-h-20 gap-4 px-5 py-4 md:grid-cols-[180px_minmax(0,1fr)_120px] md:items-center",children:[e.jsx("p",{className:"text-sm font-semibold text-foreground",children:"Delete bucket"}),e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Deletes the bucket and all objects."}),e.jsx("span",{className:"flex justify-start md:justify-end",children:e.jsx(v,{variant:"destructive",onClick:()=>l(!0),size:"sm",children:"Delete"})})]})]})}):null]}),e.jsx($,{open:P,onOpenChange:t=>{l(t),t||f("")},children:e.jsxs(J,{children:[e.jsxs(W,{children:[e.jsx(X,{children:"Delete Bucket"}
1),e.jsx(Y,{children:"Type the bucket name to confirm deletion."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{htmlFor:"confirm-bucket",children:"Bucket Name"}),e.jsx(Z,{id:"confirm-bucket",onChange:t=>f(t.target.value),placeholder:s.name,value:y})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(v,{variant:"outline",onClick:()=>l(!1),children:"Cancel"}),e.jsxs(v,{variant:"destructive",onClick:_,disabled:y!==s.name||u.isPending||g.isPending,children:[u.isPending||g.isPending?e.jsx(D,{className:"h-4 w-4"}):e.jsx(ie,{className:"h-4 w-4"}),"Delete"]})]})]})}),e.jsx(U,{approval:E,onClose:()=>k(null)})]})}export{De as StorageSettingsSurface};
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.