1import{d as b,g as f,j as C,o as a,w as o,b as r,e as t,k,a as l,c as n,F as R,l as F,t as h}from"./app-RsKea8o5.js";import{_ as s,c as x,a as A}from"./StatsCard.vue_vue_type_script_setup_true_lang-D2AKQq2w.js";import{_ as g,a as $}from"./TrendChartCard.vue_vue_type_script_setup_true_lang-Ce7PFuiq.js";import{_ as S}from"./Card.vue_vue_type_script_setup_true_lang-KRydYIaJ.js";import{b as i,a as N}from"./useFormatters-9kQ9hfDK.js";import"./Skeleton.vue_vue_type_script_setup_true_lang-oZxeCen6.js";import"./utils-Cq45lf33.js";import"./SelectValue.vue_vue_type_script_setup_true_lang-C-9s-em5.js";import"./RovingFocusGroup-D3QouwLK.js";import"./index-BmOTFpO0.js";import"./useForwardExpose-DXi0eF_E.js";import"./Teleport-CpnQCY9y.js";import"./HugeiconsIcon.vue_vue_type_script_setup_true_lang-D36_Is65.js";import"./ArrowDown01Icon-DJ3rel_9.js";import"./index-B_siYGUE.js";import"./ArrowUp01Icon-BskfEfJa.js";import"./Tick01Icon-CMS0_aRT.js";import"./clamp-BstbYvQo.js";import"./DropdownMenuTrigger.vue_vue_type_script_setup_true_lang-DqLmnnaC.js";import"./ohash.D__AXeF1-C-E83dC9.js";import"./useFormControl-BRvJDsT8.js";import"./VisuallyHidden-Gnp4jwIA.js";import"./billingFormat-BEg3RvRQ.js";import"./ArrowRight01Icon-D04wg_Dq.js";import"./ArrowLeft01Icon-Dyic07IP.js";import"./AdminLayout.vue_vue_type_script_setup_true_lang-CoPJOjTU.js";import"./ImpersonationBanner.vue_vue_type_script_setup_true_lang-DGaRVNpY.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-Cgx8zpHc.js";import"./Cancel01Icon-DGojgfc9.js";import"./TooltipTrigger.vue_vue_type_script_setup_true_lang-J3bpJMlW.js";import"./index-DklSXLq-.js";import"./index-Z30Umu-o.js";import"./DropdownMenuSeparator.vue_vue_type_script_setup_true_lang-CrVuA_Y9.js";import"./useAnalytics-Bxkp3130.js";import"./useLocaleSwitcher-DjLXDJUg.js";import"./Settings01Icon-FajSHvbV.js";import"./LogoutSquare02Icon-z0F7OlYo.js";import"./UserMultipleIcon-BNN4OGHz.js";import"./CreditCardIcon-BTAImhZv.js";import"./Invoice01Icon-DsbBFA6t.js";import"./Shield01Icon-CKvIlKQn.js";import"./Radar01Icon-DMirgx-6.js";import"./BarChartIcon-D1jEOYPh.js";import"./PuzzleIcon-UfmhaZxq.js";import"./Video01Icon-DHVrYei2.js";import"./PlayIcon-CeODAqTp.js";import"./PlayIcon-eNaA-8sj.js";import"./Flag01Icon-BRr2gYMR.js";import"./File02Icon--_N_-4F2.js";import"./WebhookIcon-DJ7KtDbN.js";import"./Sonner.vue_vue_type_style_index_0_lang-VAYwp5ry.js";import"./useFlashToasts-50RPs8wm.js";import"./AdminPageHeader.vue_vue_type_script_setup_true_lang-CJHOoPWh.js";import"./lodash-D-iDC_mF.js";import"./AnalyticsTabs.vue_vue_type_script_setup_true_lang-DBW1MWoE.js";import"./TabsTrigger.vue_vue_type_script_setup_true_lang-CEuQ2lZj.js";import"./RovingFocusItem-OppQ6H3F.js";import"./PopoverTrigger.vue_vue_type_script_setup_true_lang-v0dR04yy.js";import"./adminAnalyticsTabs-D2TQwJkK.js";import"./AdminBarChart.vue_vue_type_script_setup_true_lang-BknjHDMt.js";import"./AdminLineChart.vue_vue_type_script_setup_true_lang-CMYqfYUZ.js";const P={class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-5"},w={key:0,class:"mt-4 space-y-2 text-sm"},B={class:"font-mono"},T={class:"font-semibold"},D={key:1,class:"mt-4 text-sm text-muted-foreground"},Ge=b({__name:"Payments",props:{analyticsFilters:{},billingAnalytics:{}},setup(v){const u=v,e=f(()=>u.billingAnalytics.paymentHealth),c=f(()=>u.billingAnalytics.summary.failedCharges),_=[{key:"succeeded",label:"Succeeded",color:"hsl(142 72% 42%)"},{key:"failed",label:"Failed",color:"hsl(var(--destructive))"}],y=[{key:"refunds",label:"Refunds",color:"hsl(var(--chart-4))"}];return(p,d)=>(a(),C($,{filters:p.analyticsFilters,tab:"Payments"},{default:o(()=>[r(t(k),{data:"billingAnalytics"},{fallback:o(()=>[r(A,{cards:5,charts:2})]),default:o(()=>[l("div",P,[r(s,{title:"Payment Success Rate",value:e.value.successRate.total>0?t(N)(e.value.successRate.rate*100):"â",description:e.value.successRate.total>0?`${t(i)(e.value.successRate.paid)} of ${t(i)(e.value.successRate.total)} charges paid`:"No charges in this range"},null,8,["value","description"]),r(s,{title:"Failed Charges",value:t(i)(c.value.count),trend:t(x)(c.value.comparison)},null,8,["value","trend"]),r(s,{title:"Awaiting 3DS",value:t(i)(e.value.requiresActionCount),description:"Payments that required customer authentication"},null,8,["value"]),r(s,{title:"Disputed Charges",value:t(i)(e.value.disputedCharges)},null,8,["value"]),r(s,{title:"Refunded Charges",value:t(i)(e.value.refundedCharges)},null,8,["value"])]),r(g,{title:"Charges over time â succeeded vs failed",subtitle:"Charge counts per currency â failures shown against the volume they occurred in.",trend:e.value.chargesTrend,"line-series":_,unit:"count"},null,8,["trend"]),r(g,{title:"Refunds over time",subtitle:"Refunded amount over time, per currency.",trend:p.billingAnalytics.refundTrend,"line-series":y,unit:"money"}
1,null,8,["trend"]),r(t(S),{class:"p-6"},{default:o(()=>[d[0]||(d[0]=l("h3",{class:"text-sm font-medium text-muted-foreground"}," Top failure codes ",-1)),e.value.topFailureCodes.length>0?(a(),n("ul",w,[(a(!0),n(R,null,F(e.value.topFailureCodes,m=>(a(),n("li",{key:m.failureCode,class:"flex items-center justify-between border-b py-1 last:border-0"},[l("span",B,h(m.failureCode),1),l("span",T,h(t(i)(m.count)),1)]))),128))])):(a(),n("p",D," No failed charges with a failure code in this range. "))]),_:1})]),_:1})]),_:1},8,["filters"]))}});export{Ge 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.