1import{$ as T,_ as C,n as S,j as e,z as A,B as L,C as x,t as h,w as j,v as p,M as P,x as B,s as g,m as k}from"./index-t5HWRWcm.js";import{r as M}from"./vendor-charts-Ci_Gx7ja.js";import{u as E}from"./useMutation-BWv0pWcV.js";import{G as F,A as H}from"./AdminNav-Cqs671o2.js";import{B as u}from"./badge-mNR_3OsT.js";import{T as R,a as $,b as f,c as t,d as q,e as a}from"./table-C8gq9BoU.js";import{T as D,a as O,b,c as Q}from"./tabs-CprLmGSh.js";import{P as G}from"./play-DlVlunYM.js";import{S as I}from"./smartphone-DHKj7k0f.js";import"./vendor-pdf-DutuzZK6.js";import"./building-2-CbxJluv_.js";import"./shield-DsmOAPnt.js";import"./wallet-ERqkBeQi.js";import"./file-text-BfhmuAV1.js";import"./index-bdUVldqC.js";import"./index-DIh6iCuA.js";function v(r){return r===null?"text-muted-foreground":r>=90?"text-emerald-500":r>=50?"text-amber-500":"text-destructive"}function c({value:r}){return r===null?e.jsx("span",{className:"text-muted-foreground",children:"â"}):e.jsx("span",{className:`font-semibold ${v(r)}`,children:r})}function le(){const{data:r}=T(),{toast:m}=k(),y=C(),[l,N]=M.useState("mobile"),{data:_,isLoading:w}=S({queryKey:["lighthouse_audits"],queryFn:async()=>{const{data:s,error:n}=await g.from("lighthouse_audits").select("*").order("created_at",{ascending:!1}).limit(100);if(n)throw n;return s||[]}}),o=E({mutationFn:async()=>{const{data:s,error:n}=await g.functions.invoke("run-lighthouse-audit",{body:{trigger_source:"manual"}});if(n)throw n;return s},onSuccess:()=>{m({title:"Audit complete",description:"Mobile + desktop scores saved."}),y.invalidateQueries({queryKey:["lighthouse_audits"]})},onError:s=>{m({title:"Audit failed",description:s.message,variant:"destructive"})}}),d=(_||[]).filter(s=>s.strategy===l),i=d.find(s=>s.status==="success");return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(A,{title:"Lighthouse Audits â Admin",description:"Automated Lighthouse audit history.",noindex:!0}),e.jsxs("div",{className:"container mx-auto py-8 space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 flex-wrap",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center gap-2",children:[e.jsx(F,{className:"h-7 w-7 text-primary"}),"Lighthouse Audits"]}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Daily PageSpeed Insights audit of the published site. History of the last 100 runs."})]}),e.jsxs(L,{onClick:()=>o.mutate(),disabled:o.isPending,children:[e.jsx(G,{className:"h-4 w-4 mr-2"}),o.isPending?"Runningâ¦":"Run audit now"]})]}),e.jsx(H,{isSuperAdmin:!!r}),i&&e.jsx("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[{label:"Performance",value:i.performance_score},{label:"Accessibility",value:i.accessibility_score},{label:"Best Practices",value:i.best_practices_score},{label:"SEO",value:i.seo_score}].map(s=>e.jsx(x,{children:e.jsxs(h,{className:"pb-2",children:[e.jsx(j,{children:s.label}),e.jsx(p,{className:`text-4xl ${v(s.value)}`,children:s.value??"â"})]})},s.label))}),e.jsxs(D,{value:l,onValueChange:s=>N(s),children:[e.jsxs(O,{children:[e.jsxs(b,{value:"mobile",children:[e.jsx(I,{className:"h-4 w-4 mr-1"}),"Mobile"]}),e.jsxs(b,{value:"desktop",children:[e.jsx(P,{className:"h-4 w-4 mr-1"}),"Desktop"]})]}),e.jsx(Q,{value:l,className:"mt-4",children:e.jsxs(x,{children:[e.jsxs(h,{children:[e.jsx(p,{children:"History"}),e.jsxs(j,{children:["Most recent audits (",l,")."]})]}),e.jsx(B,{children:w?e.jsx("p",{className:"text-muted-foreground",children:"Loadingâ¦"}):d.length===0?e.jsx("p",{className:"text-muted-foreground",children:'No audits yet. Click "Run audit now" to start.'}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(R,{children:[e.jsx($,{children:e.jsxs(f,{children:[e.jsx(t,{children:"When"}),e.jsx(t,{children:"Trigger"}),e.jsx(t,{children:"Perf"}),e.jsx(t,{children:"A11y"}),e.jsx(t,{children:"BP"}),e.jsx(t,{children:"SEO"}),e.jsx(t,{children:"LCP"}),e.jsx(t,{children:"CLS"}),e.jsx(t,{children:"TBT"}),e.jsx(t,{children:"Status"})]})}),e.jsx(q,{children:d.map(s=>e.jsxs(f,{children:[e.jsx(a,{className:"whitespace-nowrap text-sm",children:new Date(s.created_at).toLocaleStr
1ing()}),e.jsx(a,{children:e.jsx(u,{variant:"outline",children:s.trigger_source})}),e.jsx(a,{children:e.jsx(c,{value:s.performance_score})}),e.jsx(a,{children:e.jsx(c,{value:s.accessibility_score})}),e.jsx(a,{children:e.jsx(c,{value:s.best_practices_score})}),e.jsx(a,{children:e.jsx(c,{value:s.seo_score})}),e.jsx(a,{className:"text-sm",children:s.lcp_ms?`${(s.lcp_ms/1e3).toFixed(2)}s`:"â"}),e.jsx(a,{className:"text-sm",children:s.cls!==null?s.cls.toFixed(3):"â"}),e.jsx(a,{className:"text-sm",children:s.tbt_ms?`${s.tbt_ms}ms`:"â"}),e.jsx(a,{children:s.status==="success"?e.jsx(u,{variant:"secondary",children:"ok"}):e.jsx(u,{variant:"destructive",title:s.error_message||"",children:"error"})})]},s.id))})]})})})]})})]})]})]})}export{le 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.