1import{j as e}from"./ui-vendor-DQhJDdD7.js";import{as as y,C as i,h as v,ai as T,ae as w,f as R,s as C}from"./index-CaxD6OMc.js";import{T as n}from"./tag-mTkdFoTn.js";import{R as d,P as o,l as m,m as x,T as h,o as g}from"./charts-vendor-BGagbOlt.js";import{C as S}from"./chart-no-axes-column-increasing-B3X6DCYk.js";import"./react-vendor-CpvRxpXI.js";import"./supabase-vendor-B5blHikl.js";const c=["hsl(var(--primary))","hsl(var(--secondary))","hsl(var(--accent))","hsl(var(--muted))"];function D(){const{data:r,isLoading:j}=y({queryKey:["rai-dashboard-stats"],queryFn:async()=>{const{data:a,error:t}=await C.from("rai_rfid_tags").select("tag_id, tag_type, status, battery_level, scan_count");if(t)throw t;const p=a?.length||0,u=a?.filter(s=>s.status==="Active").length||0,f=a?.filter(s=>s.battery_level&&s.battery_level<20).length||0,b=a?.reduce((s,l)=>(s[l.tag_type]=(s[l.tag_type]||0)+1,s),{}),N=a?.reduce((s,l)=>(s[l.status]=(s[l.status]||0)+1,s),{});return{totalTags:p,activeTags:u,lowBattery:f,totalScans:a?.reduce((s,l)=>s+(l.scan_count||0),0)||0,byType:Object.entries(b||{}).map(([s,l])=>({name:s,value:l})),byStatus:Object.entries(N||{}).map(([s,l])=>({name:s,value:l}))}}});return j?e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:e.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"})}):e.jsxs("div",{className:"container mx-auto p-6 space-y-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold",children:"RFID Asset Intelligence"}),e.jsx("p",{className:"text-muted-foreground",children:"Real-time RFID tag tracking and management"})]})}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:[e.jsx(i,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(n,{className:"h-8 w-8 text-primary"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Total Tags"}),e.jsx("p",{className:"text-2xl font-bold",children:r?.totalTags||0})]})]})}),e.jsx(i,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(v,{className:"h-8 w-8 text-green-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Active Tags"}),e.jsx("p",{className:"text-2xl font-bold",children:r?.activeTags||0})]})]})}),e.jsx(i,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(T,{className:"h-8 w-8 text-blue-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Total Scans"}),e.jsx("p",{className:"text-2xl font-bold",children:r?.totalScans?.toLocaleString()||0})]})]})}),e.jsx(i,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(w,{className:"h-8 w-8 text-orange-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Low Battery"}),e.jsx("p",{className:"text-2xl font-bold",children:r?.lowBattery||0})]})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs(i,{className:"p-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"Tags by Type"}),e.jsx(d,{width:"100%",height:300,children:e.jsxs(o,{children:[e.jsx(m,{data:r?.byType||[],cx:"50%",cy:"50%",labelLine:!1,label:({name:a,percent:t})=>`${a}: ${(t*100).toFixed(0)}%`,outerRadius:80,fill:"#8884d8",dataKey:"value",children:(r?.byType||[]).map((a,t)=>e.jsx(x,{fill:c[t%c.length]},`cell-${t}`))}),e.jsx(h,{}),e.jsx(g,{})]})})]}),e.jsxs(i,{className:"p-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"Tags by Status"}),e.jsx(d,{width:"100%",height:300,children:e.jsxs(o,{children:[e.jsx(m,{data:r?.byStatus||[],cx:"50%",cy:"50%",labelLine:!1,label:({name:a,percent:t})=>`${a}: ${(t*100).toFixed(0)}%`,outerRadius:80,fill:"#8884d8",dataKey:"value",children:(r?.byStatus||[]).map((a,t)=>e.jsx(x,{fill:c[t%c.length]},`cell-${t}`))}),e.jsx(h,{}),e.jsx(g,{})]})})]})]}),e.jsxs(i,{className:"p-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"Qu
1ick Actions"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("a",{href:"/eam/rai/tag-create",className:"p-4 border rounded-lg hover:bg-accent transition-colors",children:[e.jsx(S,{className:"h-6 w-6 mb-2 text-primary"}),e.jsx("h4",{className:"font-semibold",children:"Create & Print Tags"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Generate new RFID tags"})]}),e.jsxs("a",{href:"/eam/rai/tag-assign",className:"p-4 border rounded-lg hover:bg-accent transition-colors",children:[e.jsx(n,{className:"h-6 w-6 mb-2 text-primary"}),e.jsx("h4",{className:"font-semibold",children:"Assign Tags"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Link tags to assets"})]}),e.jsxs("a",{href:"/eam/rai/tag-replace",className:"p-4 border rounded-lg hover:bg-accent transition-colors",children:[e.jsx(R,{className:"h-6 w-6 mb-2 text-primary"}),e.jsx("h4",{className:"font-semibold",children:"Replace Tags"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Replace damaged tags"})]})]})]})]})}export{D 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.