PageSourceSearch

https://fostersfreeze.com/assets/AdminFranchise-BE9RHvAn.js

js fostersfreeze.com collected 2026-10-02 09:58:51 UTC 3,057 bytes, 1 lines download raw bytes

1import{b as x,j as e}from"./vendor-BAdWL77K.js";import{A as o}from"./AdminLayout-D-8D5Rbc.js";import{t as n,k as c,B as r}from"./index-BfbLyb2b.js";import{D as h,a as p,b as u,c as v,e as f}from"./dialog-BBTHBmF6.js";import{I as j}from"./input-CDjNejEP.js";import{T as g}from"./textarea-DoKNFr7p.js";import{P as b}from"./pencil-CZ7riw-i.js";import"./useAuth-CdsLDZJt.js";import"./camera-KLQ3bblm.js";import"./shield-CtZ2jTPi.js";import"./index-DORFTIKc.js";import"./usePersistFn-DJEIwkf6.js";function z(){const m=n.useUtils(),l=n.franchise.benefits.useQuery(void 0,{staleTime:0,gcTime:0}),[s,t]=x.useState(null),a=n.franchise.updateBenefit.useMutation({onSuccess:()=>{m.franchise.benefits.invalidate(),c.success("Benefit updated"),t(null)},onError:i=>c.error(i.message)}),d=l.data??[];return l.isLoading?e.jsx(o,{children:e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx("div",{className:"text-[var(--ink)]/60",children:"Loading…"})})}):e.jsxs(o,{children:[e.jsxs("section",{children:[e.jsx("h1",{className:"mb-4",style:{fontFamily:"var(--font-display)",fontSize:"clamp(1.6rem, 3vw, 2.25rem)",color:"var(--denim)"},children:"Franchise Benefits"}),e.jsx("p",{className:"text-[var(--ink)]/75 mb-6",children:"Edit the benefits shown on the Franchise page."}),d.length===0?e.jsx("div",{className:"bg-white rounded-lg border-2 border-[var(--denim)]/10 p-8 text-center text-[var(--ink)]/60",children:"No benefits found."}):e.jsx("div",{className:"bg-white rounded-lg border-2 border-[var(--denim)]/10 overflow-hidden",children:e.jsx("ul",{className:"divide-y divide-[var(--denim)]/10",children:d.map(i=>e.jsxs("li",{className:"px-5 py-4 flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-semibold text-[var(--denim)]",children:i.title}),e.jsx("p",{className:"text-sm text-[var(--ink)]/75 mt-1",children:i.description})]}),e.jsxs(r,{size:"sm",variant:"outline",className:"bg-white",onClick:()=>t(i),children:[e.jsx(b,{size:14,className:"mr-1","aria-hidden":!0})," Edit"]})]},i.id))})})]}),s&&e.jsx(h,{open:!0,onOpenChange:i=>!i&&t(null),children:e.jsxs(p,{className:"max-w-lg",children:[e.jsx(u,{children:e.jsx(v,{children:"Edit benefit"})}),e.jsxs("div",{className:"space-y-3 py-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-semibold text-[var(--denim)] mb-1",children:"Title"}),e.jsx(j,{value:s.title,onChange:i=>t({...s,title:i.target.value})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-semibold text-[var(--denim)] mb-1",children:"Description"}),e.jsx(g,{value:s.description,onChange:i=>t({...s,description:i.target.value}),rows:4})]})]}),e.jsxs(f,{children:[e.jsx(r,{variant:"outline",onClick:()=>t(null),children:"Cancel"}),e.jsx(r,{onClick:()=>a.mutate({id:s.id,title:s.title,description:s.description}),disabled:a.isPending,className:"bg-[var(--cherry)] hover:bg-[var(--cherry)]/90 text-white",children:a.isPending?"Saving…":"Save"})]})]})})]})}export{z 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.