PageSourceSearch

https://easy-repair-pages.lovable.app/assets/dashboard.seo-wIH27vUY.js

js easy-repair-pages.lovable.app collected 2026-10-03 03:30:24 UTC 4,788 bytes, 1 lines download raw bytes

1import{j as e,N as d,L as r}from"./index-Bd8H2eI-.js";import{L as l,E as p}from"./Layout-g57e8EAA.js";import{B as c}from"./button-DUXNn62U.js";import{C as f}from"./card-DkPDidGt.js";import{B as i}from"./badge-DMaBN2v1.js";import{u as h}from"./use-is-admin-B1HLE8T6.js";import{A as u}from"./arrow-left-CrJo28Mn.js";import{C as g}from"./circle-check-BuL_ZtWL.js";import{C as b}from"./circle-x-DonnCLK_.js";import"./index-Dot946r2.js";import"./use-auth-C0tpqzqO.js";import"./index-BfQKQZDS.js";import"./index-DGocwkQy.js";import"./index-CcA2RQE5.js";import"./Combination-JvzXc5JR.js";import"./index-DZuKcp8M.js";import"./index-DJ8vF3f1.js";import"./index-BbaGnVos.js";import"./check-B8_1mFvx.js";import"./index-CAQYpiav.js";import"./x-OROR5czD.js";import"./trash-2-B5FF4h8S.js";import"./plus-a2v8IACL.js";import"./loader-circle-Dony5JSH.js";import"./phone-3VtaqEjy.js";import"./log-out-BEitqMfM.js";import"./input-CcNwb0yS.js";import"./mail-1Z_R5nU8.js";import"./map-pin-CJqn3d0z.js";import"./sparkles-CCYk1-GQ.js";const s=[{id:"llms_txt",label:"AI summary (/llms.txt)",detail:"Tells AI assistants what the site is about without parsing every page.",pass:!0,fixHref:"/llms.txt",fixLabel:"View /llms.txt",external:!0},{id:"robots_txt",label:"Crawler rules (/robots.txt)",detail:"Sitemap directive points at the project domain; admin paths disallowed.",pass:!0,fixHref:"/robots.txt",fixLabel:"View /robots.txt",external:!0},{id:"sitemap_xml",label:"Sitemap (/sitemap.xml)",detail:"Lists every public, indexable route on easy-repair-pages.lovable.app.",pass:!0,fixHref:"/sitemap.xml",fixLabel:"View /sitemap.xml",external:!0},{id:"titles_under_60",label:"Page titles ≤ 60 characters",detail:"Home, About, Areas, Services, Contact, and FAQ all fit search-result width.",pass:!0,fixHref:"/home",fixLabel:"Visit Home"},{id:"contact_canonical",label:"Contact canonical & schema domain",detail:"Canonical URL and LocalBusiness JSON-LD use compubrainexpert.com (no typo).",pass:!0,fixHref:"/contact",fixLabel:"Visit Contact"},{id:"faq_schema",label:"FAQ structured data",detail:"FAQPage JSON-LD on /faq with Q&A pairs as mainEntity.",pass:!0,fixHref:"/faq",fixLabel:"Visit FAQ"},{id:"lcp_hero",label:"Homepage hero LCP hint",detail:'Hero <img> has explicit dimensions and fetchPriority="high".',pass:!0,fixHref:"/home",fixLabel:"Visit Home"}];function M(){const{isAdmin:n,loading:m}=h();if(m)return e.jsx(l,{children:e.jsx("main",{className:"container mx-auto px-4 py-12",children:e.jsx("p",{className:"text-muted-foreground",children:"Loading…"})})});if(!n)return e.jsx(d,{to:"/"});const a=s.filter(t=>!t.pass),o=s.length-a.length;return e.jsx(l,{children:e.jsxs("main",{className:"container mx-auto max-w-3xl px-4 py-10",children:[e.jsx(c,{asChild:!0,variant:"ghost",size:"sm",className:"mb-6 -ml-2",children:e.jsxs(r,{to:"/dashboard",children:[e.jsx(u,{className:"h-4 w-4"}),"Back to dashboard"]})}),e.jsxs("header",{className:"mb-8 flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight text-foreground",children:"SEO Status"}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Internal checklist of SEO improvements applied to the site."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[a.length>0?e.jsxs(i,{variant:"destructive",className:"text-sm",children:[a.length," failing"]}):e.jsx(i,{className:"bg-green-600 text-white hover:bg-green-600",children:"All passing"}),e.jsxs(i,{variant:"secondary",className:"text-sm",children:[o,"/",s.length," passing"]})]})]}),e.jsx("ul",{className:"space-y-3",children:s.map(t=>{const x=t.pass?g:b;return e.jsx("li",{children:e.jsxs(f,{className:"flex items-start gap-3 p-4",children:[e.jsx(x,{className:t.pass?"mt-0.5 h-5 w-5 shrink-0 text-green-600":"mt-0.5 h-5 w-5 shrink-0 text-destructive","aria-hidden":!0}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex flex-wrap items-baseline justify-between gap-2",children:[e.jsx("h2",{className:"text-sm font-semibold text-foreground",children:t.label}),e.jsx("span",{className:t.pass?"text-xs font-medium text-green-700 dark:text-green-500":"text-xs font-medium text-destructive",children:t.pass?"Passing":"Needs fix"})]}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:t.detail}),e.jsx("div",{className:"mt-2",children:t.external?e.jsxs("a",{href:t.fixHref,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1 text-xs font-medium text-primary underline-offset-4 hover:underline",children:[t.fixLabel,e.
1jsx(p,{className:"h-3 w-3"})]}):e.jsxs(r,{to:t.fixHref,className:"text-xs font-medium text-primary underline-offset-4 hover:underline",children:[t.fixLabel," →"]})})]})]})},t.id)})})]})})}export{M as component};

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.