1import{j as e}from"./vendor-query-CKtLK1dq.js";import{c as ne,r as i,d as oe}from"./vendor-react-jvDhuP46.js";import{f as de,h as ce,j as xe,k as me,m as he,n as ue,o as pe,p as ge,q as be,d as N,G as S,r as q,W as I,S as fe,v as M,w as b,x as je,g as A}from"./index-CvWaq0wg.js";import{u as ve,C as we}from"./useConfirm-CnO1m0Ql.js";import{u as Ne,U as ke}from"./UpgradeModal-BZRRXU20.js";import{E as ye}from"./EmptyState-DE5cxFiM.js";import{C as Ce}from"./ListSkeleton-DG2wSuf9.js";import{u as Pe}from"./vendor-i18n-DMkF1ssK.js";import"./vendor-axios-DEWho_Gc.js";const f=10;function Te(){const k=ne(),{t:a}=Pe("websites"),{data:y,isLoading:R}=de(),$=ce(),C=xe(),P=me(),{canManageWorkspace:h,isAdmin:O}=he(),{confirm:D,dialogProps:Q}=ve(),{entry:o}=ue("websites"),c=Ne(),x=(y==null?void 0:y.data)??[],V=x.filter(t=>t.setup_status==="completed").length,Z=x.filter(t=>t.setup_status!=="completed").length,[m,F]=i.useState(null),[u,_]=i.useState([]),[J,T]=i.useState(!1),[n,p]=i.useState(1),[j,U]=oe(),[z,B]=i.useState(""),[W,K]=i.useState(!1),[G,v]=i.useState(""),{data:L,isLoading:X}=pe(h),E=(L==null?void 0:L.data)??[],Y=E.length>0||W;i.useEffect(()=>{const t=j.get("error");t&&(B(t),j.delete("error"),U(j,{replace:!0}))},[j,U]),i.useEffect(()=>{if(!m){_([]),p(1);return}T(!0),ge(m).then(t=>_(t.data)).catch(()=>_([])).finally(()=>T(!1))},[m]);const g=Math.ceil(u.length/f),ee=u.slice((n-1)*f,n*f),te=async(t,r)=>{r.stopPropagation(),await D({title:a("list.confirmDelete.title"),message:a("list.confirmDelete.message"),confirmLabel:a("list.confirmDelete.confirm"),variant:"danger"})&&(await $.mutateAsync(t),m===t&&F(null))},se=async t=>{v("");try{await C.mutateAsync(t)}catch(r){if(je(r)){c.open({entry:o,message:A(r)});return}v(A(r,a("list.trash.restoreFailed")))}},ae=async t=>{if(v(""),!!await D({title:a("list.trash.confirmForce.title"),message:a("list.trash.confirmForce.message"),confirmLabel:a("list.trash.confirmForce.confirm"),variant:"danger"}))try{await P.mutateAsync(t)}catch(d){v(A(d,a("list.trash.forceFailed")))}},re=(t,r)=>{r.stopPropagation(),F(m===t?null:t),p(1)},le=()=>o!=null&&o.reached?(c.open({entry:o}),!0):!1;return R?e.jsx(Ce,{cards:3}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(be,{title:a("list.title"),count:x.length,quotas:o?[o]:void 0,quotaLabel:()=>a("list.quotaTitle"),statColumns:3,stats:[{label:a("list.stats.total"),value:x.length},{label:a("list.stats.active"),value:V,color:"text-emerald-600 dark:text-emerald-400"},{label:a("list.stats.settingUp"),value:Z,color:"text-amber-600 dark:text-amber-400",hideIfZero:!0}],actions:h?e.jsxs(e.Fragment,{children:[e.jsx(N,{size:"sm",className:"w-full justify-center whitespace-nowrap sm:w-auto",onClick:()=>{le()||k("/websites/new?auto=true")},children:a("common:actions.addWebsite")}),Y&&e.jsx(N,{variant:"ghost",size:"sm",className:"w-full justify-center whitespace-nowrap sm:w-auto",onClick:()=>K(t=>!t),children:a(W?"list.trash.toggleHide":"list.trash.toggleShow")})]}):void 0}),z&&e.jsxs("div",{className:"rounded-lg bg-rose-500/10 border border-rose-500/20 px-4 py-3 text-sm text-rose-500 flex items-start justify-between gap-3",children:[e.jsx("span",{children:z}),e.jsx("button",{type:"button",onClick:()=>B(""),className:"shrink-0 text-rose-400 hover:text-rose-300","aria-label":"Dismiss",children:"Ã"})]}),x.length===0?e.jsx(S,{children:e.jsx(ye,{icon:e.jsx("svg",{className:"h-16 w-16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1,d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"})}),title:a("list.empty.title"),description:a("list.empty.description"),action:h?{label:a("common:actions.addWebsite"),onClick:()=>k("/websites/new?auto=true")}:void 0})}):e.jsx("div",{className:"space-y-3",children:x.map(t=>{const r=q(t.id,"website list row id"),d=m===r,H=t.crawled_count??0;return e.jsxs(S,{className:"overflow-hidden",children:[e.jsxs("div",{className:"flex items-center gap-4 cursor-pointer",onClick:()=>k(`/websites/${r}`),children:[e.jsx(I,{src:t.logo_url,name:t.name,size:"xl"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-base font-semibold text-slate-900 dark:text-white truncate",children:t.name}),e.jsx("span",{className:"text-xs text-slate-400 dark:text-slate-500 truncate hidden sm:inline",children:t.domain})]}),e.jsxs("div",{className:"flex items-center gap-2 mt-1.5 flex-wrap",children:[t.setup_status==="draft"&&t.ingestion_status&&t.ingestion_status!=="completed"&&t.ingestion_status!=="failed"?e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full bg-violet-500/15 border border-violet-500/30 px-2 py-0.5 text-[11px] font-semibold text-violet-500 dark:text-violet-400",children:[e.jsx("div",{className:"h-2.5 w-2.5 animate-spin rounded-full border-[1.5px] border-violet-500 border-t-transparent"}),a("detail.settingUp")]}):e.jsx(fe,{status:t.setup_status??"draft"}),e.jsx("span",{className:"inline-flex items-center rounded bg-slate-100 dar
1k:bg-white/[0.06] px-2 py-0.5 text-xs text-slate-500 dark:text-slate-400",children:t.cms_type}),e.jsx("span",{className:"text-xs text-slate-500",children:t.locale})]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-6 shrink-0",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-lg font-semibold text-slate-900 dark:text-white",children:H}),e.jsx("p",{className:"text-[10px] uppercase tracking-wider text-slate-400",children:a("list.stats.crawled")})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-lg font-semibold text-slate-900 dark:text-white",children:t.content_count??0}),e.jsx("p",{className:"text-[10px] uppercase tracking-wider text-slate-400",children:a("list.stats.articles")})]})]}),e.jsx("span",{className:"text-xs text-slate-500 shrink-0 hidden md:block",children:M(t.created_at)}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[H>0&&e.jsx("button",{onClick:s=>{re(r,s)},className:b("rounded-lg p-1.5 transition-colors",d?"text-violet-400 bg-violet-500/10":"text-slate-400 hover:text-violet-400 hover:bg-violet-500/10"),title:a(d?"list.tooltips.collapse":"list.tooltips.showCrawled"),children:e.jsx("svg",{className:b("h-4 w-4 transition-transform",d&&"rotate-180"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"})})}),h&&e.jsx("button",{onClick:s=>{te(r,s)},className:"rounded-lg p-1.5 text-slate-400 hover:text-rose-400 hover:bg-rose-500/10 transition-colors",title:a("list.tooltips.delete"),children:e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})})})]})]}),d&&e.jsx("div",{className:"mt-4 pt-4 border-t border-slate-200 dark:border-white/[0.06]",children:J?e.jsxs("div",{className:"flex items-center justify-center py-6",children:[e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-violet-500 border-t-transparent"}),e.jsx("span",{className:"ml-2 text-xs text-slate-400",children:a("list.crawled.loading")})]}):u.length===0?e.jsx("p",{className:"text-xs text-slate-500 text-center py-4",children:a("list.crawled.empty")}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-1",children:ee.map(s=>e.jsxs("div",{className:"flex items-center gap-3 px-3 py-2 rounded-lg hover:bg-slate-50 dark:hover:bg-white/[0.02] transition-colors group",children:[e.jsx("span",{className:b("h-2 w-2 rounded-full shrink-0",{"bg-emerald-500":s.status==="crawled","bg-amber-500":s.status==="pending","bg-rose-500":s.status==="failed","bg-orange-500":s.status==="pending_review"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"text-sm text-slate-800 dark:text-slate-200 truncate",children:s.title||s.url}),s.title&&e.jsx("p",{className:"text-[11px] text-slate-400 truncate",children:s.url})]}),e.jsx("span",{className:b("text-[10px] font-medium px-2 py-0.5 rounded-full shrink-0",{"bg-emerald-500/10 text-emerald-500":s.status==="crawled","bg-amber-500/10 text-amber-500":s.status==="pending","bg-rose-500/10 text-rose-500":s.status==="failed","bg-orange-500/10 text-orange-500":s.status==="pending_review"}),children:s.status==="pending_review"?a("list.crawled.review"):s.status}),s.crawled_at&&e.jsx("span",{className:"text-[10px] text-slate-400 shrink-0 hidden lg:block",children:M(s.crawled_at)}),e.jsx("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",onClick:l=>l.stopPropagation(),className:"hidden shrink-0 rounded p-1 text-slate-400 transition-opacity hover:text-violet-400 sm:block sm:opacity-0 sm:group-hover:opacity-100",title:a("list.tooltips.openNewTab"),children:e.jsx("svg",{className:"h-3.5 w-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"})})})]},s.id))}),g>1&&e.jsxs("div",{className:"flex items-center justify-between pt-3 mt-3 border-t border-slate-200 dark:border-white/[0.06]",children:[e.jsx("p",{className:"text-xs text-slate-400",children:a("list.crawled.showing",{from:(n-1)*f+1,to:Math.min(n*f,u.length),total:u.length})}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:s=>{s.stopPropagation(),p(l=>Math.max(1,l-1))},disabled:n===1,className:"px-2.5 py-1 rounded-lg text-xs font-medium text-slate-500 hover:text-white hover:bg-violet-500 disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:a("list.crawled.prev")}),Array.from({length:g},(s,l)=>l+1).filter(s=>s===1||s===g||Math.abs(s-n)<=1).reduce((s,l,w,ie)=>(w>0&&l-ie[w-1]>1&&s.push("..."),s.push(l),s),[]).map((s,l)=>typeof s=="string"?e.jsx("span",{className:"px-1 text-xs text-slate-500",children:"..."},`ellipsis-${l}`):e.jsx("button",{onClick:w=>{w.stopPropagation(),p(s)},className:b("h-7 w-7 rounded-lg text-xs font-medium transition-colors",s===n?"bg-vi
1olet-500 text-white":"text-slate-500 hover:text-white hover:bg-violet-500/50"),children:s},s)),e.jsx("button",{onClick:s=>{s.stopPropagation(),p(l=>Math.min(g,l+1))},disabled:n===g,className:"px-2.5 py-1 rounded-lg text-xs font-medium text-slate-500 hover:text-white hover:bg-violet-500 disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:a("list.crawled.next")})]})]})]})})]},r)})}),h&&W&&e.jsxs(S,{children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("h2",{className:"text-base font-semibold text-slate-900 dark:text-white",children:a("list.trash.title")}),e.jsx("p",{className:"text-xs text-slate-500 dark:text-slate-400 mt-1",children:a("list.trash.subtitle")})]}),G&&e.jsx("div",{className:"mb-4 rounded-lg bg-rose-500/10 border border-rose-500/20 px-4 py-3 text-sm text-rose-500",children:G}),X?e.jsxs("div",{className:"flex items-center justify-center py-6",children:[e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-violet-500 border-t-transparent"}),e.jsx("span",{className:"ml-2 text-xs text-slate-400",children:a("list.trash.loading")})]}):E.length===0?e.jsx("p",{className:"text-sm text-slate-500 text-center py-4",children:a("list.trash.empty")}):e.jsx("div",{className:"space-y-2",children:E.map(t=>{const r=q(t.id,"trashed website row id");return e.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-slate-200 dark:border-white/[0.06] px-3 py-2.5",children:[e.jsx(I,{src:t.logo_url,name:t.name,size:"lg"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-slate-800 dark:text-slate-200 truncate",children:t.name}),e.jsxs("p",{className:"text-[11px] text-slate-400 truncate",children:[t.domain,t.deleted_at&&` · ${a("list.trash.deletedAt",{date:M(t.deleted_at)})}`]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsx(N,{variant:"secondary",size:"sm",onClick:()=>se(r),loading:C.isPending&&C.variables===r,children:a("list.trash.restore")}),O&&e.jsx(N,{variant:"danger",size:"sm",onClick:()=>ae(r),loading:P.isPending&&P.variables===r,title:a("list.trash.forceDeleteHint"),children:a("list.trash.forceDelete")})]})]},r)})})]}),e.jsx(we,{...Q}),e.jsx(ke,{isOpen:c.isOpen,onClose:c.close,entry:c.entry,message:c.message})]})}export{Te 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.