PageSourceSearch

https://writer-gpt.com/assets/AdminAISegment-C0yh9Wgv.js

js writer-gpt.com collected 2026-09-25 14:19:21 UTC 22,257 bytes, 1 lines download raw bytes

1import{u as q,s as T,j as e,r as j,B as F,k as z}from"./index-DDM5dk0b.js";import{A as te}from"./AdminLayout-d2Xyuxm7.js";import{T as re,a as ae,b as L,c as P}from"./tabs-qQTP-g4P.js";import{S as ne,a as ie,b as le,c as ce,d as K}from"./select-B0YVmj_C.js";import{C as k,a as I,b as M,c as U}from"./card-DEgzWvw5.js";import{S as D}from"./skeleton-CKi5J8Hg.js";import{D as oe}from"./dollar-sign-BsPM1xqP.js";import{U as de}from"./users-DxMqsWAO.js";import{H as xe}from"./hash-BCUTp9a9.js";import{M as ue}from"./message-square-BJXqZWHi.js";import{B as me}from"./bot-BOFGcXc2.js";import{C as X}from"./circle-check-BsWKPZtr.js";import{C as he}from"./circle-x-Dd7ohflJ.js";import{R as je}from"./refresh-ccw-DkTZMirc.js";import{S as fe}from"./send-olvc-62D.js";import{C as ge}from"./clock-BmQdIgpA.js";import{G as pe}from"./globe-B8QcTDpd.js";import{T as E,a as O,b as w,c as x,d as B,e as o}from"./table-BMsFNn8Q.js";import{B as _}from"./badge-BC_-ffdp.js";import{I as ee}from"./input-CB0QRRvU.js";import{f as $}from"./formatDistanceToNow-CTraltex.js";import{L as Y}from"./loader-circle-D4BXDxKA.js";import{I as ve}from"./infinity-DNWxkTuU.js";import{S as Ne}from"./save-Dq9zUOo4.js";import{S as be}from"./sparkles-CpIfunfF.js";import{s as H}from"./subDays-zfsdsliS.js";import"./chevron-right-BBZt2Fbq.js";import"./chevron-left-HWpYslqI.js";import"./layout-dashboard-Bs40Jm_Q.js";import"./heart-pulse-CwtAYTDP.js";import"./wand-sparkles-CHCihP20.js";import"./crown-BeXfEaV_.js";import"./file-text-Btf8zv2A.js";import"./key-DIpFm1x3.js";import"./circle-alert-C-OLH9Mi.js";import"./percent-BMY1QmKU.js";import"./chart-column-B9VCejQo.js";import"./megaphone-DO-qAaXU.js";import"./users-round-N_50dZXr.js";import"./database-DtgnIYRV.js";import"./upload-DyMQB0o1.js";import"./settings-r2YjUbHs.js";import"./shield-check-D1JMcDLV.js";import"./code-BBEmPq6h.js";import"./mail-BGkfEyYp.js";import"./book-open-CEGtrXoL.js";import"./gauge-Dq-7NRRn.js";import"./download-B_uflK1r.js";import"./sheet-BgKQopPJ.js";import"./index-BjPFedwd.js";import"./Combination-Dkfmdx58.js";import"./menu-DxXqjd0J.js";import"./arrow-left-Cau1hHAu.js";import"./index-C4oDHxzA.js";import"./index-QaJzJ_Zg.js";import"./index-BdQq_4o_.js";import"./check-D9A8J6nx.js";import"./constructFrom-rJN6zrQ_.js";import"./en-US-DgaeWpfW.js";import"./differenceInCalendarMonths-DdVU3xYm.js";import"./endOfDay-A-ioHiWL.js";import"./endOfMonth-CoG5-XNs.js";const g=s=>s.toISOString();function _e(s,r){return q({queryKey:["ai-segment-overview",g(s),g(r)],queryFn:async()=>{const{data:n,error:c}=await T.rpc("admin_ai_segment_overview",{p_start:g(s),p_end:g(r)});if(c)throw c;return(n==null?void 0:n[0])??{}},staleTime:3e4,refetchInterval:5*6e4,refetchOnWindowFocus:!0})}function we(s,r){return q({queryKey:["ai-segment-cost",g(s),g(r)],queryFn:async()=>{const{data:n,error:c}=await T.rpc("admin_ai_segment_cost_breakdown",{p_start:g(s),p_end:g(r)});if(c)throw c;return n??[]},staleTime:6e4,refetchInterval:5*6e4,refetchOnWindowFocus:!0})}function Se(){return q({queryKey:["ai-segment-sites"],queryFn:async()=>{const{data:s,error:r}=await T.rpc("admin_ai_segment_sites",{});if(r)throw r;return s??[]},staleTime:6e4,refetchInterval:5*6e4,refetchOnWindowFocus:!0})}function ye(s,r,n=100,c=0){return q({queryKey:["ai-segment-refreshes",g(s),g(r),n,c],queryFn:async()=>{const{data:d,error:a}=await T.rpc("admin_ai_segment_refreshes",{p_start:g(s),p_end:g(r),p_limit:n,p_offset:c});if(a)throw a;return d??[]},staleTime:3e4,refetchInterval:5*6e4,refetchOnWindowFocus:!0})}function Ce(s,r,n=200,c=0){return q({queryKey:["ai-segment-agent-activity",g(s),g(r),n,c],queryFn:async()=>{const{data:d,error:a}=await T.rpc("admin_ai_segment_agent_activity",{p_start:g(s),p_end:g(r),p_limit:n,p_offset:c});if(a)throw a;return d??[]},staleTime:3e4,refetchInterval:5*6e4,refetchOnWindowFocus:!0})}const Z=s=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:2}).format(Number(s)||0),N=s=>new Intl.NumberFormat("en-US").format(Number(s)||0),Ae=s=>{const r=Number(s)||0;return r>=1e6?`${(r/1e6).toFixed(2)}M`:r>=1e3?`${(r/1e3).toFixed(1)}k`:String(r)};function y({icon:s,label:r,value:n,sublabel:c}){return e.jsx(k,{children:e.jsxs(I,{className:"p-4 md:p-5",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("span",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:r}),e.jsx(s,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx("div",{className:"text-2xl font-bold text-foreground",children:n}),c?e.jsx("div",{className:"text-xs text-muted-foreground mt-1",children:c}):null]})})}function ke({start:s,end:r,label:n}){const{data:c,isLoading:d}=_e(s,r);if(d)return e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3",children:Array.from({length:12}).map((S,m)=>e.jsx(D,{className:"h-24 w-full"},m))});const a=c??{},f=a.active_users>0?Number(a.total_cost)/Number(a.active_users):0;return e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3",children:[e.jsx(y,{icon:oe,label:"AI Cost",value:Z(a.total_cost??0),sublabel:n}),e.jsx(y,{icon:de,label:"Active Users",value:N(a.active_users??0),sublabel:`${Z(f)} / user`}),e.jsx(y,{icon:xe,label:"AI Calls",value:N(a.total_calls??0),sublabel:`${Ae(a.total_tokens??0)} tokens`}),e.jsx(y,{icon:ue,label:"Chat Messages",value:N(a.chat_messages??0),sublabel:"SEO Chief"}),e.jsx(y,{icon:me,label:"Agent Runs",value:N(a.agent_runs??0)}
1),e.jsx(y,{icon:X,label:"Successful Runs",value:N(a.agent_runs_success??0)}),e.jsx(y,{icon:he,label:"Failed Runs",value:N(a.agent_runs_failed??0)}),e.jsx(y,{icon:je,label:"Refresh Signals",value:N(a.refreshes_total??0),sublabel:`${N(a.refreshes_generated??0)} generated`}),e.jsx(y,{icon:fe,label:"Published to WP",value:N(a.refreshes_published??0)}),e.jsx(y,{icon:ge,label:"Pending Approval",value:N(a.tasks_pending??0)}),e.jsx(y,{icon:X,label:"Approved Tasks",value:N(a.tasks_approved??0)}),e.jsx(y,{icon:pe,label:"Connected Sites",value:N((a.gsc_sites??0)+(a.wp_sites??0)),sublabel:`${N(a.gsc_sites??0)} GSC · ${N(a.wp_sites??0)} WP`})]})})}const Ie=s=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:2}).format(Number(s)||0),G=s=>new Intl.NumberFormat("en-US").format(Number(s)||0),Te=s=>{const r=Number(s)||0;return r>=1e6?`${(r/1e6).toFixed(2)}M`:r>=1e3?`${(r/1e3).toFixed(1)}k`:String(r)};function Fe({start:s,end:r}){const{data:n,isLoading:c}=we(s,r),d=j.useMemo(()=>(n??[]).reduce((a,f)=>a+Number(f.total_cost||0),0),[n]);return e.jsxs(k,{children:[e.jsxs(M,{children:[e.jsx(U,{className:"text-lg",children:"AI Segment Cost by Feature"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Filtered to AI Copilot / Autopilot / Audit / Refresh / Schema / Linker request types."})]}),e.jsx(I,{children:c?e.jsx(D,{className:"h-64 w-full"}):!n||n.length===0?e.jsx("p",{className:"text-sm text-muted-foreground text-center py-8",children:"No AI segment activity in this period"}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(E,{children:[e.jsx(O,{children:e.jsxs(w,{children:[e.jsx(x,{children:"Feature"}),e.jsx(x,{className:"text-right",children:"Calls"}),e.jsx(x,{className:"text-right",children:"Tokens"}),e.jsx(x,{className:"text-right",children:"BYOK"}),e.jsx(x,{className:"text-right",children:"System"}),e.jsx(x,{className:"text-right",children:"Users"}),e.jsx(x,{className:"text-right",children:"Cost"}),e.jsx(x,{className:"text-right",children:"% of total"})]})}),e.jsx(B,{children:n.map(a=>{const f=d>0?Number(a.total_cost)/d*100:0;return e.jsxs(w,{children:[e.jsx(o,{className:"font-medium",children:a.feature}),e.jsx(o,{className:"text-right",children:G(a.calls)}),e.jsx(o,{className:"text-right",children:Te(a.total_tokens)}),e.jsx(o,{className:"text-right text-muted-foreground",children:G(a.byok_calls)}),e.jsx(o,{className:"text-right",children:G(a.system_calls)}),e.jsx(o,{className:"text-right",children:G(a.unique_users)}),e.jsx(o,{className:"text-right font-semibold",children:Ie(a.total_cost)}),e.jsxs(o,{className:"text-right text-xs text-muted-foreground",children:[f.toFixed(1),"%"]})]},a.feature)})})]})})})]})}const R=25;function Le(){const{data:s,isLoading:r}=Se(),[n,c]=j.useState(""),[d,a]=j.useState("all"),[f,S]=j.useState(0),m=j.useMemo(()=>{let i=s??[];if(d!=="all"&&(i=i.filter(p=>p.source===d)),n.trim()){const p=n.trim().toLowerCase();i=i.filter(v=>{var t;return((t=v.site_url)==null?void 0:t.toLowerCase().includes(p))||(v.email??"").toLowerCase().includes(p)})}return i},[s,n,d]);j.useEffect(()=>{S(0)},[n,d]);const C=Math.max(1,Math.ceil(m.length/R)),l=Math.min(f,C-1),b=m.slice(l*R,l*R+R),u=(s??[]).filter(i=>i.source==="GSC").length,h=(s??[]).filter(i=>i.source==="WordPress").length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-3",children:[e.jsx(k,{children:e.jsxs(I,{className:"p-4",children:[e.jsx("div",{className:"text-xs uppercase text-muted-foreground",children:"GSC Sites"}),e.jsx("div",{className:"text-2xl font-bold",children:u})]})}),e.jsx(k,{children:e.jsxs(I,{className:"p-4",children:[e.jsx("div",{className:"text-xs uppercase text-muted-foreground",children:"WordPress Sites"}),e.jsx("div",{className:"text-2xl font-bold",children:h})]})}),e.jsx(k,{children:e.jsxs(I,{className:"p-4",children:[e.jsx("div",{className:"text-xs uppercase text-muted-foreground",children:"Total"}),e.jsx("div",{className:"text-2xl font-bold",children:u+h})]})})]}),e.jsxs(k,{children:[e.jsxs(M,{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx(U,{className:"text-lg",children:"Connected Sites"}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[m.length.toLocaleStr
1ing()," match",m.length===1?"":"es"]})]}),e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs("select",{className:"h-9 rounded-md border border-border bg-background px-3 text-sm",value:d,onChange:i=>a(i.target.value),children:[e.jsx("option",{value:"all",children:"All sources"}),e.jsx("option",{value:"GSC",children:"GSC"}),e.jsx("option",{value:"WordPress",children:"WordPress"})]}),e.jsx(ee,{placeholder:"Search email or URL",value:n,onChange:i=>c(i.target.value),className:"w-64"})]})]}),e.jsx(I,{children:r?e.jsx(D,{className:"h-64 w-full"}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(E,{children:[e.jsx(O,{children:e.jsxs(w,{children:[e.jsx(x,{children:"Source"}),e.jsx(x,{children:"User"}),e.jsx(x,{children:"Site URL"}),e.jsx(x,{children:"Status"}),e.jsx(x,{children:"Last activity"})]})}),e.jsx(B,{children:b.length===0?e.jsx(w,{children:e.jsx(o,{colSpan:5,className:"text-center text-muted-foreground py-6",children:"No sites match"})}):b.map((i,p)=>e.jsxs(w,{children:[e.jsx(o,{children:e.jsx(_,{variant:i.source==="GSC"?"default":"secondary",children:i.source})}),e.jsx(o,{className:"text-xs",children:i.email??i.user_id}),e.jsx(o,{className:"font-mono text-xs",children:i.site_url}),e.jsx(o,{children:e.jsx(_,{variant:"outline",children:i.status??"—"})}),e.jsx(o,{className:"text-xs text-muted-foreground",children:i.last_activity_at?$(new Date(i.last_activity_at),{addSuffix:!0}):"—"})]},`${i.source}-${i.user_id}-${i.site_url}-${p}`))})]})}),e.jsxs("div",{className:"flex items-center justify-between mt-4",children:[e.jsxs("span",{className:"text-xs text-muted-foreground",children:["Page ",l+1," of ",C," · Showing"," ",b.length===0?0:l*R+1,"–",l*R+b.length," of ",m.length]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(F,{variant:"outline",size:"sm",disabled:l===0,onClick:()=>S(i=>Math.max(0,i-1)),children:"Previous"}),e.jsx(F,{variant:"outline",size:"sm",disabled:l+1>=C,onClick:()=>S(i=>i+1),children:"Next"})]})]})]})})]})]})}const Q=50;function Pe({start:s,end:r}){var C;const[n,c]=j.useState(0),{data:d,isLoading:a}=ye(s,r,Q,n*Q),f=((C=d==null?void 0:d[0])==null?void 0:C.total_count)??0,S=Math.max(1,Math.ceil(Number(f)/Q)),m=l=>{const b=(l??"").toString().toLowerCase();return["published","completed","success"].includes(b)?e.jsx(_,{children:l}):["pending","queued","draft","generating"].includes(b)?e.jsx(_,{variant:"secondary",children:l}):["rejected","failed","error"].includes(b)?e.jsx(_,{variant:"destructive",children:l}):e.jsx(_,{variant:"outline",children:l||"—"})};return e.jsxs(k,{children:[e.jsxs(M,{children:[e.jsx(U,{className:"text-lg",children:"Refresh Lifecycle"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Total signals in range: ",Number(f).toLocaleString()]})]}),e.jsx(I,{children:a?e.jsx(D,{className:"h-64 w-full"}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(E,{children:[e.jsx(O,{children:e.jsxs(w,{children:[e.jsx(x,{children:"User"}),e.jsx(x,{children:"Page URL"}),e.jsx(x,{children:"Class"}),e.jsx(x,{children:"Status"}),e.jsx(x,{children:"Approval"}),e.jsx(x,{children:"Detected"}),e.jsx(x,{children:"Generated"}),e.jsx(x,{children:"Published"})]})}),e.jsx(B,{children:(d??[]).length===0?e.jsx(w,{children:e.jsx(o,{colSpan:8,className:"text-center text-muted-foreground py-6",children:"No refresh signals in this period"})}):d.map(l=>e.jsxs(w,{children:[e.jsx(o,{className:"text-xs",children:l.email??l.user_id}),e.jsx(o,{className:"font-mono text-xs max-w-[280px] truncate",title:l.page_url,children:l.page_url}),e.jsx(o,{children:e.jsx(_,{variant:"outline",children:l.classification??"—"})}),e.jsx(o,{children:m(l.status)}),e.jsx(o,{children:m(l.approval_status)}),e.jsx(o,{className:"text-xs text-muted-foreground",children:$(new Date(l.detected_at),{addSuffix:!0})}),e.jsx(o,{className:"text-xs text-muted-foreground",children:l.refresh_generated_at?$(new Date(l.refresh_generated_at),{addSuffix:!0}):"—"}),e.jsx(o,{className:"text-xs text-muted-foreground",children:l.refreshed_at?$(new Date(l.refreshed_at),{addSuffix:!0}):"—"})]},l.signal_id))})]})}),e.jsxs("div",{className:"flex items-center justify-between mt-4",children:[e.jsxs("span",{className:"text-xs text-muted-foreground",children:["Page ",n+1," of ",S]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(F,{variant:"outline",size:"sm",disabled:n===0,onClick:()=>c(l=>Math.max(0,l-1)),children:"Previous"}),e.jsx(F,{variant:"outline",size:"sm",disabled:n+1>=S,onClick:()=>c(l=>l+1),children:"Next"})]})]})]})})]})}const V=100;function Re({start:s,end:r}){var v;const[n,c]=j.useState(0),[d,a]=j.useState("all"),[f,S]=j.useState("all"),{data:m,isLoading:C}=Ce(s,r,V,n*V),l=((v=m==null?void 0:m[0])==null?void 0:v.total_count)??0,b=Math.max(1,Math.ceil(Number(l)/V)),u=j.useMemo(()=>{let t=m??[];return d!=="all"&&(t=t.filter(A=>A.agent_type===d)),f!=="all"&&(t=t.filter(A=>A.status===f)),t},[m,d,f]),h=j.useMemo(()=>Array.from(new Set((m??[]).map(t=>t.agent_type))).sort(),[m]),i=j.useMemo(()=>Array.from(new Set((m??[]).map(t=>t.status))).sort(),[m]),p=t=>{const A=(t??"").toLowerCase();return["completed","success","succeeded","monitoring"].includes(A)?e.jsx(_,{children:t}):["running","pending","in_progress"].includes(A)?e.jsx(_,{variant:"secondary",children:t}):["failed","error"].includes(A)?e.jsx(_,{variant:"destructive",children:t}):e.jsx(_,{variant:"outline",children:t||"—"})};return e.jsxs(k,{children:[e.jsxs(M,{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx(U,{className:"text-lg",children:"Agent Activity"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Total runs in range: ",Number(l).toLocaleStr
1ing()]})]}),e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs("select",{className:"h-9 rounded-md border border-border bg-background px-3 text-sm",value:d,onChange:t=>a(t.target.value),children:[e.jsx("option",{value:"all",children:"All agents"}),h.map(t=>e.jsx("option",{value:t,children:t},t))]}),e.jsxs("select",{className:"h-9 rounded-md border border-border bg-background px-3 text-sm",value:f,onChange:t=>S(t.target.value),children:[e.jsx("option",{value:"all",children:"All statuses"}),i.map(t=>e.jsx("option",{value:t,children:t},t))]})]})]}),e.jsx(I,{children:C?e.jsx(D,{className:"h-64 w-full"}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(E,{children:[e.jsx(O,{children:e.jsxs(w,{children:[e.jsx(x,{children:"User"}),e.jsx(x,{children:"Agent"}),e.jsx(x,{children:"Status"}),e.jsx(x,{children:"Started"}),e.jsx(x,{className:"text-right",children:"Duration"}),e.jsx(x,{children:"Error"})]})}),e.jsx(B,{children:u.length===0?e.jsx(w,{children:e.jsx(o,{colSpan:6,className:"text-center text-muted-foreground py-6",children:"No agent runs match"})}):u.map(t=>e.jsxs(w,{children:[e.jsx(o,{className:"text-xs",children:t.email??t.user_id}),e.jsx(o,{children:e.jsx(_,{variant:"outline",children:t.agent_type})}),e.jsx(o,{children:p(t.status)}),e.jsx(o,{className:"text-xs text-muted-foreground",children:t.started_at?$(new Date(t.started_at),{addSuffix:!0}):"—"}),e.jsx(o,{className:"text-right text-xs text-muted-foreground",children:t.duration_ms!=null?`${(t.duration_ms/1e3).toFixed(1)}s`:"—"}),e.jsx(o,{className:"text-xs text-destructive max-w-[280px] truncate",title:t.error??"",children:t.error??""})]},t.id))})]})}),e.jsxs("div",{className:"flex items-center justify-between mt-4",children:[e.jsxs("span",{className:"text-xs text-muted-foreground",children:["Page ",n+1," of ",b]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(F,{variant:"outline",size:"sm",disabled:n===0,onClick:()=>c(t=>Math.max(0,t-1)),children:"Previous"}),e.jsx(F,{variant:"outline",size:"sm",disabled:n+1>=b,onClick:()=>c(t=>t+1),children:"Next"})]})]})]})})]})}const J=["free","pro","business","lifetime"];function $e(){const[s,r]=j.useState([]),[n,c]=j.useState(!0),[d,a]=j.useState({}),[f,S]=j.useState(null),m=async()=>{c(!0);const{data:u,error:h}=await T.from("ai_plan_limits").select("*").order("feature_key").order("plan_tier");h&&z.error(h.message),r(u??[]),c(!1)};j.useEffect(()=>{m()},[]);const C=Array.from(new Set(s.map(u=>u.feature_key))),l=(u,h)=>s.find(i=>i.plan_tier===u&&i.feature_key===h),b=async(u,h)=>{const i=`${u}:${h}`,p=d[i];if(p===void 0)return;S(i);const{error:v}=await T.from("ai_plan_limits").update({quota:p,updated_at:new Date().toISOString()}).eq("plan_tier",u).eq("feature_key",h);if(S(null),v){z.error(v.message);return}z.success("Limit updated"),a(t=>{const{[i]:A,...W}=t;return W}),m()};return n?e.jsx("div",{className:"flex items-center justify-center py-16",children:e.jsx(Y,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):e.jsxs(k,{children:[e.jsxs(M,{children:[e.jsx(U,{children:"AI Feature Plan Limits"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Edit per-tier quotas live. Use ",e.jsx("strong",{children:"-1"})," for unlimited. Periods: ",e.jsx("code",{children:"day"}),", ",e.jsx("code",{children:"month"}),", ",e.jsx("code",{children:"gauge"})," (max concurrent count)."]})]}),e.jsx(I,{children:e.jsxs(E,{children:[e.jsx(O,{children:e.jsxs(w,{children:[e.jsx(x,{children:"Feature"}),e.jsx(x,{children:"Period"}),J.map(u=>e.jsx(x,{className:"capitalize",children:u},u))]})}),e.jsx(B,{children:C.map(u=>{const h=l("free",u)??l("pro",u);return e.jsxs(w,{children:[e.jsxs(o,{children:[e.jsx("div",{className:"font-medium",children:u.replace(/_/g," ")}),(h==null?void 0:h.description)&&e.jsx("div",{className:"text-xs text-muted-foreground",children:h.description})]}),e.jsx(o,{children:e.jsx(_,{variant:"outline",children:(h==null?void 0:h.period)??"-"})}),J.map(i=>{const p=l(i,u);if(!p)return e.jsx(o,{children:"—"},i);const v=`${i}:${u}`,t=d[v]??p.quota,A=d[v]!==void 0&&d[v]!==p.quota;return e.jsx(o,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(ee,{type:"number",className:"h-8 w-20",value:t,onChange:W=>a(se=>({...se,[v]:parseInt(W.target.value,10)||0}))}),t===-1&&e.jsx(ve,{className:"h-4 w-4 text-muted-foreground"}),A&&e.jsx(F,{size:"icon",variant:"ghost",className:"h-8 w-8",onClick:()=>b(i,u),disabled:f===v,children:f===v?e.jsx(Y,{className:"h-3 w-3 animate-spin"}):e.jsx(Ne,{className:"h-3 w-3"})})]})},i)})]},u)})})]})})]})}function qe(s){const r=new Date;switch(s){case"last_7":return{start:H(r,7),end:r,label:"Last 7 days"};case"last_90":return{start:H(r,90),end:r,label:"Last 90 days"};case"last_30":default:return{start:H(r,30),end:r,label:"Last 30 days"}}}function zs(){const[s,r]=j.useState("last_30"),{start:n,end:c,label:d}=j.useMemo(()=>qe(s),[s]);return e.jsx(te,{children:e.jsxs("div",{className:"container mx-auto p-4 md:p-6 space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl md:text-3xl font-bold text-foreground flex items-center gap-2",children:[e.jsx(be,{className:"h-6 w-6 text-primary"}),"AI Segment Analytics"]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Track usage, cost, connected sites, refreshes, and agent runs across SEO Copilot, Autopilot, Keyword Research, and Audits."})]}),e.jsxs(ne,{value:s,onValueChange:a=>r(a),children:[e.jsx(ie,{className:"w-full md:w-[200px]",children:e.jsx(le,{})}),e.jsxs(ce,{children:[e.jsx(K,{value:"last_7",children:"Last 7 days"}),e.jsx(K,{value:"last_30",children:"Last 30 days"}),e.jsx(K,{value:"last_90",children:"Last 90 days"})]})]})]}),e.jsxs(re,{defaultValue:"overview",className:"w-full",children:[e.jsxs(ae,{className:"grid w-full grid-cols-2 md:grid-cols-6 mb-4",children:[e.jsx(L,{value:"overview",children:"Overview"}),e.jsx(L,{value:"cost",children:"Cost Breakdown"}),e.jsx(L,{value:"sites",children:"Connected Sites"}),e.jsx(L,{value:"refreshes",children:"Refreshes"}),e.jsx(L,{value:"activity",children:"Agent Activity"}),e.jsx(L,{value:"limits",children:"Plan Limits"})]}),e.jsx(P,{value:"overview",children:e.jsx(ke,{start:n,end:c,label:d})}),e.jsx(P,{value:"cost",children:e.jsx(Fe,{start:n,end:c})}),e.jsx(P,{value:"sites",children:e.jsx(Le,{})}),e.jsx(P,{value:"refreshes",children:e.jsx(Pe,{start:n,end:c})}),e.jsx(P,{value:"activity",children:e.jsx(Re,{start:n,end:c})}),e.jsx(P,{value:"limits",children:e.jsx($e,{})})]})]})})}export{zs 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.