2 lines
7.2 KiB
JavaScript
2 lines
7.2 KiB
JavaScript
import{r as d,j as e}from"./chunk-UIGDSWPH-BhuNDbxn.js";import{u as f,af as N,ag as b,P as v}from"./main-af3pcbZa.js";import{C as g}from"./Card-CAsJMMfR.js";import{B as p}from"./Badge-DM3morB7.js";function U(){const a=f(),[m,h]=d.useState([]),[r,l]=d.useState([]),[y,o]=d.useState(!0),[x,n]=d.useState(!0);d.useEffect(()=>{u(),j()},[]);const u=async()=>{try{o(!0);const t=await N({page:1});h(t.results||[])}catch(t){a.error(`Failed to load usage logs: ${t.message}`)}finally{o(!1)}},j=async()=>{try{n(!0);const t=await b();console.log("Usage limits response:",t),l(t.limits||[]),(!t.limits||t.limits.length===0)&&console.warn("No limits data received from API")}catch(t){console.error("Error loading usage limits:",t),a.error(`Failed to load usage limits: ${t.message}`),l([])}finally{n(!1)}},s={planner:r.filter(t=>t.category==="planner"),writer:r.filter(t=>t.category==="writer"),images:r.filter(t=>t.category==="images"),ai:r.filter(t=>t.category==="ai"),general:r.filter(t=>t.category==="general")};return console.log("[Usage Component] Render state:",{limitsLoading:x,limitsCount:r.length,groupedLimits:s,plannerCount:s.planner.length,writerCount:s.writer.length,imagesCount:s.images.length,aiCount:s.ai.length,generalCount:s.general.length}),e.jsxs("div",{className:"p-6",children:[e.jsx(v,{title:"Usage",description:"Monitor your plan limits and usage statistics"}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-white",children:"Acoount Limits Usage 8"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mt-1",children:"Monitor your plan limits and usage statistics"})]}),!1,x?e.jsx(g,{className:"p-6 mb-8",children:e.jsx("div",{className:"flex items-center justify-center h-32",children:e.jsx("div",{className:"text-gray-500",children:"Loading limits..."})})}):r.length===0?e.jsx(g,{className:"p-6 mb-8",children:e.jsxs("div",{className:"text-center text-gray-500 dark:text-gray-400",children:[e.jsx("p",{className:"mb-2 font-medium",children:"No usage limits data available."}),e.jsx("p",{className:"text-sm",children:"The API endpoint may not be responding or your account may not have a plan configured."}),e.jsx("p",{className:"text-xs mt-2 text-gray-400",children:"Check browser console for errors. Endpoint: /v1/billing/credits/usage/limits/"})]})}):e.jsxs("div",{className:"space-y-6 mb-8",children:[s.planner.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-800 dark:text-white mb-4",children:"Planner Limits"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:s.planner.map((t,i)=>e.jsx(c,{limit:t},i))})]}),s.writer.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-800 dark:text-white mb-4",children:"Writer Limits"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:s.writer.map((t,i)=>e.jsx(c,{limit:t},i))})]}),s.images.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-800 dark:text-white mb-4",children:"Image Generation Limits"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:s.images.map((t,i)=>e.jsx(c,{limit:t},i))})]}),s.ai.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-800 dark:text-white mb-4",children:"AI Credits"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:s.ai.map((t,i)=>e.jsx(c,{limit:t},i))})]}),s.general.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-800 dark:text-white mb-4",children:"General Limits"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:s.general.map((t,i)=>e.jsx(c,{limit:t},i))})]})]}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-800 dark:text-white mb-4",children:"Usage Logs"}),y?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("div",{className:"text-gray-500",children:"Loading..."})}):e.jsx(g,{className:"p-6",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gray-200 dark:border-gray-700",children:[e.jsx("th",{className:"text-left py-3 px-4 text-sm font-medium text-gray-700 dark:text-gray-300",children:"Date"}),e.jsx("th",{className:"text-left py-3 px-4 text-sm font-medium text-gray-700 dark:text-gray-300",children:"Operation"}),e.jsx("th",{className:"text-left py-3 px-4 text-sm font-medium text-gray-700 dark:text-gray-300",children:"Credits Used"}),e.jsx("th",{className:"text-left py-3 px-4 text-sm font-medium text-gray-700 dark:text-gray-300",children:"Model"}),e.jsx("th",{className:"text-left py-3 px-4 text-sm font-medium text-gray-700 dark:text-gray-300",children:"Cost (USD)"})]})}),e.jsx("tbody",{children:m.map(t=>e.jsxs("tr",{className:"border-b border-gray-100 dark:border-gray-800",children:[e.jsx("td",{className:"py-3 px-4 text-sm text-gray-900 dark:text-white",children:new Date(t.created_at).toLocaleString()}),e.jsx("td",{className:"py-3 px-4",children:e.jsx(p,{variant:"light",color:"primary",children:t.operation_type_display})}),e.jsx("td",{className:"py-3 px-4 text-sm font-medium text-gray-900 dark:text-white",children:t.credits_used}),e.jsx("td",{className:"py-3 px-4 text-sm text-gray-600 dark:text-gray-400",children:t.model_used||"N/A"}),e.jsx("td",{className:"py-3 px-4 text-sm text-gray-600 dark:text-gray-400",children:t.cost_usd?`$${parseFloat(t.cost_usd).toFixed(4)}`:"N/A"})]},t.id))})]})})})]})]})}function c({limit:a}){const m=n=>{switch(n){case"planner":return"blue";case"writer":return"green";case"images":return"purple";case"ai":return"orange";case"general":return"gray";default:return"gray"}},h=n=>n>=90?"danger":n>=75?"warning":"success",r=Math.min(a.percentage,100),l=h(r),y=m(a.category),o=l==="danger"?"bg-red-500":l==="warning"?"bg-yellow-500":"bg-green-500",x=l==="danger"?"text-red-600 dark:text-red-400":l==="warning"?"text-yellow-600 dark:text-yellow-400":"text-green-600 dark:text-green-400";return e.jsxs(g,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h3",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:a.title}),e.jsx(p,{variant:"light",color:y,children:a.category})]}),e.jsxs("div",{className:"mb-3",children:[e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsx("span",{className:"text-2xl font-bold text-gray-900 dark:text-white",children:a.used.toLocaleString()}),e.jsxs("span",{className:"text-sm text-gray-500 dark:text-gray-400",children:["/ ",a.limit.toLocaleString()]}),e.jsx("span",{className:"text-xs text-gray-400 dark:text-gray-500",children:a.unit})]}),e.jsx("div",{className:"mt-2",children:e.jsx("div",{className:"w-full bg-gray-200 dark:bg-gray-700 rounded-full h-2",children:e.jsx("div",{className:`h-2 rounded-full ${o}`,style:{width:`${r}%`}})})})]}),e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsxs("span",{className:x,children:[a.available.toLocaleString()," available"]}),e.jsxs("span",{className:"text-gray-500 dark:text-gray-400",children:[r.toFixed(1),"% used"]})]})]})}export{U as default};
|