1import{h,i as u,l as b,r as g,t as c,j as e}from"./index-Co_COyci.js";import{u as P}from"./useQuery-DqEksgYJ.js";import{u as _}from"./useMutation-IQ10GMxH.js";import{u as o}from"./useServerFn-BKNxTzPx.js";import{C as v}from"./card-cZcrpr2o.js";import{B as m}from"./button-BPDTLcKN.js";import{r as p}from"./auth-middleware-Bw-vsZYX.js";import{C as S}from"./credit-card-BJ4X2gye.js";import{L as x}from"./loader-circle-DtZej6Jo.js";import{X as w}from"./x-IJrHM26Q.js";import{C}from"./check-CMDB_C67.js";import"./utils-BQHNewu7.js";import"./index-BVi1qgC0.js";import"./index-LHNt3CwB.js";import"./createLucideIcon-D9X7GujO.js";const q=h({method:"GET"}).middleware([p]).handler(u("5ed796e97e5aff1a3ab216a79387a185bebfe5837f610491c638ec11c8aade6f")),F=h({method:"POST"}).middleware([p]).handler(u("7a6a62d34464506541c2545ac9a2328f808d7d2050d67e00d20489f7bd5f0d3e"));function t({value:a}){return a?e.jsxs("span",{title:a,className:"inline-flex items-center gap-1 text-emerald-600",children:[e.jsx(C,{className:"w-3.5 h-3.5"}),e.jsx("code",{className:"text-[10px]",children:a.slice(-8)})]}):e.jsx(w,{className:"w-3.5 h-3.5 text-muted-foreground/50"})}function L(){const a=b(),j=o(q),f=o(F),[r,i]=g.useState(null),{data:l,isLoading:N}=P({queryKey:["admin-subscription-plans"],queryFn:async()=>await j()}),d=_({mutationFn:async s=>(i(s),await f({data:{environment:s}})),onSuccess:s=>{const n=s.results.filter(y=>!y.ok);n.length===0?c.success(`Sync OK (${s.environment}) â ${s.results.length} Aktionen`):(c.error(`${n.length} Fehler beim Sync (${s.environment}). Erste: ${n[0].message}`),console.error("PayPal sync errors:",n)),a.invalidateQueries({queryKey:["admin-subscription-plans"]})},onError:s=>c.error(s.message),onSettled:()=>i(null)});return e.jsxs(v,{className:"p-4 mt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"font-semibold flex items-center gap-2",children:[e.jsx(S,{className:"w-4 h-4"})," Subscription Plans (PayPal)"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Idempotent. Klick erstellt fehlende Products + Plans in PayPal. Bestehende werden übersprungen."})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(m,{size:"sm",variant:"outline",disabled:r!==null,onClick:()=>d.mutate("sandbox"),children:[r==="sandbox"&&e.jsx(x,{className:"w-3 h-3 mr-1 animate-spin"}),"Sync Sandbox"]}),e.jsxs(m,{size:"sm",disabled:r!==null,onClick:()=>{confirm("Live-PayPal-Plans erstellen? Diese Plans sind sofort echtgeld-fähig.")&&d.mutate("live")},children:[r==="live"&&e.jsx(x,{className:"w-3 h-3 mr-1 animate-spin"}),"Sync Live"]})]})]}),N?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Lädtâ¦"}):!l||l.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Keine Pläne in der DB."}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsxs("thead",{className:"text-muted-foreground border-b",children:[e.jsxs("tr",{children:[e.jsx("th",{className:"text-left py-2 pr-3",children:"Plan"}),e.jsx("th",{className:"text-right pr-3",children:"M / Q (USD)"}),e.jsx("th",{className:"text-right pr-3",children:"Cap"}),e.jsx("th",{className:"text-center pr-3",colSpan:3,children:"Sandbox"}),e.jsx("th",{className:"text-center",colSpan:3,children:"Live"})]}),e.jsxs("tr",{className:"text-[10px] text-muted-foreground/70",children:[e.jsx("th",{}),e.jsx("th",{}),e.jsx("th",{}),e.jsx("th",{className:"text-center pr-2",children:"Prod"}),e.jsx("th",{className:"text-center pr-2",children:"M"}),e.jsx("th",{className:"text-center pr-3",children:"Q"}),e.jsx("th",{className:"text-center pr-2",children:"Prod"}),e.jsx("th",{className:"text-center pr-2",children:"M"}),e.jsx("th",{className:"text-center",children:"Q"})]})]}),e.jsx("tbody",{children:l.map(s=>e.jsxs("tr",{className:"border-b last:border-0",children:[e.jsxs("td",{className:"py-2 pr-3",children:[e.jsx("div",{className:"font-medium",children:s.name}),e.jsxs("div",{className:"text-muted-foreground text-[10px]",children:[s.slug,s.grants_all_gpts?" · all GPTs":""]})]}),e.jsxs("td",{className:"text-right pr-3 tabular-nums",children:["$",(s.price_monthly_cents/100).toFixed(0)," / $",(s.price_quarterly_cents/100).toFixed(0)]}),e.jsx("td",{className:"text-right pr-3 tabular-nums",children:s.monthly_message_cap??"â"}),e.jsx("td",{className:"text-center pr-2",children:e.jsx(t,{value:s.paypal_product_id_sandbox})}),e.jsx("td",{className:"text-center pr-2",children:e.jsx(t,{value:s.paypal_plan_id_sandbox_monthly})}),e.jsx("td",{className:"text-center pr-3",children:e.jsx(t,{value:s.paypal_plan_id_sandbox_quarterly})}),e.jsx("td",{className:"text-center pr-2",children:e.jsx(t,{value:s.paypal_product_id})}),e.jsx("td",{className:"text-center pr-2",children:e.jsx(t,{value:s.paypal_plan_id_monthly})}),e.jsx("td",{className:"text-center",children:e.jsx(t,{value:s.paypal_plan_id_quarterly})})]},s.id))})]})})]})}function U(){return e.jsxs("div",{className:"p-6 max-w-5xl mx-auto",children:[e.jsx("h1",{className:"text-2xl font-bold mb-4",children:"Plans & Pricing"}),e.jsx(L,{})]})}
1export{U as component};
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.