1import{c as ve,y as Ue,r as i,s as c,j as e,S as ue,B as g,Y as Ae,q as A,E as je,I as u,l as ye,K as Ee,P as Be,at as ze,Q as Me,R as Fe,V as Xe,e as W,f as Je}from"./index-CdlRzbIO.js";import{C as n,a as o,b as N,c as v,d as S}from"./card-CM0Okv3Z.js";import{T as H}from"./textarea-DQY33lpu.js";import{S as We}from"./switch-Bzjhjo9H.js";import{S as C}from"./skeleton-CbzUyPBA.js";import{T as He,a as Qe,b as P,c as D}from"./tabs-ANpfY9ht.js";import{T as Ye,a as Ke,b as fe,c as O,d as Ve,e as _}from"./table-KJCAQOvG.js";import{L as T}from"./label-e8Kal1IJ.js";import{R as Ze}from"./refresh-cw-DjQSYiT5.js";import{S as es}from"./save-bByY1Wzf.js";import{G as ss}from"./globe-CmZyV5dg.js";import{T as ts}from"./triangle-alert-B9XdSvlM.js";import{F as we}from"./file-text-D1Wb36_4.js";import{M as as}from"./map-pin-CpQjEFTO.js";import{S as is}from"./settings-74FzlYmx.js";import{L as be}from"./link-2-BArWqAsZ.js";import{P as rs}from"./plus-v05U7UbD.js";import{G as ls}from"./grip-vertical-BXHUlQQW.js";import{T as cs}from"./trash-2-Ck4J97G1.js";import{C as ns}from"./copy-BheAVBOn.js";import{D as Q}from"./download-BLWO_agH.js";import"./index-ClrCEPLH.js";/** 2 * @license lucide-react v0.462.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const E=ve("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);/** 7 * @license lucide-react v0.462.0 - ISC 8 * 9 * This source code is licensed under the ISC license. 10 * See the LICENSE file in the root directory of this source tree. 11 */const Ne=ve("LayoutList",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}],["path",{d:"M14 4h7",key:"3xa0d5"}],["path",{d:"M14 9h7",key:"1icrd9"}],["path",{d:"M14 15h7",key:"1mj8o2"}],["path",{d:"M14 20h7",key:"11slyb"}]]),Ls=()=>{const{toast:f}=Ue(),[k,Y]=i.useState(!0),[K,V]=i.useState(!1),[w,Se]=i.useState({totalPages:0,indexedPages:0,missingMeta:0,blogPosts:0,services:0}),[B,ke]=i.useState([]),[R,Z]=i.useState("PsychicGuide"),[I,ee]=i.useState("Connect with gifted psychic readers for personalized readings. Get spiritual guidance, tarot readings, and more."),[z,se]=i.useState(""),[te,ae]=i.useState(""),[M,ie]=i.useState(`User-agent: * 12Allow: / 13 14# Disallow private dashboard areas 15Disallow: /admin/ 16Disallow: /admin 17Disallow: /customer/ 18Disallow: /customer 19Disallow: /reader/ 20Disallow: /reader 21 22# Disallow checkout & cart 23Disallow: /checkout 24Disallow: /cart 25Disallow: /payment-success 26Disallow: /payment-cancel 27 28# Disallow guest order lookup 29Disallow: /guest-order 30 31# Disallow sign in/up (not useful for search) 32Disallow: /sign-in 33Disallow: /sign-up 34 35# Crawl-delay for politeness 36Crawl-delay: 1 37 38# Sitemap location 39Sitemap: https://psychicguide.net/sitemap.xml 40`),[h,F]=i.useState("https://psychicguide.net");i.useState("/favicon.ico");const[p,X]=i.useState([{id:"1",title:"Browse Readings",description:"Explore all available psychic reading services and find your perfect match.",path:"/browse",order:1},{id:"2",title:"Our Readers",description:"Meet our verified and gifted psychic readers.",path:"/readers",order:2},{id:"3",title:"Categories",description:"Discover tarot, astrology, numerology and more.",path:"/categories",order:3},{id:"4",title:"How It Works",description:"Learn how to get your first psychic reading.",path:"/how-it-works",order:4},{id:"5",title:"Blog",description:"Spiritual articles, guides and insights.",path:"/blog",order:5},{id:"6",title:"Contact",description:"Get in touch with our support team.",path:"/contact",order:6}]),[x,$]=i.useState({title:"",description:"",path:""}),[Ce,re]=i.useState(!1),[q,le]=i.useState([{type:"Organization",enabled:!0},{type:"WebSite",enabled:!0},{type:"LocalBusiness",enabled:!1},{type:"Product",enabled:!0},{type:"Article",enabled:!0},{type:"BreadcrumbList",enabled:!0},{type:"FAQPage",enabled:!0},{type:"Review",enabled:!0}]),[G,ce]=i.useState("PsychicGuide - Online Psychic Readings & Spiritual Guidance"),[L,ne]=i.useState("Connect with gifted psychic readers for personalized readings. Get spiritual guidance, tarot readings, and more.");i.useEffect(()=>{oe(),Pe()},[]);const Pe=async()=>{try{const{data:s}=await c.from("platform_settings").select("*").eq("key","seo_settings").single();if(s!=null&&s.value){const t=s.value;t.siteName&&Z(t.siteName),t.siteDescription&&ee(t.siteDescription),t.defaultOgImage&&se(t.defaultOgImage),t.googleAnalyticsId&&ae(t.googleAnalyticsId),t.robots&&ie(t.robots),t.siteUrl&&F(t.siteUrl),t.sitelinks&&X(t.sitelinks),t.schemas&&le(t.schemas),t.previewTitle&&ce(t.previewTitle),t.previewDescription&&ne(t.previewDescription)}}catch{console.log("No existing SEO settings")}},oe=async()=>{Y(!0);try{const{count:s}=await c.from("blog_posts").select("*",{count:"exact",head:!0}).eq("status","published"),{count:t}=await c.from("services").select("*",{count:"exact",head:!0}).eq("is_active",!0),{count:l}=await c.from("reader_profiles").select("*",{count:"exact",head:!0}).eq("is_approved",!0),{count:d}=await c.from("categories").select("*",{count:"exact",head:!0}).eq("is_active",!0),j=[{path:"/",title:"PsychicGuide - Online Psychic Readings",description:"Connect with gifted psychic readers for personalized tarot, astrology, and spiritual guidance.",keywords:"psychic readings, tarot, spiritual guidance, online psychic",ogImage:"/images/og-image.jpg",indexed:!0}
40,{path:"/readers",title:"Browse Psychic Readers | PsychicGuide",description:"Find your perfect psychic reader. Browse verified tarot readers, mediums, and spiritual advisors.",keywords:"psychic readers, tarot readers, spiritual advisors, mediums",ogImage:"",indexed:!0},{path:"/browse",title:"Browse Psychic Readings | PsychicGuide",description:"Explore psychic reading services: tarot, astrology, love readings, career guidance and more.",keywords:"psychic readings, tarot readings, astrology readings, love readings",ogImage:"",indexed:!0},{path:"/categories",title:"Reading Categories | PsychicGuide",description:"Discover different types of psychic readings: Tarot, Astrology, Numerology, Love, Career, and Spiritual Guidance.",keywords:"tarot, astrology, numerology, love readings, career readings",ogImage:"",indexed:!0},{path:"/blog",title:"Spiritual Blog & Psychic Insights | PsychicGuide",description:"Read articles about spirituality, tarot interpretation, astrology tips, and personal growth.",keywords:"spiritual blog, tarot articles, astrology tips, psychic insights",ogImage:"",indexed:!0},{path:"/how-it-works",title:"How It Works | PsychicGuide",description:"Learn how to get a psychic reading online. Simple steps to connect with gifted readers.",keywords:"how to get psychic reading, online psychic reading guide",ogImage:"",indexed:!0},{path:"/become-reader",title:"Become a Psychic Reader | PsychicGuide",description:"Join PsychicGuide as a psychic reader. Share your gifts and connect with clients worldwide.",keywords:"become psychic reader, apply psychic platform, reader jobs",ogImage:"",indexed:!0},{path:"/faqs",title:"FAQs | PsychicGuide",description:"Frequently asked questions about psychic readings, our platform, and how to get started.",keywords:"psychic reading faq, questions, help",ogImage:"",indexed:!0},{path:"/contact",title:"Contact Us | PsychicGuide",description:"Get in touch with our support team. We're here to help with any questions.",ke
40ywords:"contact, support, help",ogImage:"",indexed:!0},{path:"/terms",title:"Terms of Service | PsychicGuide",description:"Read our terms of service and user agreement.",keywords:"terms, legal",ogImage:"",indexed:!0},{path:"/privacy",title:"Privacy Policy | PsychicGuide",description:"Learn how we protect your privacy and handle your data.",keywords:"privacy, data protection",ogImage:"",indexed:!0},{path:"/help",title:"Help Center | PsychicGuide",description:"Find answers to common questions and get support.",keywords:"help, support, faq",ogImage:"",indexed:!0},{path:"/search",title:"Search Readings & Readers | PsychicGuide",description:"Search for psychic readings and readers by keyword, category, or specialty.",keywords:"search psychic, find reader, search readings",ogImage:"",indexed:!0}],y=(s||0)+(t||0)+(l||0)+(d||0);ke(j),Se({totalPages:j.length+y,indexedPages:j.filter(r=>r.indexed).length+y,missingMeta:j.filter(r=>!r.description).length,blogPosts:s||0,services:t||0})}catch(s){console.error("Error fetching SEO data:",s)}finally{Y(!1)}},De=async()=>{const s="https://psychicguide.net",t=new Date().toISOString().split("T")[0];f({title:"Generating Sitemap",description:"Fetching all URLs from database..."});const[l,d,j,y]=await Promise.all([c.from("blog_posts").select("slug, updated_at").eq("status","published"),c.from("services").select("slug, title, id, updated_at").eq("is_active",!0).eq("approval_status","approved"),c.from("public_profiles").select("user_id, display_name, updated_at"),c.from("categories").select("slug, updated_at").eq("is_active",!0)]),r=B.filter(a=>a.indexed).map(a=>({loc:`${s}${a.path}`,lastmod:t,changefreq:a.path==="/"?"daily":"weekly",priority:a.path==="/"?"1.0":"0.9"})),U=(l.data||[]).map(a=>({loc:`${s}/blog/${a.slug}`,lastmod:a.updated_at?a.updated_at.split("T")[0]:t,changefreq:"weekly",priority:"0.8"})),he=(d.data||[]).map(a=>{var b;const m=a.slug||((b=a.title)==null?void 0:b.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,""))||a.id;return{loc:`${s}/service/${m}-${a.id}`,lastmod:a.updated_at?a.updated_at.split("T")[0]:t,changefreq:"weekly",priority:"0.8"}}),me=(j.data||[]).map(a=>{var b;const m=((b=a.display_name)==null?void 0:b.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,""))||a.user_id;return{loc:`${s}/psychic/${m}`,lastmod:a.updated_at?a.updated_at.split("T")[0]:t,changefreq:"weekly",priority:"0.8"}}),pe=(y.data||[]).map(a=>({loc:`${s}/readings/${a.slug}`,lastmod:a.updated_at?a.updated_at.split("T")[0]:t,changefreq:"monthly",priority:"0.7"})),$e=a=>`<?xml version="1.0" encoding="UTF-8"?> 41<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 42${a.map(m=>` <url> 43 <loc>${m.loc}</loc> 44 <lastmod>${m.lastmod}</lastmod> 45 <changefreq>${m.changefreq}</changefreq> 46 <priority>${m.priority}</priority> 47 </url>`).join(` 48`)} 49</urlset>`,xe=[...r,...U,...he,...me,...pe],qe=$e(xe);((a,m)=>{const b=new Blob([a],{type:"application/xml"}),ge=window.URL.createObjectURL(b),J=document.createElement("a");J.href=ge,J.download=m,J.click(),window.URL.revokeObjectURL(ge)})(qe,"sitemap-full.xml"),f({title:"Sitemap Generated",description:`sitemap-full.xml downloaded with ${xe.length} URLs (Static: ${r.length}, Services: ${he.length}, Readers: ${me.length}, Blog: ${U.length}, Categories: ${pe.length})`})},Te=()=>{const s=new Blob([M],{type:"text/plain"}),t=window.URL.createObjectURL(s),l=document.createElement("a");l.href=t,l.download="robots.txt",l.click(),f({title:"Robots.txt Generated",description:"robots.txt has been downloaded"})},Re=async()=>{V(!0);try{const s={siteName:R,siteDescription:I,defaultOgImage:z,googleAnalyticsId:te,robots:M,siteUrl:h,sitelinks:p.map(d=>({...d})),schemas:q.map(d=>({...d})),previewTitle:G,previewDescription:L},{data:t}=await c.from("platform_settings").select("id").eq("key","seo_settings").maybeSingle();let l;if(t?l=(await c.from("platform_settings").update({value:JSON.parse(JSON.stringify(s)),description:"Global SEO configuration"}).eq("key","seo_settings")).error:l=(await c.from("platform_settings").insert([{key:"seo_settings",value:JSON.parse(JSON.stringify(s)),description:"Global SEO configuration"}])).error,l)throw l;f({title:"Settings Saved",description:"SEO settings have been updated"})}catch(s){f({title:"Save Failed",description:s.message,variant:"destructive"})}finally{V(!1)}},Ge=s=>{navigator.clipboard.writeText(s),f({title:"Copied to clipboard"})},Le=()=>{if(!x.title||!x.path)return;const s=Date.now().toString();X([...p,{...x,id:s,order:p.length+1}]),$({title:"",description:"",path:""}),re(!1)},Oe=s=>{X(p.filter(t=>t.id!==s))},_e=s=>{le(q.map(t=>t.type===s?{...t,enabled:!t.enabled}:t))},Ie=()=>{const s=q.filter(r=>r.enabled),t=[];s.find(r=>r.type==="Organization")&&t.push({"@context":"https://schema.org","@type":"Organization",name:R,url:h,description:I,logo:z||`${h}/favicon.ico`}),s.find(r=>r.type==="WebSite")&&t.push({"@context":"https://schema.org","@type":"WebSite",name:R,url:h,potentialAction:{"@type":"SearchAction",target:`${h}/search?q={search_term_string}`,"query-input":"required name=search_term_string"}}),s.find(r=>r.type==="BreadcrumbList")&&t.push({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:p.slice(0,6).map((r,U)=>
49({"@type":"ListItem",position:U+1,name:r.title,item:`${h}${r.path}`}))});const l=JSON.stringify(t,null,2),d=new Blob([l],{type:"application/json"}),j=window.URL.createObjectURL(d),y=document.createElement("a");y.href=j,y.download="schema-markup.json",y.click(),f({title:"Schema Generated",description:"schema-markup.json has been downloaded"})},de=s=>s.replace(/^https?:\/\//,"").replace(/\/$/,"");return e.jsxs("div",{className:"space-y-6 max-w-6xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold text-gray-900 flex items-center gap-2",children:[e.jsx(ue,{className:"h-6 w-6 text-green-600"}),"Advanced SEO Tools"]}),e.jsx("p",{className:"text-gray-500 mt-1",children:"Manage meta tags, sitelinks, schema markup, and search engine optimization"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(g,{onClick:oe,variant:"outline",size:"sm",children:[e.jsx(Ze,{className:"h-4 w-4 mr-2"}),"Refresh"]}),e.jsxs(g,{onClick:Re,disabled:K,size:"sm",children:[K?e.jsx(Ae,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(es,{className:"h-4 w-4 mr-2"}),"Save All"]})]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-5",children:[e.jsx(n,{className:"border-0 shadow-sm",children:e.jsx(o,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-blue-50",children:e.jsx(ss,{className:"h-5 w-5 text-blue-600"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-gray-500",children:"Total Pages"}),e.jsx("p",{className:"text-xl font-bold",children:k?e.jsx(C,{className:"h-6 w-10"}):w.totalPages})]})]})})}),e.jsx(n,{className:"border-0 shadow-sm",children:e.jsx(o,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-green-50",children:e.jsx(A,{className:"h-5 w-5 text-green-600"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-gray-500",children:"Indexed"}),e.jsx("p",{className:"text-xl font-bold",children:k?e.jsx(C,{className:"h-6 w-10"}):w.indexedPages})]})]})})}),e.jsx(n,{className:"border-0 shadow-sm",children:e.jsx(o,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-amber-50",children:e.jsx(ts,{className:"h-5 w-5 text-amber-600"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-gray-500",children:"Missing Meta"}),e.jsx("p",{className:"text-xl font-bold",children:k?e.jsx(C,{className:"h-6 w-10"}):w.missingMeta})]})]})})}),e.jsx(n,{className:"border-0 shadow-sm",children:e.jsx(o,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-purple-50",children:e.jsx(we,{className:"h-5 w-5 text-purple-600"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-gray-500",children:"Blog Posts"}),e.jsx("p",{className:"text-xl font-bold",children:k?e.jsx(C,{className:"h-6 w-10"}):w.blogPosts})]})]})})}),e.jsx(n,{className:"border-0 shadow-sm",children:e.jsx(o,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-violet-50",children:e.jsx(as,{className:"h-5 w-5 text-violet-600"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-gray-500",children:"Services"}),e.jsx("p",{className:"text-xl font-bold",children:k?e.jsx(C,{className:"h-6 w-10"}):w.services})]})]})})})]}),e.jsxs(He,{defaultValue:"preview",className:"space-y-4",children:[e.jsxs(Qe,{className:"grid grid-cols-6 w-full",children:[e.jsxs(P,{value:"preview",className:"gap-2 text-xs",children:[e.jsx(je,{className:"h-4 w-4"}),"SERP Preview"]}),e.jsxs(P,{value:"sitelinks",className:"gap-2 text-xs",children:[e.jsx(Ne,{className:"h-4 w-4"}),"Sitelinks"]}),e.jsxs(P,{value:"settings",className:"gap-2 text-xs",children:[e.jsx(is,{className:"h-4 w-4"}),"Global Settings"]}),e.jsxs(P,{value:"pages",className:"gap-2 text-xs",children:[e.jsx(we,{className:"h-4 w-4"}),"Page Meta"]}),e.jsxs(P,{value:"schema",className:"gap-2 text-xs",children:[e.jsx(E,{className:"h-4 w-4"}),"Schema Markup"]}),e.jsxs(P,{value:"sitemap",className:"gap-2 text-xs",children:[e.jsx(be,{className:"h-4 w-4"}),"Sitemap"]})]}),e.jsx(D,{value:"preview",className:"space-y-4",children:e.jsxs(n,{children:[e.jsxs(N,{children:[e.jsxs(v,{className:"flex items-center gap-2",children:[e.jsx(je,{className:"h-5 w-5"}),"Google Search Result Preview"]}),e.jsx(S,{children:"See how your site appears in Google search results with sitelinks"})]}),e.jsxs(o,{className:"space-y-6",children:[e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(T,{className:"text-sm font-medium mb-1.5 block",children:"Title Tag (max 60 chars)"}),e.jsx(u,{value:G,onChange:s=>ce(s.target.value),placeholder:"Your page title",maxLength:70}),e.jsxs("p",{className:`text-xs mt-1 ${G.length>60?"text-red-500":"text-gray-400"}`,children:[G.length,"/60 characters"]})]}),e.jsxs("div",{children:[e.jsx(T,{className:"text-sm font-medium mb-1.5 block",children:"Site URL"}),e.jsx(u,{value:h,onChange:s=>F(s.target.value),placeholder:"https://example.com"})]})]}),e.jsxs("div",{children:[e.jsx(T,{className:"text-sm font-medium mb-1.5 block",children:"Meta Description (max 160 chars)"}),e.jsx(H,{value:L,onChange:s=>ne(s.target.value),placeholder:"Your meta description",rows:2,maxLength:170}),e.jsxs("p",{className:`text-xs mt-1 ${L.length>160?"text-red-500":"text-gray-400"}`,children:[L.length,"/160 characters"]})]}),e.jsxs("div",{className:"border rounded-xl p-6 bg-white",children:[e.jsxs("p",{className:"text-sm text-gray-500 mb-4 flex items-center gap-2",children:[e.jsx(ue,{className:"h-4 w-4"}),"Google Search Preview"]}),e.jsxs("div",{className:"mb-6",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("div",{className:"w-7 h-7 rounded-full bg-gradient-to-br from-purple-500 to-indigo-600 flex items-center justify-center",children:e.jsx(ye,{className:"h-4 w-4 text-white"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-gray-700",children:R}),e.jsx("p",{className:"text-xs text-gray-500",children:de(h)})]})]}),e.jsx("h3",{className:"text-xl text-blue-700 hover:underline cursor-pointer font-normal mb-1",children:G||"Your Page Title"}),e.jsx("p",{className:"text-sm text-gray-600 leading-relaxed",children:L||"Your meta description will appear here..."})]}),p.length>0&&e.jsx("div",{className:"grid grid-cols-2 gap-x-8 gap-y-3 mt-4 pt-4 border-t",children:p.slice(0,6).map(s=>e.jsxs("div",{className:"group",children:[e.jsxs("a",{className:"text-blue-700 hover:underline cursor-pointer flex items-center gap-1",children:[s.title,e.jsx(Ee,{className:"h-4 w-4 opacity-0 group-hover:opacity-100 transition-opacity"})]}),e.jsx("p",{className:"text-xs text-gray-500 line-clamp-1",children:s.description||`${de(h)}${s.path}`})]},s.id))}),p.length===0&&e.jsx("div",{className:"text-center py-4 text-gray-400 text-sm border-t mt
49-4",children:"No sitelinks configured. Add sitelinks in the Sitelinks tab."})]}),e.jsxs("div",{className:"bg-blue-50 rounded-lg p-4",children:[e.jsxs("h4",{className:"text-sm font-medium text-blue-900 mb-2 flex items-center gap-2",children:[e.jsx(ye,{className:"h-4 w-4"}),"SEO Tips for Sitelinks"]}),e.jsxs("ul",{className:"text-sm text-blue-800 space-y-1",children:[e.jsx("li",{children:"⢠Sitelinks are automatically generated by Google based on your site structure"}),e.jsx("li",{children:"⢠Clear navigation and internal linking help Google show sitelinks"}),e.jsx("li",{children:"⢠Keep titles under 60 characters and descriptions under 160 characters"}),e.jsx("li",{children:"⢠Use structured data (Schema.org) to help search engines understand your content"})]})]})]})]})}),e.jsx(D,{value:"sitelinks",className:"space-y-4",children:e.jsxs(n,{children:[e.jsxs(N,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(v,{className:"flex items-center gap-2",children:[e.jsx(Ne,{className:"h-5 w-5"}),"Sitelinks Management"]}),e.jsx(S,{children:"Configure pages that you want to appear as sitelinks in search results"})]}),e.jsxs(Be,{open:Ce,onOpenChange:re,children:[e.jsx(ze,{asChild:!0,children:e.jsxs(g,{size:"sm",children:[e.jsx(rs,{className:"h-4 w-4 mr-2"}),"Add Sitelink"]})}),e.jsxs(Me,{children:[e.jsx(Fe,{children:e.jsx(Xe,{children:"Add New Sitelink"})}),e.jsxs("div",{className:"space-y-4 pt-4",children:[e.jsxs("div",{children:[e.jsx(T,{children:"Title"}),e.jsx(u,{value:x.title,onChange:s=>$({...x,title:s.target.value}),placeholder:"e.g., Browse Readings"})]}),e.jsxs("div",{children:[e.jsx(T,{children:"Path"}),e.jsx(u,{value:x.path,onChange:s=>$({...x,path:s.target.value}),placeholder:"e.g., /browse"})]}),e.jsxs("div",{children:[e.jsx(T,{children:"Description (optional)"}),e.jsx(u,{value:x.description,onChange:s=>$({...x,description:s.target.value}),placeholder:"Short description..."})]}),e.jsx(g,{onClick:Le,className:"w-full",children:"Add Sitelink"})]})]})]})]}),e.jsxs(o,{children:[e.jsx("div",{className:"space-y-2",children:p.map((s,t)=>e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg group",children:[e.jsx(ls,{className:"h-4 w-4 text-gray-400 cursor-grab"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium text-sm",children:s.title}),e.jsx(W,{variant:"outline",className:"text-xs",children:s.path})]}),s.description&&e.jsx("p",{className:"text-xs text-gray-500 truncate",children:s.description})]}),e.jsx(g,{variant:"ghost",size:"sm",onClick:()=>Oe(s.id),className:"opacity-0 group-hover:opacity-100 transition-opacity",children:e.jsx(cs,{className:"h-4 w-4 text-red-500"})})]},s.id))}),e.jsx("div",{className:"mt-6 p-4 bg-amber-50 rounded-lg",children:e.jsxs("p",{className:"text-sm text-amber-800",children:[e.jsx("strong",{children:"Note:"})," Google automatically determines which sitelinks to show based on your site structure. These settings help you optimize your site's navigation for better sitelink appearance."]})})]})]})}),e.jsx(D,{value:"settings",className:"space-y-4",children:e.jsxs(n,{children:[e.jsxs(N,{children:[e.jsx(v,{children:"Global SEO Settings"}),e.jsx(S,{children:"Configure site-wide SEO defaults"})]}),e.jsxs(o,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-1.5 block",children:"Site Name"}),e.jsx(u,{value:R,onChange:s=>Z(s.target.value),placeholder:"Your site name"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-1.5 block",children:"Site URL"}),e.jsx(u,{value:h,onChange:s=>F(s.target.value),placeholder:"https://example.com"})]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-1.5 block",children:"Google Analytics ID"}),e.jsx(u,{value:te,onChange:s=>ae(s.target.value),placeholder:"G-XXXXXXXXXX"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-1.5 block",children:"Default OG Image URL"}),e.jsx(u,{value:z,onChange:s=>se(s.target.value),placeholder:"https://example.com/og-image.jpg"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-1.5 block",children:"Default Site Description"}
49),e.jsx(H,{value:I,onChange:s=>ee(s.target.value),placeholder:"Enter default meta description...",rows:3}),e.jsxs("p",{className:"text-xs text-gray-400 mt-1",children:[I.length,"/160 characters recommended"]})]})]})]})}),e.jsx(D,{value:"pages",className:"space-y-4",children:e.jsxs(n,{children:[e.jsxs(N,{children:[e.jsx(v,{children:"Page Meta Tags"}),e.jsx(S,{children:"Manage meta tags for each page"})]}),e.jsx(o,{children:k?e.jsx("div",{className:"space-y-3",children:[1,2,3].map(s=>e.jsx(C,{className:"h-12 w-full"},s))}):e.jsxs(Ye,{children:[e.jsx(Ke,{children:e.jsxs(fe,{children:[e.jsx(O,{children:"Path"}),e.jsx(O,{children:"Title"}),e.jsx(O,{children:"Description"}),e.jsx(O,{children:"Status"}),e.jsx(O,{children:"Actions"})]})}),e.jsx(Ve,{children:B.map(s=>e.jsxs(fe,{children:[e.jsx(_,{className:"font-mono text-sm",children:s.path}),e.jsx(_,{className:"max-w-[200px] truncate",children:s.title}),e.jsx(_,{className:"max-w-[250px] truncate text-gray-500",children:s.description}),e.jsx(_,{children:s.indexed?e.jsx(W,{className:"bg-green-100 text-green-700",children:"Indexed"}):e.jsx(W,{variant:"secondary",children:"No Index"})}),e.jsx(_,{children:e.jsx(g,{variant:"ghost",size:"sm",onClick:()=>Ge(s.title),children:e.jsx(ns,{className:"h-4 w-4"})})})]},s.path))})]})})]})}),e.jsx(D,{value:"schema",className:"space-y-4",children:e.jsxs(n,{children:[e.jsxs(N,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(v,{className:"flex items-center gap-2",children:[e.jsx(E,{className:"h-5 w-5"}),"Structured Data (Schema.org)"]}),e.jsx(S,{children:"Enable schema markup types for rich search results"})]}),e.jsxs(g,{onClick:Ie,variant:"outline",size:"sm",children:[e.jsx(Q,{className:"h-4 w-4 mr-2"}),"Export JSON-LD"]})]}),e.jsxs(o,{children:[e.jsx("div",{className:"grid gap-3 md:grid-cols-2",children:q.map(s=>e.jsxs("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(E,{className:"h-4 w-4 text-gray-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-sm",children:s.type}),e.jsxs("p",{className:"text-xs text-gray-500",children:[s.type==="Organization"&&"Company/brand information",s.type==="WebSite"&&"Site search box in results",s.type==="LocalBusiness"&&"Local business details",s.type==="Product"&&"Product rich snippets",s.type==="Article"&&"Blog post rich results",s.type==="BreadcrumbList"&&"Navigation breadcrumbs",s.type==="FAQPage"&&"FAQ accordion in results",s.type==="Review"&&"Star ratings in results"]})]})]}),e.jsx(We,{checked:s.enabled,onCheckedChange:()=>_e(s.type)})]},s.type))}),e.jsxs("div",{className:"mt-6 p-4 bg-green-50 rounded-lg",children:[e.jsxs("h4",{className:"text-sm font-medium text-green-900 mb-2 flex items-center gap-2",children:[e.jsx(Je,{className:"h-4 w-4"}),"Rich Results Benefits"]}),e.jsxs("ul",{className:"text-sm text-green-800 space-y-1",children:[e.jsxs("li",{children:["⢠",e.jsx("strong",{children:"Organization:"})," Knowledge panel and logo in search"]}),e.jsxs("li",{children:["⢠",e.jsx("strong",{children:"WebSite:"})," Search box directly in search results"]}),e.jsxs("li",{children:["⢠",e.jsx("strong",{children:"Product:"})," Price, availability, and ratings in results"]}),e.jsxs("li",{children:["⢠",e.jsx("strong",{children:"FAQPage:"})," Expandable FAQ sections in search results"]})]})]})]})]})}),e.jsx(D,{value:"sitemap",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs(n,{children:[e.jsxs(N,{children:[e.jsxs(v,{className:"flex items-center gap-2",children:[e.jsx(be,{className:"h-5 w-5"}),"Sitemap Generator"]}),e.jsx(S,{children:"Generate sitemap.xml for search engines"})]}),e.jsxs(o,{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-gray-50 rounded-lg",children:[e.jsx("p",{className:"text-sm text-gray-600 mb-3",children:"Your sitemap will include:"}),e.jsxs("ul",{className:"text-sm space-y-1",children:[e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"h-4 w-4 text-green-500"}),B.filter(s=>s.indexed).length," static pages"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"h-4 w-4 text-green-500"}),w.blogPosts," blog posts"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"h-4 w-4 text-green-500"}),w.services," services"]})]})]}),e.jsxs(g,{onClick:De,className:"w-full",children:[e.jsx(Q,{className:"h-4 w-4 mr-2"}),"Download sitemap.xml"]})]})]}),e.jsxs(n,{children:[e.jsxs(N,{children:[e.jsxs(v,{className:"flex items-center gap-2",children:[e.jsx(E,{className:"h-5 w-5"}),"Robots.txt"]}),e.jsx(S,{children:"Configure crawler access rules"})]}),e.jsxs(o,{className:"space-y-4",children:[e.jsx(H,{value:M,onChange:s=>ie(s.target.value),rows:8,className:"font-mono text-sm"}),e.jsxs(g,{onClick:Te,className:"w-full",variant:"outline",children:[e.jsx(Q,{className:"h-4 w-4 mr-2"}),"Download robots.txt"]})]})]})]})})]})]})};export{Ls 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.