PageSourceSearch

https://ee.show/assets/js/GuestLinkReview.tsx-gOsOsrDl.js

js ee.show collected 2026-09-25 03:09:43 UTC 19,814 bytes, 1 lines download raw bytes

1import{o as e}from"./chunk-C_JJxWoe.js";import{o as s,r as a}from"./chunk-BA8PhJfb.js";import{a as t,n,r}from"./chunk-BdmRp9-u.js";import{n as i,t as l}from"./chunk-BApK0bRp.js";import{a as d,f as o,g as c,i as m,l as u,r as h}from"./chunk-BVoOQtad.js";import{c as p}from"./chunk-CoHj2Hnd.js";import{a as _,i as x,s as f}from"./chunk-CG2Lxgpr.js";import{n as g}from"./chunk-C7t3w7G5.js";import{t as j}from"./chunk-crEHXF97.js";import{Bt as k,En as v,Fr as w,Gt as N,Lr as y,On as b,Ut as S,Vt as C,Wt as R,hn as $,jr as L,tr as E,zt as z}from"../index-D56I12Dv.js";import{n as F}from"./chunk-QqNSRoPr2.js";import{t as U}from"./chunk-D0zXT10r2.js";import{n as P,r as q,t as M}from"./chunk-BPyc5my_.js";import{t as A}from"./chunk-Bckf89-2.js";import{t as B}from"./chunk-Dj_jbhaP.js";import{i as D,n as I,r as K,t as O}from"./chunk-tRoDmPI0.js";import{t as Q}from"./chunk-D90wR08g.js";import{t as V}from"./chunk-DCOJF89F.js";var G=e(y(),1),H=new Set(["dr","drs","mr","mrs","ms","mx","miss","prof","professor","sir","dame","rev","reverend","hon","honorable","fr","sr","br","jr","ii","iii","iv"]);function T(e){return(e||"").toLowerCase().replace(/[^a-z0-9\s]/g," ").replace(/\s+/g," ").trim()}function W(e){return T(e).split(" ").filter(e=>e.length>1&&!H.has(e))}function J(e){const s=T(e);if(!s)return!0;const a=s.split(" ").filter(Boolean);return 0===a.length||a.every(e=>H.has(e)||e.length<2)}function X(e){return e.candidate_stakeholder_id?function(e){const s=W(e.guest_name_raw),a=W(e.stakeholder_name||""),t=(e.match_reason||"").toLowerCase(),n=e.confidence_score??0;if(J(e.guest_name_raw))return{verdict:"auto_skip",rule_id:"raw_name_honorific_only",reason:"Raw name is only an honorific (Dr., Prof, etc.) — never a real match."};const r=new Set(s),i=a.filter(e=>r.has(e)),l=T(e.guest_name_raw).split(" "),d=T(e.stakeholder_name||"").split(" "),o=new Set(l),c=d.filter(e=>o.has(e)&&e);if(0===i.length&&c.length>0&&c.every(e=>H.has(e)))return{verdict:"auto_skip",rule_id:"candidate_honorific_conflation",reason:`Only shared tokens are honorifics (${c.join(", ")}).`};if(1===s.length&&"partial_first_name"===t)return{verdict:"auto_skip",rule_id:"single_first_name_partial",reason:`Raw name is a single token ("${s[0]}") matched only on first name — too generic.`};if(1===s.length&&"partial_last_name"===t)return{verdict:"auto_skip",rule_id:"single_last_name_partial",reason:`Raw name is a single token ("${s[0]}") matched only on last name — too generic.`};if("partial_first_name"===t&&n<=.5){const e=s[s.length-1],t=a[a.length-1];if(!e||!t||e!==t)return{verdict:"auto_skip",rule_id:"partial_first_name_low",reason:"Only first names align; last names differ and score ≤ 0.5."}}if("partial_last_name"===t&&n<=.5){const e=s[0],t=a[0];if(!e||!t||e!==t)return{verdict:"auto_skip",rule_id:"partial_last_name_low",reason:"Only last names align; first names differ and score ≤ 0.5."}}if("exact_name_match"===t||n>=.95)return{verdict:"auto_approve",rule_id:"exact_match",reason:"Exact or near-exact name match."};if(t.startsWith("token_overlap_")&&n>=.85){const e=s[0],t=s[s.length-1],r=a[0],i=a[a.length-1];if(e&&t&&r&&i&&e===r&&t===i)return{verdict:"auto_approve",rule_id:"strong_token_overlap",reason:`Token overlap ≥ 85% with first + last both aligned (${Math.round(100*n)}%).`}}return"partial_first_and_last"===t?{verdict:"auto_approve",rule_id:"first_and_last_match",reason:"First and last names both align."}:{verdict:"needs_review",rule_id:"default_needs_review",reason:"No rule applied — human review."}}(e):function(e){if(J(e.guest_name_raw))return{verdict:"auto_skip",rule_id:"orphan_honorific_only",reason:"Raw name is only an honorific — do not create a stakeholder from it."};const s=W(e.guest_name_raw);return s.length<2?{verdict:"auto_skip",rule_id:"orphan_single_token",reason:`Only one real name token ("${s[0]??""}") — too generic to seed a stakeholder.`}:{verdict:"bulk_create_ready",rule_id:"orphan_full_name",reason:`Full name with ${s.length} tokens — safe to create + link in bulk.`}}(e)}var Y=L(),Z={host:{icon:o,label:"Host",variant:"default"},guest:{icon:h,label:"Guest",variant:"secondary"},writer:{icon:s,label:"Writer",variant:"outline"}};function ee(e){const s=(e||"guest").toLowerCase(),a=Z[s]||Z.guest,t=a.icon;return(0,Y.jsxs)(U,{variant:a.variant,className:"gap-1",children:[(0,Y.jsx)(t,{className:"h-3 w-3"}),a.label]})}function se(){const[e,s]=(0,G.useState)("pending"),[o,h]=(0,G.useState)(!1),[y,L]=(0,G.useState)(null),[V,H]=(0,G.useState)(new Set),[T,W]=(0,G.useState)(null),[J,Z]=(0,G.useState)({done:0,total:0}),{toast:se}=w(),ae=b(),{data:te,isLoading:ne,refetch:re}=v({queryKey:["guest-link-candidates"],queryFn:async()=>{const{data:e,error:s}=await F.from("episode_guest_link_candidates").select("\n          *,\n          episode_workflows!episode_guest_link_candidates_episode_workflow_id_fkey (\n            episode_id,\n            metadata\n          ),\n          stakeholders!episode_guest_link_candidates_candidate_stakeholder_id_fkey (\n            name\n          )\n        ").order("created_at",{ascending:!1}).limit(100);if(s)throw s;return(e||[]).map(e=>({...e,episode_title:e.episode_workflows?.metadata?.title||`Episode ${e.episode_workflows?.episode_id}`,stakeholder_name:e.stakeholders?.name}))}}),ie=j({mutationFn:async e=>{const{data:s}=await F.auth.getUser(),{data:a,error:t}=await F.rpc("apply_guest_link",{p_candidate_id:e,p_approver_id:s.user?.id||null});if(t)throw t;return a},onSuccess:e=>{se({title:"Link approved",description:`Linked stakeholder to episode. ${e?.assets_updated||0} assets updated.${e?.link_inserted?" Person-episode link created.":""}`}),ae.invalidateQueries({queryKey:["guest-link-candidates"]})},onError:e=>
1{se({title:"Approval failed",description:e instanceof Error?e.message:"Unknown error",variant:"destructive"})}}),le=j({mutationFn:async e=>{const{data:s}=await F.auth.getUser(),{error:a}=await F.from("episode_guest_link_candidates").update({status:"rejected",decided_by:s.user?.id,decided_at:(new Date).toISOString()}).eq("id",e);if(a)throw a},onSuccess:()=>{se({title:"Candidate rejected"}),ae.invalidateQueries({queryKey:["guest-link-candidates"]})},onError:e=>{se({title:"Rejection failed",description:e instanceof Error?e.message:"Unknown error",variant:"destructive"})}}),de=j({mutationFn:async e=>{const{data:s}=await F.auth.getUser(),{data:a,error:t}=await F.rpc("create_stakeholder_from_guest_link_candidate",{p_candidate_id:e,p_creator_id:s.user?.id??null,p_queue_enrichment:!0});if(t)throw t;const n=a;if(!n?.success)throw new Error(n?.error||"Unknown error");return n},onSuccess:e=>{se({title:"Stakeholder created + linked",description:(0,Y.jsxs)("div",{className:"space-y-1",children:[(0,Y.jsxs)("p",{children:["Assets updated: ",(0,Y.jsx)("strong",{children:e?.apply_result?.assets_updated||0})]}),e?.enrichment_suggestion_id&&(0,Y.jsx)("p",{className:"text-xs text-muted-foreground",children:"✓ Enrichment queued"}),e?.stakeholder_id&&(0,Y.jsxs)($,{to:`/admin/stakeholders/${e.stakeholder_id}`,className:"inline-flex items-center gap-1 text-xs text-primary hover:underline mt-1",children:["View stakeholder ",(0,Y.jsx)(c,{className:"h-3 w-3"})]})]})}),ae.invalidateQueries({queryKey:["guest-link-candidates"]})},onError:e=>{se({title:"Create + link failed",description:e instanceof Error?e.message:"Unknown error",variant:"destructive"})}}),oe=j({mutationFn:async({candidateId:e,stakeholderId:s})=>{const{error:a}=await F.from("episode_guest_link_candidates").update({candidate_stakeholder_id:s,match_reason:"manual_selection",confidence:"high",confidence_score:1}).eq("id",e);if(a)throw a;const{data:t}=await F.auth.getUser(),{data:n,error:r}=await F.rpc("apply_guest_link",{p_candidate_id:e,p_approver_id:t.user?.id});if(r)throw r;return n},onSuccess:e=>{se({title:"Linked to existing stakeholder",description:`${e?.assets_updated||0} assets updated.`}),L(null),ae.invalidateQueries({queryKey:["guest-link-candidates"]})},onError:e=>{se({title:"Link failed",description:e instanceof Error?e.message:"Unknown error",variant:"destructive"})}}),ce=async(e=!1)=>{h(!0);try{const{data:s,error:a}=await F.functions.invoke("sync-rss-guests",{body:{dryRun:e,limit:50}});if(a)throw a;const t=s;se({title:e?"Dry run complete":"Sync complete",description:(0,Y.jsxs)("div",{className:"space-y-1",children:[(0,Y.jsxs)("p",{children:["Scanned ",t.workflowsScanned," workflows"]}),(0,Y.jsxs)("p",{children:["Found ",t.peopleFound," people (auto-linked: ",t.autoLinked,")"]}),(0,Y.jsxs)("p",{children:["Candidates created: ",t.candidatesCreated]}),t.channelHost&&(0,Y.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Channel host: ",t.channelHost.name]}),t.errors.length>0&&(0,Y.jsxs)("p",{className:"text-xs text-destructive",children:[t.errors.length," error(s)"]})]})}),e||re()}catch(s){se({title:"Sync failed",description:s instanceof Error?s.message:"Unknown error",variant:"destructive"})}finally{h(!1)}},me=te?.filter(e=>"pending"===e.status)||[],ue=te?.filter(e=>"approved"===e.status||"auto_linked"===e.status)||[],he=te?.filter(e=>"rejected"===e.status)||[],pe=new Map;for(const a of me){const e={id:a.id,guest_name_raw:a.guest_name_raw,guest_name_normalized:a.guest_name_normalized,candidate_stakeholder_id:a.candidate_stakeholder_id,confidence_score:a.confidence_score,match_reason:a.match_reason,stakeholder_name:a.stakeholder_name??null};pe.set(a.id,X(e))}const _e=e=>V.has(e)?{verdict:"needs_review",rule_id:"suppressed_by_user",reason:"Rule suppressed for this row."}:pe.get(e),xe=me.filter(e=>"auto_approve"===_e(e.id)?.verdict),fe=me.filter(e=>"auto_skip"===_e(e.id)?.verdict),ge=me.filter(e=>"bulk_create_ready"===_e(e.id)?.verdict),je=me.filter(e=>"needs_review"===_e(e.id)?.verdict),ke=async(e,s,a)=>{if(0===s.length||T)return;if(!window.confirm(`Run bulk ${e} on ${s.length} candidate(s)? Suppressed rows are excluded.`))return;W(e),Z({done:0,total:s.length});let t=0,n=0,r=0;await Promise.all(Array.from({length:Math.min(3,s.length)},async()=>{for(;r<s.length;){const i=r++;try{await a(s[i]),t++}catch(e){n++}Z({done:t+n,total:s.length})}})),W(null),ae.invalidateQueries({queryKey:["guest-link-candidates"]}),se({title:`Bulk ${e} complete`,description:`${t} succeeded, ${n} failed.`,variant:n>0?"destructive":"default"})},ve=(e,s=!0)=>{return(0,Y.jsxs)(z,{className:"overflow-hidden",children:[(0,Y.jsx)(S,{className:"pb-3",children:(0,Y.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,Y.jsxs)("div",{className:"flex items-start gap-3 flex-1",children:[(0,Y.jsxs)(M,{className:"h-10 w-10 shrink-0",children:[(0,Y.jsx)(q,{src:e.person_img_url||void 0,alt:e.guest_name_raw}),(0,Y.jsx)(P,{children:e.guest_name_raw.split(" ").map(e=>e[0]).join("").slice(0,2).toUpperCase()})]}),(0,Y.jsxs)("div",{className:"space-y-1 flex-1 min-w-0",children:[(0,Y.jsxs)(R,{className:"text-base flex items-center gap-2 flex-wrap",children:[(0,Y.jsx)("span",{className:"truncate",children:e.guest_name_raw}),ee(e.person_role)]}),(0,Y.jsxs)(C,{className:"flex flex-wrap items-center gap-2",children:[(0,Y.jsxs)("span",{className:"text-xs truncate",children:["Episode: ",e.episode_title]}),(a=e.confidence,t=e.confidence_score,(0,Y.jsxs)(U,{variant:"high"===a?"default":"medium"===a?"secondary":"outline",children:[a," (",Math.round(100*t),"%)"]})),(0,Y.jsx)(U,{variant:"outline",className:"text-xs",children:e.match_reason?.replace(/_/g," ")}),"pending"===e.status&&(()=>{const s=_e(e.id);if(!s)return null;const a="auto_approve"===s.verdict?"default":"auto_skip"===s.verdict?"destructive":"bulk_create_ready"===s.verdict?"secondary":"outline",t="auto_approve"===s.verdict?"Rule → approve":"auto_skip"===s.verdict?"Rule → skip":"bulk_create_ready"===s.verdict?"Rule → create+link":"Rule → review";return(0,Y.jsx)(U,{variant:a,className:"text-xs",title:`${s.rule_id}: ${s.reason}`,children:t})})(),"pending"===e.status&&(0,Y.jsxs)("label",{className:"flex items-center gap-1 text-[10px] text-muted-foreground cursor-pointer",children:[(0,Y.jsx)(B,{checked:V.has(e.id),onCheckedChange:()=>{return s=e.id,void H(e=>{const a=new Set(e);return a.has(s)?a.delete(s):a.add(s),a});var s}}),"override"]})]})]})]}),s&&"pending"===e.status&&(0,Y.jsxs)("div",{className:"flex gap-2 shrink-0",children:[e.candidate_stakeholder_id&&(0,Y.jsxs)(N,{size:"sm",onClick:()=>ie.mutate(e.id),disabled:ie.isPending,className:"gap-1",children:[ie.isPending?(0,Y.jsx)(g,{className:"h-3 w-3 animate-spin"}):(0,Y.jsx)(i,{className:"h-3 w-3"}),"Link"]}),(0,Y.jsx)(N,{size:"sm",variant:"outline",onClick:()=>le.mutate(e.id),disabled:le.isPending,children:(0,Y.jsx)(l,{className:"h-3 w-3"})})]})]})}),(0,Y.jsxs)(k,{className:"pt-0",children:[(0,Y.jsxs)("div",{className:"flex items-center justify-between gap-2 text-sm",children:[(0,Y.jsxs)("div",{className:"flex items-center gap-2",children:[e.candidate_stakeholder_id?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(f,{className:"h-4 w-4 text-primary"}),(0,Y.jsxs)("span",{children:["Match: ",(0,Y.jsx)("strong",{children:e.stakeholder_name})]})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(d,{className:"h-4 w-4 text-amber-500"}),(0,Y.jsx)("span",{className:"text-muted-foreground",children:"No stakeholder match found"})]}),e.person_href&&(0,Y.jsx)("a",{href:e.person_href,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-primary transition-colors",children:(0,Y.jsx)(c,{className:"h-3 w-3"})})]}),!e.candidate_stakeholder_id&&"pending"===e.status&&s&&(0,Y.jsx)("div",{className:"flex items-center gap-2",children:y===e.id?(0,Y.jsxs)("div",{className:"flex items-center gap-2",children:[(0,Y.jsx)("div",{className:"w-[200px]",children:(0,Y.jsx)(Q,{entityType:"stakeholder",value:"",onValueChange:s=>{s&&oe.mutate({candidateId:e.id,stakeholderId:s})}})}),(0,Y.jsx)(N,{size:"sm",variant:"ghost",onClick:()=>L(null),children:(0,Y.jsx)(l,{className:"h-3 w-3"})})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(N,{size:"sm",variant:"outline",onClick:()=>L(e.id),disabled:oe.isPending,className:"gap-1",children:[(0,Y.jsx)(E,{className:"h-3 w-3"}),"Search Existing"]}),(0,Y.jsxs)(N,{size:"sm",variant:"secondary",onClick:()=>{const s=e.person_role?` (${e.person_role})`:"";window.confirm(`Create stakeholder for "${e.guest_name_raw}"${s} and link to this episode?\n\nThis will:\n• Create a new stakeholder record\n• Link to episode workflow\n• Backfill content assets\n• Queue enrichment job`)&&de.mutate(e.id)},disabled:de.isPending,className:"gap-1",children:[de.isPending?(0,Y.jsx)(g,{className:"h-3 w-3 animate-spin"}):(0,Y.jsx)(x,{className:"h-3 w-3"}),"Create + Link"]})]})})]}),e.decided_at&&(0,Y.jsxs)("div",{className:"mt-2 text-xs text-muted-foreground",children:["approved"===e.status||"auto_linked"===e.status?"Linked":"Rejected"," on ",A(new Date(e.decided_at),"MMM d, yyyy")]})]})]},e.id);var a,t};return(0,Y.jsxs)("div",{className:"space-y-6",children:[(0,Y.jsxs)("div",{className:"flex items-center justify-between",children:[(0,Y.jsxs)("div",{children:[(0,Y.jsx)("h2",{className:"text-2xl font-bold tracking-tight",children:"Guest Link Review"}),(0,Y.jsx)("p",{className:"text-muted-foreground",children:"Review and approve RSS people → stakeholder matches"})]}),(0,Y.jsxs)("div",{className:"flex gap-2",children:[(0,Y.jsxs)(N,{variant:"outline",size:"sm",onClick:()=>ce(!0),disabled:o,children:[o?(0,Y.jsx)(g,{className:"h-4 w-4 animate-spin mr-2"}):(0,Y.jsx)(p,{className:"h-4 w-4 mr-2"}),"Dry Run"]}),(0,Y.jsxs)(N,{size:"sm",onClick:()=>ce(!1),disabled:o,children:[o?(0,Y.jsx)(g,{className:"h-4 w-4 animate-spin mr-2"}):(0,Y.jsx)(u,{className:"h-4 w-4 mr-2"}),"Sync People"]})]})]}),me.length>0&&(0,Y.jsxs)(z,{className:"border-dashed",children:[(0,Y.jsxs)(S,{className:"pb-3",children:[(0,Y.jsxs)(R,{className:"text-base flex items-center gap-2",children:[(0,Y.jsx)(r,{className:"h-4 w-4 text-primary"}),"Rule-based proposals"]}),(0,Y.jsxs)(C,{className:"text-xs",children:["Layered on top of the existing confidence scores — never modifies them. Bulk actions skip rows you've marked ",(0,Y.jsx)("em",{children:"override"}),".",T&&(0,Y.jsxs)("span",{className:"ml-2 text-primary",children:["Running ",T,": ",J.done,"/",J.total]})]})]}),(0,Y.jsxs)(k,{className:"pt-0 flex flex-wrap gap-2",children:[(0,Y.jsxs)(N,{size:"sm",variant:"default",className:"gap-1",disabled:!!T||0===xe.length,onClick:()=>ke("approve",xe.map(e=>e.id),async e=>{await ie.mutateAsync(e)}),title:"Bulk-link every row the rules marked as auto_approve",children:["approve"===T?(0,Y.jsx)(g,{className:"h-3 w-3 animate-spin"}):(0,Y.jsx)(i,{className:"h-3 w-3"}),"Approve all (",xe.length,")"]}),(0,Y.jsxs)(N,{size:"sm",variant:"destructive",className:"gap-1",disabled:!!T||0===fe.length,onClick:()=>ke("skip",fe.map(e=>e.id),async e=>{await le.mutateAsync(e)}),title:"Reject every row the rules marked as auto_skip (Dr., single-token, honorific conflations)",children:["skip"===T?(0,Y.jsx)(g,{className:"h-3 w-3 animate-spin"}):(0,Y.jsx)(a,{className:"h-3 w-3"}),"Skip all (",fe.length,")"]}),(0,Y.jsxs)(N,{size:"sm",variant:"secondary",className:"gap-1",disabled:!!T||0===ge.length,onClick:()=>ke("create",ge.map(e=>e.id),async e=>{await de.mutateAsync(e)}),title:"Create + link stakeholders for every orphan with a full name (≥ 2 real tokens)",children:["create"===T?(0,Y.jsx)(g,{className:"h-3 w-3 animate-spin"}):(0,Y.jsx)(x,{className:"h-3 w-3"}),"Create + link all (",ge.length,")"]}),(0,Y.jsx)("div",{className:"flex-1"}),(0,Y.jsxs)(U,{variant:"outline",className:"text-xs gap-1",children:[(0,Y.jsx)(_,{className:"h-3 w-3"}),"Needs review: ",je.length]})]})]}),(0,Y.jsxs)(O,{value:e,onValueChange:s,children:[(0,Y.jsxs)(K,{children:[(0,Y.jsxs)(D,{value:"pending",className:"gap-2",children:[(0,Y.jsx)(t,{className:"h-4 w-4"}),"Pending",me.length>0&&(0,Y.jsx)(U,{variant:"secondary",children:me.length})]}),(0,Y.jsxs)(D,{value:"approved",className:"gap-2",children:[(0,Y.jsx)(m,{className:"h-4 w-4"}),"Linked",ue.length>0&&(0,Y.jsx)(U,{variant:"default",children:ue.length})]}),(0,Y.jsxs)(D,{value:"rejected",className:"gap-2",children:[(0,Y.jsx)(l,{className:"h-4 w-4"}),"Rejected",he.length>0&&(0,Y.jsx)(U,{variant:"outline",children:he.length})]})]}),(0,Y.jsx)(I,{value:"pending",className:"mt-4",children:ne?(0,Y.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,Y.jsx)(g,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):0===me.length?(0,Y.jsx)(z,{children:(0,Y.jsxs)(k,{className:"flex flex-col items-center justify-center py-12",children:[(0,Y.jsx)(i,{className:"h-12 w-12 text-muted-foreground mb-3"}),(0,Y.jsx)("p",{className:"text-muted-foreground",children:"No pending c
1andidates"}),(0,Y.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:'Click "Sync People" to scan RSS for hosts, guests, and writers'})]})}):(0,Y.jsx)("div",{className:"grid gap-4",children:me.map(e=>ve(e))})}),(0,Y.jsx)(I,{value:"approved",className:"mt-4",children:0===ue.length?(0,Y.jsx)(z,{children:(0,Y.jsxs)(k,{className:"flex flex-col items-center justify-center py-12",children:[(0,Y.jsx)(n,{className:"h-12 w-12 text-muted-foreground mb-3"}),(0,Y.jsx)("p",{className:"text-muted-foreground",children:"No linked people yet"})]})}):(0,Y.jsx)("div",{className:"grid gap-4",children:ue.map(e=>ve(e,!1))})}),(0,Y.jsx)(I,{value:"rejected",className:"mt-4",children:0===he.length?(0,Y.jsx)(z,{children:(0,Y.jsxs)(k,{className:"flex flex-col items-center justify-center py-12",children:[(0,Y.jsx)(l,{className:"h-12 w-12 text-muted-foreground mb-3"}),(0,Y.jsx)("p",{className:"text-muted-foreground",children:"No rejected candidates"})]})}):(0,Y.jsx)("div",{className:"grid gap-4",children:he.map(e=>ve(e,!1))})})]})]})}function ae(){return(0,Y.jsxs)("div",{className:"p-6 space-y-6",children:[(0,Y.jsx)(V,{}),(0,Y.jsx)(se,{})]})}export{ae 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.