PageSourceSearch

https://clozure.net/assets/Companies-BzKMwRb4.js

js clozure.net collected 2026-09-24 14:25:08 UTC 10,963 bytes, 1 lines download raw bytes

1import{r as w,q as J,j as e}from"./react-vendor-Ca39dfnS.js";import{a as Q,u as F}from"./query-vendor-CZuItqE6.js";import{P as W,u as X,K as Y,D as Z,a9 as ee,B as S,y as se,z as ie,E as ae,G as ne,F as te,j as n,k as t,l as r,m as l,I as o,n as d,R as D,U as z,V as E,W as I,X as a,aa as re,C as p,a as g,b as y,d as f,e as M,t as le,v as P,w as q,p as de,s as c,ab as k,ac as A}from"./main-BAUbw78W.js";import{T as oe,a as ce,b as H,c as h,d as he,e as x}from"./table-BWYWOUjE.js";import{g as xe,as as me,b as ue,r as je,at as pe,G as ge,e as ye,f as fe,au as be}from"./ui-vendor-BsCBchWs.js";import"./modulepreload-polyfill-B5Qt9EMX.js";import"./chart-vendor-DTBERZQl.js";const ve=de({name:c().min(1,"Company name is required"),domain:c().optional(),industry:A(["technology","finance","healthcare","retail","manufacturing","education","other"]).optional(),size:A(["1-10","11-50","51-200","201-500","501-1000","1001-5000","5001-10000","10000+"]).optional(),location:c().optional(),description:c().optional(),website:c().url().optional().or(k("")),linkedinUrl:c().url().optional().or(k("")),githubUrl:c().url().optional().or(k(""))});function Le(){const{businessId:m,userId:B}=W(),[b,O]=w.useState(""),[V,v]=w.useState(!1),[u,N]=w.useState(null),{toast:C}=X(),i=J({resolver:le(ve),defaultValues:{name:"",domain:"",industry:void 0,size:void 0,location:"",description:"",website:"",linkedinUrl:"",githubUrl:""}}),{data:j=[],isLoading:$}=Q({queryKey:["/api/companies",m],queryFn:async()=>{const s=await fetch(`/api/companies?businessId=${m}`);if(!s.ok)throw new Error("Failed to fetch companies");return s.json()}}),T=F({mutationFn:async s=>q("/api/companies",{method:"POST",body:JSON.stringify({...s,businessId:m,createdBy:B})}),onSuccess:()=>{P.invalidateQueries({queryKey:["/api/companies",m]}),C({title:"Success",description:"Company created successfully"}),v(!1),i.reset()},onError:()=>{C({title:"Error",description:"Failed to create company",variant:"destructive"})}}),U=F({mutationFn:async({id:s,data:_})=>q(`/api/companies/${s}`,{method:"PATCH",body:JSON.stringify({..._,businessId:m})}),onSuccess:()=>{P.invalidateQueries({queryKey:["/api/companies",m]}),C({title:"Success",description:"Company updated successfully"}),v(!1),N(null),i.reset()},onError:()=>{C({title:"Error",description:"Failed to update company",variant:"destructive"})}}),G=s=>{u?U.mutate({id:u.id,data:s}):T.mutate(s)},R=s=>{N(s),i.reset({name:s.name,domain:s.domain||"",industry:s.industry,size:s.size,location:s.location||"",description:s.description||"",website:s.website||"",linkedinUrl:s.linkedinUrl||"",githubUrl:s.githubUrl||""}),v(!0)},L=j.filter(s=>s.name.toLowerCase().includes(b.toLowerCase())||s.domain?.toLowerCase().includes(b.toLowerCase())||s.industry?.toLowerCase().includes(b.toLowerCase())),K=s=>Math.floor(Math.random()*50)+1;return e.jsxs("div",{className:"container mx-auto p-6 space-y-6",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx("div",{children:e.jsx(Y,{department:"LEAD_GEN",title:"Companies",subtitle:"Manage and track companies in your pipeline",compact:!0})}),e.jsxs(Z,{open:V,onOpenChange:v,children:[e.jsx(ee,{asChild:!0,children:e.jsxs(S,{"data-testid":"button-add-company",onClick:()=>{N(null),i.reset()},children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),"Add Company"]})}),e.jsxs(se,{className:"max-w-2xl",children:[e.jsxs(ie,{children:[e.jsx(ae,{children:u?"Edit Company":"Add New Company"}),e.jsx(ne,{children:u?"Update company information":"Enter company details to add to your database"})]}),e.jsx(te,{...i,children:e.jsxs("form",{onSubmit:i.handleSubmit(G),className:"space-y-4",children:[e.jsx(n,{control:i.control,name:"name",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"Company Name *"}),e.jsx(l,{children:e.jsx(o,{placeholder:"Acme Corporation","data-testid":"input-company-name",...s})}),e.jsx(d,{})]})}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(n,{control:i.control,name:"domain",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"Domain"}),e.jsx(l,{children:e.jsx(o,{placeholder:"acme.com","data-testid":"input-company-domain",...s})}),e.jsx(d,{})]})}),e.jsx(n,{control:i.control,name:"industry",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"Industry"}),e.jsxs(D,{onValueChange:s.onChange,defaultValue:s.value,children:[e.jsx(l,{children:e.jsx(z,{"data-testid":"select-company-industry",children:e.jsx(E,{placeholder:"Select industry"})})}),e.jsxs(I,{children:[e.jsx(a,{value:"technology",children:"Technology"}),e.jsx(a,{value:"finance",children:"Finance"}),e.jsx(a,{value:"healthcare",children:"Healthcare"}),e.jsx(a,{value:"retail",children:"Retail"}),e.jsx(a,{value:"manufacturing",children:"Manufacturing"}),e.jsx(a,{value:"education",children:"Education"}),e.jsx(a,{value:"other",children:"Other"})]})]}),e.jsx(d,{})]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(n,{control:i.control,name:"size",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"Company Size"}),e.jsxs(D,{onValueChange:s.onChange,defaultValue:s.value,children:[e.jsx(l,{children:e.jsx(z,{"data-testid":"select-company-size",children:e.jsx(E,{placeholder:"Select size"})})}),e.jsxs(I,{children:[e.jsx(a,{value:"1-10",children:"1-10 employees"}),e.jsx(a,{value:"11-50",children:"11-50 employees"}),e.jsx(a,{value:"51-200",children:"51-200 employees"}),e.jsx(a,{value:"201-500",children:"201-500 employees"}),e.jsx(a,{value:"501-1000",children:"501-1000 employees"}),e.jsx(a,{value:"1001-5000",children:"1001-5000 employees"}),e.jsx(a,{value:"5001-10000",children:"5001-10000 employees"}),e.jsx(a,{value:"10000+",children:"10000+ employees"})]})]}),e.jsx(d,{})]})}),e.jsx(n,{control:i.control,name:"location",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"Location"}),e.jsx(l,{children:e.jsx(o,{placeholder:"San Francisco, CA","data-testid":"input-company-location",...s})}),e.jsx(d,{})]})})]}),e.jsx(n,{control:i.control,name:"description",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"Description"}),e.jsx(l,{children:e.jsx(o,{placeholder:"Brief company description","data-testid":"input-company-description",...s})}),e.jsx(d,{})]})}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(n,{control:i.control,name:"website",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"Website"}),e.jsx(l,{children:e.jsx(o,{placeholder:"https://acme.com","data-testid":"input-company-website",...s})}),e.jsx(d,{})]})}),e.jsx(n,{control:i.control,name:"linkedinUrl",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"LinkedIn URL"}),e.jsx(l,{children:e.jsx(o,{placeholder:"https://linkedin.com/company/...","data-testid":"input-company-linkedin",...s})}),e.jsx(d,{})]})}),e.jsx(n,{control:i.control,name:"githubUrl",render:({field:s})=>e.jsxs(t,{children:[e.jsx(r,{children:"GitHub URL"}),e.jsx(l,{children:e.jsx(o,{placeholder:"https://github.com/...","data-testid":"input-company-github",...s})}),e.jsx(d,{})]})})]}),e.jsx(re,{children:e.jsx(S,{type:"submit",disabled:T.isPending||U.isPending,"data-testid":"button-submit-company",children:u?"Update Company":"Create Company"})})]})})]})]})]}),e.jsxs(p,{children:[e.jsx(g,{children:e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx(y,{children:"Company Directory"}),e.jsxs("div",{className:"relative w-64",children:[e.jsx(me,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(o,{placeholder:"Search companies...",value:b,onChange:s=>O(s.target.value),className:"pl-8","data-testid":"input-search-companies"})]})]})}),e.jsx(f,{children:$?e.jsx("div",{className:"text-center py-8",children:"Loading companies..."}):L?.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"No companies found. Add your first company to get started."}
1):e.jsxs(oe,{children:[e.jsx(ce,{children:e.jsxs(H,{children:[e.jsx(h,{children:"Company"}),e.jsx(h,{children:"Industry"}),e.jsx(h,{children:"Size"}),e.jsx(h,{children:"Leads"}),e.jsx(h,{children:"Location"}),e.jsx(h,{children:"Links"}),e.jsx(h,{children:"Actions"})]})}),e.jsx(he,{children:L?.map(s=>e.jsxs(H,{"data-testid":`row-company-${s.id}`,children:[e.jsx(x,{className:"font-medium",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ue,{className:"w-4 h-4 text-muted-foreground"}),s.name]}),s.domain&&e.jsx("span",{className:"text-sm text-muted-foreground",children:s.domain})]})}),e.jsx(x,{children:s.industry&&e.jsx(M,{variant:"outline",children:s.industry})}),e.jsx(x,{children:s.size&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(je,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm",children:s.size})]})}),e.jsx(x,{children:e.jsxs(M,{variant:"secondary",children:[K(s.id)," leads"]})}),e.jsx(x,{children:s.location&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(pe,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm",children:s.location})]})}),e.jsx(x,{children:e.jsxs("div",{className:"flex gap-2",children:[s.website&&e.jsx("a",{href:s.website,target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary","data-testid":`link-website-${s.id}`,children:e.jsx(ge,{className:"w-4 h-4"})}),s.linkedinUrl&&e.jsx("a",{href:s.linkedinUrl,target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary","data-testid":`link-linkedin-${s.id}`,children:e.jsx(ye,{className:"w-4 h-4"})}),s.githubUrl&&e.jsx("a",{href:s.githubUrl,target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary","data-testid":`link-github-${s.id}`,children:e.jsx(fe,{className:"w-4 h-4"})})]})}),e.jsx(x,{children:e.jsx(S,{size:"sm",variant:"ghost",onClick:()=>R(s),"data-testid":`button-edit-${s.id}`,children:e.jsx(be,{className:"w-4 h-4"})})})]},s.id))})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsxs(p,{children:[e.jsx(g,{className:"pb-3",children:e.jsx(y,{className:"text-sm font-medium",children:"Total Companies"})}),e.jsx(f,{children:e.jsx("div",{className:"text-2xl font-bold",children:j.length||0})})]}),e.jsxs(p,{children:[e.jsx(g,{className:"pb-3",children:e.jsx(y,{className:"text-sm font-medium",children:"Tech Companies"})}),e.jsx(f,{children:e.jsx("div",{className:"text-2xl font-bold",children:j.filter(s=>s.industry==="technology").length||0})})]}),e.jsxs(p,{children:[e.jsx(g,{className:"pb-3",children:e.jsx(y,{className:"text-sm font-medium",children:"Enterprise (1000+)"})}),e.jsx(f,{children:e.jsx("div",{className:"text-2xl font-bold",children:j.filter(s=>s.size==="1001-5000"||s.size==="5001-10000"||s.size==="10000+").length||0})})]}),e.jsxs(p,{children:[e.jsx(g,{className:"pb-3",children:e.jsx(y,{className:"text-sm font-medium",children:"With LinkedIn"})}),e.jsx(f,{children:e.jsx("div",{className:"text-2xl font-bold",children:j.filter(s=>s.linkedinUrl).length||0})})]})]})]})}export{Le 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.