PageSourceSearch

https://proshark.com/assets/SeoPrerender-BIQhAB_c.js

js proshark.com collected 2026-10-05 00:52:10 UTC 8,654 bytes, 1 lines download raw bytes

1import{f as K,r as P,E as z,w as p,j as e,L as D,d as n,W as F,S as M,C as j,a as C,b as S,J as u,K as O,e as f,a7 as c,ab as Q,aK as R,y as h}from"./index-BMbzzAOF.js";import{T as B,a as H,b as E,c as G}from"./tabs-CGq9U9ha.js";import{A as I}from"./AuthenticatedLayout-C5OYzSAO.js";import{L as b}from"./loader-circle-Ci-YY3ic.js";import{S as A}from"./sparkles-Dgas-wuk.js";import{C as U}from"./chevron-up-CwftkYju.js";import{E as _}from"./eye-off-DH5DJP4q.js";import{E as J}from"./eye-D8WTNu6j.js";import{T as V}from"./trash-2-Rur43lMu.js";import{f as W}from"./formatDistanceToNow-3UBXKcFR.js";import"./briefcase-DnDkK-ds.js";import"./file-text-ZvsgPanE.js";import"./search-DEctV1I4.js";import"./en-US-wfBU2YNu.js";const T=[{label:"Core Pages",paths:["/","/about","/contact","/insights","/intelligence","/blog","/case-studies","/glossary","/integrations","/industries"]},{label:"Service Pages",paths:["/ai-systems","/development","/development/saas-platforms","/e-commerce","/mobile-apps","/services"]},{label:"Pricing Pages",paths:["/pricing","/get-started"]},{label:"CTA Pages",paths:["/get-started","/free-build-plan","/ai-build"]},{label:"Tool Pages",paths:["/ai-quiz","/roi-calculator","/comparison"]},{label:"Legal Pages",paths:["/privacy-policy","/terms-of-service","/messaging-policy"]}],X=T.flatMap(a=>a.paths);function pe(){const{toast:a}=K(),[x,L]=P.useState(null),[v,o]=P.useState(null),{data:l=[],isLoading:$}=z({queryKey:["/api/admin/prerender/pages"]}),m=new Set(l.map(s=>s.path)),i=p({mutationFn:async s=>(await h("POST","/api/admin/prerender/generate",{paths:s})).json(),onSuccess:s=>{c.invalidateQueries({queryKey:["/api/admin/prerender/pages"]}),a({title:"Generation Complete",description:s.message||`Generated content for ${s.generated||0} pages`}),o(null)},onError:s=>{a({title:"Generation Error",description:s.message,variant:"destructive"}),o(null)}}),y=p({mutationFn:async({id:s,currentStatus:t})=>{const d=t==="published"?"draft":"published";return(await h("PATCH",`/api/admin/prerender/pages/${s}/status`,{status:d})).json()},onSuccess:()=>{c.invalidateQueries({queryKey:["/api/admin/prerender/pages"]}),a({title:"Status updated"})},onError:s=>{a({title:"Error",description:s.message,variant:"destructive"})}}),N=p({mutationFn:async s=>(await h("DELETE",`/api/admin/prerender/pages/${s}`)).json(),onSuccess:()=>{c.invalidateQueries({queryKey:["/api/admin/prerender/pages"]}),a({title:"Page deleted"})},onError:s=>{a({title:"Error",description:s.message,variant:"destructive"})}}),g=p({mutationFn:async()=>(await h("POST","/api/admin/prerender/publish-all")).json(),onSuccess:s=>{c.invalidateQueries({queryKey:["/api/admin/prerender/pages"]}),a({title:"All pages published",description:s.message||"All draft pages are now published"})},onError:s=>{a({title:"Error",description:s.message,variant:"destructive"})}}),k=()=>{const s=X.filter(t=>!m.has(t));if(s.length===0){a({title:"All pages already generated"});return}o("all"),i.mutate(s)},q=s=>{const t=s.paths.filter(d=>!m.has(d));if(t.length===0){a({title:"All pages in this group already generated"});return}o(s.label),i.mutate(t)},w=l.filter(s=>s.status==="draft").length;return e.jsx(I,{children:e.jsx("div",{className:"container mx-auto py-8 px-4",children:e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsx("div",{className:"flex items-center gap-2 mb-2",children:e.jsx(D,{href:"/admin/seo/recovery",children:e.jsxs(n,{variant:"ghost",size:"sm","data-testid":"link-back-seo-recovery",children:[e.jsx(F,{className:"h-4 w-4 mr-1"})," Back to SEO Recovery"]})})}),e.jsxs("div",{className:"flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold","data-testid":"text-page-title",children:"AI Page Content"}),e.jsx("p",{className:"text-muted-foreground",children:"Generate SEO-optimized prerendered content for search engine bots"})]}),e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[w>0&&e.jsxs(n,{variant:"outline",onClick:()=>g.mutate(),disabled:g.isPending,"data-testid":"button-publish-all",children:[g.isPending?e.jsx(b,{className:"h-4 w-4 mr-1 animate-spin"}):e.jsx(M,{className:"h-4 w-4 mr-1"}),"Publish All (",w,")"]}),e.jsxs(n,{onClick:k,disabled:i.isPending,"data-testid":"button-generate-all",children:[i.isPending&&v==="all"?e.jsx(b,{className:"h-4 w-4 mr-1 animate-spin"}):e.jsx(A,{className:"h-4 w-4 mr-1"}),"Generate All"]})]})]}
1),e.jsxs(B,{defaultValue:"generate",children:[e.jsxs(H,{children:[e.jsx(E,{value:"generate","data-testid":"tab-generate",children:"Generate"}),e.jsxs(E,{value:"pages","data-testid":"tab-pages",children:["Pages (",l.length,")"]})]}),e.jsx(G,{value:"generate",className:"space-y-4 mt-4",children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:T.map(s=>{const t=s.paths.filter(r=>m.has(r)).length,d=i.isPending&&v===s.label;return e.jsxs(j,{children:[e.jsxs(C,{children:[e.jsxs("div",{className:"flex items-center justify-between flex-wrap gap-2",children:[e.jsx(S,{className:"text-base",children:s.label}),e.jsxs(u,{variant:"outline","data-testid":`badge-group-count-${s.label.toLowerCase().replace(/\s+/g,"-")}`,children:[t,"/",s.paths.length]})]}),e.jsx(O,{children:t===s.paths.length?"All pages generated":`${s.paths.length-t} pages remaining`})]}),e.jsxs(f,{children:[e.jsx("div",{className:"space-y-2 mb-4",children:s.paths.map(r=>e.jsxs("div",{className:"flex items-center justify-between gap-2 text-sm","data-testid":`row-path-${r.replace(/\//g,"-").replace(/^-/,"")}`,children:[e.jsx("code",{className:"text-xs bg-muted px-2 py-1 rounded",children:r}),m.has(r)?e.jsx(u,{variant:"secondary",className:"text-xs",children:"Done"}):e.jsx(u,{variant:"outline",className:"text-xs",children:"Pending"})]},r))}),e.jsx(n,{variant:"outline",className:"w-full",onClick:()=>q(s),disabled:i.isPending||t===s.paths.length,"data-testid":`button-generate-${s.label.toLowerCase().replace(/\s+/g,"-")}`,children:d?e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"h-4 w-4 mr-1 animate-spin"}),"Generating..."]}):e.jsxs(e.Fragment,{children:[e.jsx(A,{className:"h-4 w-4 mr-1"}),"Generate ",s.label]})})]})]},s.label)})})}),e.jsx(G,{value:"pages",className:"space-y-4 mt-4",children:$?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"Loading pages..."}):l.length===0?e.jsx(j,{children:e.jsx(f,{className:"py-12 text-center text-muted-foreground",children:"No prerendered pages yet. Use the Generate tab to create content."})}):e.jsxs(j,{children:[e.jsx(C,{children:e.jsxs("div",{className:"flex items-center justify-between flex-wrap gap-2",children:[e.jsx(S,{children:"Prerendered Pages"}),e.jsxs(n,{variant:"ghost",size:"sm",onClick:()=>c.invalidateQueries({queryKey:["/api/admin/prerender/pages"]}),"data-testid":"button-refresh-pages",children:[e.jsx(Q,{className:"h-4 w-4 mr-1"})," Refresh"]})]})}),e.jsx(f,{children:e.jsx("div",{className:"space-y-2",children:l.map(s=>e.jsxs("div",{className:"border rounded-lg",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 p-3 flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsx("code",{className:"text-sm bg-muted px-2 py-1 rounded","data-testid":`text-page-path-${s.id}`,children:s.path}),e.jsx(u,{variant:s.status==="published"?"default":"secondary","data-testid":`badge-status-${s.id}`,children:s.status}),s.pageType&&e.jsx("span",{className:"text-xs text-muted-foreground","data-testid":`text-page-type-${s.id}`,children:s.pageType})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.lastGeneratedAt&&e.jsx("span",{className:"text-xs text-muted-foreground","data-testid":`text-last-generated-${s.id}`,children:W(new Date(s.lastGeneratedAt),{addSuffix:!0})}),e.jsx(n,{variant:"ghost",size:"icon",onClick:()=>L(x===s.id?null:s.id),"data-testid":`button-preview-${s.id}`,children:x===s.id?e.jsx(U,{className:"h-4 w-4"}):e.jsx(R,{className:"h-4 w-4"})}),e.jsx(n,{variant:"ghost",size:"icon",onClick:()=>y.mutate({id:s.id,currentStatus:s.status}),disabled:y.isPending,"data-testid":`button-toggle-status-${s.id}`,children:s.status==="published"?e.jsx(_,{className:"h-4 w-4"}):e.jsx(J,{className:"h-4 w-4"})}),e.jsx(n,{variant:"ghost",size:"icon",onClick:()=>N.mutate(s.id),disabled:N.isPending,className:"text-muted-foreground","data-testid":`button-delete-${s.id}`,children:e.jsx(V,{className:"h-4 w-4"})})]})]}),x===s.id&&e.jsx("div",{className:"border-t p-3",children:e.jsx("pre",{className:"text-xs bg-muted p-3 rounded overflow-auto max-h-96","data-testid":`preview-content-${s.id}`,children:s.htmlBody})})]},s.id))})})]})})]})]})})})}export{pe 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.