astro-admin/dist/assets/Dashboard-Cskhkj1O.js

1 line
2.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{D as e,E as t,_ as n,d as r,g as i,m as a,n as o,u as s,v as c,w as l}from"./index-DzvFzRSs.js";var u={class:`bg-white rounded-xl shadow-sm border border-slate-200 p-3 md:p-5`},d={class:`flex items-center justify-between`},f={class:`min-w-0`},p={class:`text-xs md:text-sm text-slate-500 truncate`},m={class:`text-xl md:text-2xl flex-shrink-0 ml-2`},h={__name:`StatCard`,props:{label:String,value:[String,Number],icon:String,color:String},setup(n){let i=n,o=s(()=>({blue:`text-blue-600`,green:`text-green-600`,amber:`text-amber-600`,red:`text-red-600`,indigo:`text-indigo-600`,purple:`text-purple-600`,yellow:`text-yellow-600`})[i.color]||`text-slate-900`);return(i,s)=>(c(),a(`div`,u,[r(`div`,d,[r(`div`,f,[r(`p`,p,e(n.label),1),r(`p`,{class:t([`text-lg md:text-2xl font-bold mt-1 truncate`,o.value])},e(n.value),3)]),r(`div`,m,e(n.icon),1)])]))}},g={key:0,class:`text-slate-500`},_={key:1,class:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4`},v={__name:`Dashboard`,setup(e){let t=l({}),s=l(!0);n(async()=>{try{let{data:e}=await o.get(`/admin/api/dashboard`);t.value=e}finally{s.value=!1}});function u(e){return new Intl.NumberFormat(`ru-RU`).format(e||0)}function d(e){return e>1e6?(e/1e6).toFixed(1)+`M`:e>1e3?(e/1e3).toFixed(0)+`K`:e}return(e,n)=>(c(),a(`div`,null,[n[0]||=r(`h1`,{class:`text-2xl font-bold mb-6`},`📊 Дашборд`,-1),s.value?(c(),a(`div`,g,`Загрузка...`)):(c(),a(`div`,_,[i(h,{label:`Всего клиентов`,value:t.value.total_users,icon:`👥`,color:`blue`},null,8,[`value`]),i(h,{label:`Активных подписок`,value:t.value.active_subscriptions,icon:`📱`,color:`green`},null,8,[`value`]),i(h,{label:`Доход (₽)`,value:u(t.value.total_revenue_rub),icon:`💰`,color:`amber`},null,8,[`value`]),i(h,{label:`Платежей успешно`,value:t.value.successful_payments,icon:`✅`,color:`green`},null,8,[`value`]),i(h,{label:`Запросов за 30д`,value:t.value.requests_30d,icon:`📨`,color:`indigo`},null,8,[`value`]),i(h,{label:`Токенов за 30д`,value:d(t.value.tokens_30d),icon:`🤖`,color:`purple`},null,8,[`value`]),i(h,{label:`Стоимость $ за 30д`,value:`$`+t.value.cost_usd_30d,icon:`💵`,color:`red`},null,8,[`value`]),i(h,{label:`Отзывы`,value:(t.value.positive_count+t.value.negative_count)>0?Math.round(t.value.positive_share*100)+`% 👍 (`+t.value.positive_count+`/`+(t.value.positive_count+t.value.negative_count)+`)`:`—`,icon:`⭐`,color:`yellow`},null,8,[`value`])]))]))}};export{v as default};