PageSourceSearch

https://liefersoft.de/assets/QuoteList-HGhDp3Tr.js

js liefersoft.de collected 2026-09-24 12:03:17 UTC 19,083 bytes, 4 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/useFetchAll-4P6wT-eM.js","assets/index-C3wyiG4j.js","assets/index-DrVYBQMv.css"])))=>i.map(i=>d[i]);
2import{r as i,j as e,aJ as ne,O as Ue,i as He,bk as Ge,c6 as We,c7 as Ye,b7 as Je,V as Ze,c8 as me,c9 as xe,B as Q,ca as Xe,cb as he,cc as ge,cd as N,D as qe,k as h,U as fe,R as es,bY as ss,y as q,K as pe,ce as ts,bG as as,cf as ns,aC as rs,z as ls,n as os,ad as K,af as R,ag as U,ah as H,aj as S,o as ee,G,bZ as je,a8 as cs,cg as is,ch as ds,s as v,g as j,ci as us}from"./index-C3wyiG4j.js";import{a as ms,b as xs,c as be,T as E,d as hs,e as f}from"./table-D4S2VUHx.js";import{Q as se,F as gs}from"./quote-kinds-DLuRWvdz.js";import{Q as fs}from"./QuoteContractChips-ugI-1HPR.js";import{b as ps}from"./quote-contract-status-D8v5MKDW.js";import{u as js,S as $}from"./SortableTableHead-28Zwh3_Q.js";import{B as bs}from"./BulkActionBar-CJqMCtN5.js";import{n as W,Q as Ne,q as _e,a as te,b as _s}from"./quote-status-C_S1czPu.js";import{cloneQuote as ws}from"./quote-clone-CF-uzzVm.js";import{B as Ns}from"./book-text-CnwHxaTQ.js";import{d as ys}from"./differenceInDays-c3dYH8lX.js";import"./AboStatusBadge-B0_xaYfW.js";import"./format-CRNufvVK.js";import"./cloud-D_uO3Cj5.js";import"./arrow-down--Nu6kko0.js";import"./arrow-up-down-B-mbQ8eK.js";import"./types-BGNHEvJc.js";import"./list-todo-Bc2HWz7J.js";import"./lock-open-Df9H6I8p.js";const Ss=Ne,ae=(d,u)=>_s({company:u==null?void 0:u.company,fullName:u==null?void 0:u.full_name,quoteNumber:d.quote_number,date:d.created_at});function vs(d){const u=d.updated_at||d.created_at;return u?ys(new Date,new Date(u)):0}const re=i.forwardRef(({days:d},u)=>{if(d<=0)return null;const T=d>=7?"text-destructive":d>=3?"text-orange-600":"text-muted-foreground";return e.jsxs("span",{ref:u,className:ne("inline-flex items-center gap-0.5 text-[10px] font-medium",T),children:[e.jsx(Ue,{className:"h-3 w-3"})," Tag ",d]})});re.displayName="StaleBadge";function we({tags:d,tagColors:u}){return!d||d.length===0?null:e.jsx("div",{className:"flex flex-wrap gap-1",children:d.map(T=>e.jsx("span",{className:"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium text-white",style:{backgroundColor:u[T]||"#6366f1"},children:T},T))})}const Us=()=>{const d=He(),{isAdmin:u,isHeadOfSales:T,user:p}=Ge(),{permissions:le}=We(),Y=Ye(),{t:o}=Je(),ye=le.can_export,Se=u||T,[C,ve]=i.useState([]),[Ce,ke]=i.useState(new Map),[A,De]=i.useState({}),[k,Te]=i.useState({}),[oe,Ae]=i.useState({}),[M,Le]=i.useState(""),[P,Be]=i.useState("all"),[I,Ee]=i.useState("all"),[F,$e]=i.useState("all"),[D,ze]=i.useState("all"),[J,Oe]=i.useState(!0),[y,L]=i.useState(new Set),{sortKey:b,sortDir:_,toggleSort:B,sortFn:ce}=js("created_at","desc"),z=async()=>{const{fetchAll:s}=await is(async()=>{const{fetchAll:l}=await import("./useFetchAll-4P6wT-eM.js");return{fetchAll:l}},__vite__mapDeps([0,1,2])),[t,a,m,c]=await Promise.all([s((l,X)=>ds().select("*").order("created_at",{ascending:!1}).range(l,X)),s((l,X)=>v.from("customers").select("id, full_name, company").range(l,X)),v.from("user_roles").select("user_id, role").neq("role","customer").then(l=>l.data||[]),v.from("quote_tags").select("name, color").then(l=>
2l.data||[])]),n=[...new Set((m||[]).map(l=>l.user_id))];let r=[];if(n.length>0){const{data:l}=await v.from("profiles").select("user_id, full_name").in("user_id",n);r=l||[]}ve(t||[]);const{data:g}=await v.from("contracts").select("id, quote_id, status, contract_type, cancelled_at, zoho_subscription_id, zoho_subscription_status, subscription_activated_at, subscription_cancelled_at, zoho_activation_ack_at, signed_at, sent_to_customer_at, created_at, zoho_contract_id").is("deleted_at",null).not("quote_id","is",null);ke(ps(g||[]));const x={};(a||[]).forEach(l=>{x[l.id]=l}),De(x);const V={};r.forEach(l=>{V[l.user_id]=l}),Te(V);const O={};(c||[]).forEach(l=>{O[l.name]=l.color}),Ae(O),Oe(!1)};i.useEffect(()=>{z()},[]);const ie=i.useMemo(()=>{const s=new Set;return C.forEach(t=>(t.tags||[]).forEach(a=>s.add(a))),Array.from(s).sort()},[C]),w=i.useMemo(()=>C.filter(s=>{var t,a,m;if(P!=="all"&&W(s.status)!==P||I!=="all"&&String(s.quote_kind||"configurator")!==I||F!=="all"&&!(s.tags||[]).includes(F)||D==="mine"&&s.created_by!==(p==null?void 0:p.id)||D==="unassigned"&&s.created_by||D!=="all"&&D!=="mine"&&D!=="unassigned"&&s.created_by!==D)return!1;if(M){const c=M.toLowerCase(),n=A[s.customer_id];return((t=s.quote_number)==null?void 0:t.toLowerCase().includes(c))||ae(s,n).toLowerCase().includes(c)||((a=n==null?void 0:n.full_name)==null?void 0:a.toLowerCase().includes(c))||((m=n==null?void 0:n.company)==null?void 0:m.toLowerCase().includes(c))||(s.tags||[]).some(r=>r.toLowerCase().includes(c))}return!0}).map(s=>({...s,days_in_status:vs(s)})).sort((s,t)=>{var a,m,c,n;if(b==="days_in_status"){const r=s.days_in_status-t.days_in_status;return _==="asc"?r:-r}if(b==="customer"){const r=((a=A[s.customer_id])==null?void 0:a.full_name)||"",g=((m=A[t.customer_id])==null?void 0:m.full_name)||"",x=r.localeCompare(g);return _==="asc"?x:-x}if(b==="owner"){const r=((c=k[s.created_by])==null?void 0:c.full_name)||"",g=((n=k[t.created_by])==null?void 0:n.full_name)||"",x=r.localeCompare(g);return _==="asc"?x:-x}return ce(s,t)}),[C,A,k,M,P,I,F,D,b,_,ce]),Z=i.useMemo(()=>C.filter(s=>["module_upsell","service_only","partner_offer"].includes(String(s.quote_kind))&&W(s.status)==="angenommen"&&!s.fulfillment_state),[C]),de=s=>{L(t=>{const a=new Set(t);return a.has(s)?a.delete(s):a.add(s),a})},Qe=()=>{y.size===w.length?L(new Set):L(new Set(w.map(s=>s.id)))},Me=async s=>{const t=Array.from(y),{error:a}=await v.from("quotes").update({status:s}).in("id",t);a?j.error(a.message):(j.success(`${t.length} Angebote auf „${te(s)}" gesetzt`),L(new Set),z())},Pe=async s=>{const t=Array.from(y),{error:a}=await v.from("quotes").update({created_by:s}).in("id",t);a?j.error(a.message):(j.success(`${t.length} Angebote zugewiesen`),L(new Set),z())},Ie=async()=>{const s=Array.from(y);if(!confirm(`${s.length} Angebote in den Papierkorb verschieben?`))return;const{error:t}=await v.from("quotes").update({deleted_at:new Date().toISOString(),deleted_reason:"bulk",deleted_by:(p==null?void 0:p.id)||null}).in("id",s);t?j.error(t.message):(j.success(`${s.length} Angebote in Papierkorb verschoben`),L(new Set),z())},ue=u||le.can_delete,Fe=async s=>{if(!ue){j.error("Keine Berechtigung zum Löschen");return}if(!confirm("Angebot in den Papierkorb verschieben?"))return;const{error:t}=await v.from("quotes").update({deleted_at:new Date().toISOString(),deleted_reason:"manual",deleted_by:(p==null?void 0:p.id)||null}).eq("id",s);t?j.error("Fehler: "+t.message):(j.success("Angebot in Papierkorb verschoben"),z())},Ve=async s=>{if(p)try{const t=await ws(s,{userId:p.id});j.success(`Kopie angelegt: ${t.quote_number}`),d(us(`/dashboard/quotes/${t.id}/edit`,"/dashboard/quotes"),{state:{returnTo:"/dashboard/quotes"}})}catch(t){j.error("Kopieren fehlgeschlagen: "+((t==null?void 0:t.message)||"unbekannt"))}},Ke=Object.values(k).map(s=>({id:s.user_id,name:s.full_name})),Re=()=>{const s=`${o("quoteNr")},${o("customer")},${o("company")},${o("package")},Owner,Tags,${o("status")},Tage,${o("created")},${o("validUntil")}
3`,t=w.map(n=>{var O;const r=A[n.customer_id],g=n.software_config,x=((O=k[n.created_by])==null?void 0:O.full_name)||"",V=(n.tags||[]).join("; ");return[n.quote_number,(r==null?void 0:r.full_name)||"",(r==null?void 0:r.company)||"",(g==null?void 0:g.packageName)||"",x,V,n.status,n.days_in_status,new Date(n.created_at).toLocaleDateString("de-DE"),n.valid_until?new Date(n.valid_until).toLocaleDateString("de-DE"):""].map(l=>`"${String(l||"").replace(/"/g,'""')}"`).join(",")}).join(`
4`),a=new Blob([s+t],{type:"text/csv;charset=utf-8;"}),m=URL.createObjectURL(a),c=document.createElement("a");c.href=m,c.download=`angebote_export_${new Date().toISOString().split("T")[0]}.csv`,c.click(),URL.revokeObjectURL(m)};return e.jsxs("div",{children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Ze,{}),e.jsx("h1",{className:"text-2xl font-bold text-foreground",children:o("quotesTitle")})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 justify-end",children:[e.jsxs(me,{children:[e.jsx(xe,{asChild:!0,children:e.jsx(Q,{variant:"outline",size:Y?"sm":"default","aria-label":"Weitere Aktionen",children:e.jsx(Xe,{className:"h-4 w-4"})})}),e.jsxs(he,{align:"end",className:"w-56 bg-popover z-50",children:[e.jsx(ge,{children:"Weitere Aktionen"}),ye&&e.jsxs(N,{onClick:Re,children:[e.jsx(qe,{className:"h-4 w-4 mr-2"})," ",o("export")]}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/text-modules",children:[e.jsx(Ns,{className:"h-4 w-4 mr-2"})," Textbausteine"]})}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/trash",children:[e.jsx(fe,{className:"h-4 w-4 mr-2"})," Papierkorb"]})})]})]}),e.jsxs(me,{children:[e.jsx(xe,{asChild:!0,children:e.jsxs(Q,{size:Y?"sm":"default",children:[e.jsx(es,{className:"h-4 w-4 mr-1.5"})," ",o("newQuote"),e.jsx(ss,{className:"h-4 w-4 ml-1.5 opacity-80"})]})}),e.jsxs(he,{align:"end",className:"w-64 bg-popover z-50",children:[e.jsx(ge,{children:"Angebotstyp wählen"}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/new",children:[e.jsx(q,{className:"h-4 w-4 mr-2"})," Vorgang wählen …"]})}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/new?kind=configurator",children:[e.jsx(q,{className:"h-4 w-4 mr-2"})," Neukunde – Vollangebot"]})}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/new-hardware",children:[e.jsx(pe,{className:"h-4 w-4 mr-2"})," Hardware-Nachbestellung"]})}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/new?kind=module_upsell",children:[e.jsx(ts,{className:"h-4 w-4 mr-2"})," Modul-Upsell"]})}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/new?kind=service_only",children:[e.jsx(as,{className:"h-4 w-4 mr-2"})," Services / Dienstleistungen"]})}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/new?kind=partner_offer",children:[e.jsx(pe,{className:"h-4 w-4 mr-2"})," Partnerleistung"]})}),e.jsx(ns,{}),e.jsx(N,{asChild:!0,children:e.jsxs(h,{to:"/dashboard/quotes/new-free",children:[e.jsx(rs,{className:"h-4 w-4 mr-2"})," Freies Angebot"]})})]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 mb-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ls,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(os,{placeholder:o("searchQuotes"),value:M,onChange:s=>Le(s.target.value),className:"pl-10"})]}),e.jsxs(K,{value:P,onValueChange:Be,children:[e.jsx(R,{className:"w-[160px]",children:e.jsx(U,{placeholder:"Status"})}
4),e.jsxs(H,{children:[e.jsx(S,{value:"all",children:"Alle Status"}),Ne.map(s=>e.jsx(S,{value:s.value,children:s.label},s.value))]})]}),e.jsxs(K,{value:I,onValueChange:Ee,children:[e.jsx(R,{className:"w-[190px]",children:e.jsx(U,{placeholder:"Angebotsart"})}),e.jsxs(H,{children:[e.jsx(S,{value:"all",children:"Alle Angebotsarten"}),["configurator","module_upsell","hardware_only","service_only","partner_offer","free","leasing"].map(s=>e.jsx(S,{value:s,children:se[s]},s))]})]}),ie.length>0&&e.jsxs(K,{value:F,onValueChange:$e,children:[e.jsx(R,{className:"w-[160px]",children:e.jsx(U,{placeholder:"Tag"})}),e.jsxs(H,{children:[e.jsx(S,{value:"all",children:"Alle Tags"}),ie.map(s=>e.jsx(S,{value:s,children:s},s))]})]}),e.jsxs(K,{value:D,onValueChange:ze,children:[e.jsx(R,{className:"w-[180px]",children:e.jsx(U,{placeholder:"Benutzer"})}),e.jsxs(H,{children:[e.jsx(S,{value:"all",children:"Alle Benutzer"}),e.jsx(S,{value:"mine",children:"Meine Angebote"}),Object.values(k).map(s=>e.jsx(S,{value:s.user_id,children:s.full_name},s.user_id))]})]})]}),!J&&w.length>0&&e.jsxs("p",{className:"text-xs text-muted-foreground mb-2",children:[w.length," von ",C.length," Angeboten"]}),!J&&Z.length>0&&e.jsxs("div",{className:"mb-3 rounded-lg border border-amber-300 bg-amber-50 p-3",children:[e.jsxs("div",{className:"text-sm font-semibold text-amber-900",children:[Z.length," angenommene Angebote ohne Vorgang"]}),e.jsx("p",{className:"text-xs text-amber-900 mb-2",children:"Diese Angebote sind angenommen, es wurde aber nie ein Vorgang daraus. Bitte im Angebot „Vorgang anlegen“ drücken."}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Z.slice(0,12).map(s=>e.jsxs(h,{to:`/dashboard/quotes/${s.id}`,className:"text-xs underline text-amber-900",children:[s.quote_number," · ",se[String(s.quote_kind)]]},s.id))})]}),J?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:o("loading")}):w.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:C.length===0?e.jsxs("div",{children:[e.jsx(q,{className:"h-12 w-12 mx-auto mb-3 text-muted-foreground/50"}),e.jsx("p",{children:o("noQuotesYet")}),e.jsx(Q,{asChild:!0,className:"mt-4",children:e.jsx(h,{to:"/dashboard/quotes/new",children:o("createFirstQuote")})})]}):o("noResults")}):Y?e.jsx("div",{className:"space-y-3",children:w.map(s=>{var r;const t=A[s.customer_id],a=s.software_config,m=(r=k[s.created_by])==null?void 0:r.full_name,c=s.tags||[],n=y.has(s.id);return e.jsx("div",{className:ne("bg-card rounded-xl border p-4 transition-colors",n&&"ring-2 ring-primary"),children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(ee,{checked:n,onCheckedChange:()=>de(s.id),className:"mt-1"}),e.jsxs(h,{to:`/dashboard/quotes/${s.id}`,className:"flex-1 active:bg-muted/50",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-semibold text-primary truncate",children:ae(s,t)}),e.jsx("p",{className:"font-mono text-[10px] text-muted-foreground truncate mt-0.5",children:s.quote_number}),t&&e.jsxs("p",{className:"text-sm font-medium text-foreground truncate mt-0.5",children:[t.full_name,t.company?` – ${t.company}`:""]})]}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx(G,{variant:"secondary",className:`shrink-0 text-[10px] ${_e(s.status)}`,children:te(s.status)}),e.jsx(re,{days:s.days_in_status})]})]}),m&&e.jsxs("p",{className:"text-[10px] text-muted-foreground flex items-center gap-1 mb-1",children:[e.jsx(je,{className:"h-3 w-3"})," ",m]}),c.length>0&&e.jsx("div",{className:"mb-1",children:e.jsx(we,{tags:c,tagColors:oe})}),e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:(a==null?void 0:a.packageName)||"–"}),e.jsx("span",{children:new Date(s.created_at).toLocaleDateString("de-DE")})]})]})]})},s.id)})}):e.jsx("div",{className:"bg-card rounded-xl border overflow-hidden max-h-[calc(100vh-280px)] overflow-y-auto",children:e.jsxs(ms,{children:[e.jsx(xs,{className:"sticky top-0 z-10 bg-card",children:e.jsxs(be,{children:[e.jsx(E,{className:"w-[40px]",children:e.jsx(ee,{checked:w.length>0&&y.size===w.length,onCheckedChange:Qe})}),e.jsx($,{label:o("quoteNr"),sortKey:"quote_number",currentSort:b,currentDir:_,onSort:B}),e.jsx($,{label:o("customer"),sortKey:"customer",currentSort:b,currentDir:_,onSort:B}
4),e.jsx($,{label:"Owner",sortKey:"owner",currentSort:b,currentDir:_,onSort:B}),e.jsx(E,{className:"whitespace-nowrap",children:"VNR"}),e.jsx(E,{children:o("package")}),e.jsx(E,{className:"whitespace-nowrap",children:"Vorgang"}),e.jsx(E,{children:"Tags"}),e.jsx($,{label:o("status"),sortKey:"status",currentSort:b,currentDir:_,onSort:B}),e.jsx($,{label:"Tage",sortKey:"days_in_status",currentSort:b,currentDir:_,onSort:B,className:"w-[80px]"}),e.jsx($,{label:o("created"),sortKey:"created_at",currentSort:b,currentDir:_,onSort:B}),e.jsx(E,{children:"Aktionen"})]})}),e.jsx(hs,{children:w.map(s=>{var g;const t=A[s.customer_id],a=s.software_config,m=s.days_in_status>=3&&!["angenommen","abgelehnt"].includes(W(s.status)),c=(g=k[s.created_by])==null?void 0:g.full_name,n=s.tags||[],r=y.has(s.id);return e.jsxs(be,{className:ne(m&&s.days_in_status>=7&&"bg-destructive/5",r&&"bg-primary/5"),children:[e.jsx(f,{children:e.jsx(ee,{checked:r,onCheckedChange:()=>de(s.id)})}),e.jsxs(f,{children:[e.jsx(h,{to:`/dashboard/quotes/${s.id}`,className:"text-primary hover:underline font-medium text-sm",children:ae(s,t)}),e.jsx("div",{className:"font-mono text-[10px] text-muted-foreground mt-0.5",children:s.quote_number})]}),e.jsx(f,{children:t?e.jsx(h,{to:`/dashboard/customers/${s.customer_id}`,className:"hover:underline",children:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-primary",children:t.full_name}),t.company&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:["– ",t.company]})]})}):e.jsx("span",{className:"text-muted-foreground",children:"–"})}),e.jsx(f,{children:c?e.jsxs("span",{className:"text-sm text-foreground flex items-center gap-1",children:[e.jsx(je,{className:"h-3 w-3 text-muted-foreground"})," ",c]}):e.jsx("span",{className:"text-muted-foreground",children:"–"})}),e.jsx(f,{children:s.vertriebsnummer?e.jsx("span",{className:"text-xs font-mono text-muted-foreground",children:s.vertriebsnummer}):e.jsx("span",{className:"text-muted-foreground",children:"–"})}),e.jsx(f,{className:"text-foreground",children:(a==null?void 0:a.packageName)||"–"}),e.jsxs(f,{className:"whitespace-nowrap",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:se[String(s.quote_kind||"configurator")]||"–"}),s.fulfillment_state?e.jsx(G,{variant:"secondary",className:"mt-0.5 text-[10px]",children:gs[String(s.fulfillment_state)]||String(s.fulfillment_state)}):null]}),e.jsx(f,{children:e.jsx(we,{tags:n,tagColors:oe})}),e.jsxs(f,{children:[e.jsx(G,{variant:"secondary",className:_e(s.status),children:te(s.status)}),!["angenommen","signiert","abgelehnt","storniert","abgelaufen"].includes(W(s.status))&&e.jsx(G,{variant:"outline",className:"ml-1 border-amber-300 bg-amber-50 text-amber-800 text-[10px]",title:"Kunde hat noch nicht unterschrieben — 'Vertrag erstellen' erfordert Begründung",children:"nicht unterschrieben"}),e.jsx("span",{className:"ml-1 inline-block align-middle",children:e.jsx(fs,{quote:s,contract:Ce.get(s.id),compact:!0})})]}),e.jsx(f,{children:e.jsx(re,{days:s.days_in_status})}),e.jsx(f,{className:"text-muted-foreground",children:new Date(s.created_at).toLocaleDateString("de-DE")}),e.jsxs(f,{children:[ue&&e.jsx(Q,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:x=>{x.stopPropagation(),Fe(s.id)},children:e.jsx(fe,{className:"h-3.5 w-3.5 text-destructive"})}),e.jsx(Q,{variant:"ghost",size:"icon",className:"h-7 w-7",title:"Angebot kopieren",onClick:x=>{x.stopPropagation(),Ve(s.id)},children:e.jsx(cs,{className:"h-3.5 w-3.5 text-muted-foreground"})})]})]},s.id)})})]})}),e.jsx(bs,{selectedCount:y.size,selectedIds:Array.from(y),entityType:"quotes",onClear:()=>L(new Set),statusOptions:Ss,onStatusChange:Me,assignees:Ke,onAssign:Pe,onDelete:Se?Ie:void 0})]})};export{Us 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.