PageSourceSearch

https://quikirr.com/_next/static/chunks/48313-dc1bc2418d8e345c.js

js quikirr.com collected 2026-10-04 06:47:46 UTC 19,898 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[48313],{1589:(e,t,r)=>{r.d(t,{C:()=>g,Cp:()=>b,Z6:()=>m,gd:()=>x,sK:()=>y,sw:()=>f,uK:()=>h});var a=r(1934),l=r(66645),n=r(2896);let s="enterprise_options_fetch_timeout",i={options:null,status:"idle",error:null,lastFetchedAt:null},o=0,c=null,d=new Set;async function u(e){let t,r=Error("Loading company options took too long. Default options are available for this save.");r.code=s;let a=new Promise((a,l)=>{t=setTimeout(()=>{l(r),e.abort(r)},5e3)}),l=(async()=>{let t,r=await fetch("/api/enterprise-options",{signal:e.signal});if(!r.ok){let e=await r.text().catch(()=>""),t=Error((e||r.statusText||"Failed to fetch enterprise options").trim());throw t.httpStatus=r.status,t.httpStatusText=r.statusText,t.bodyPreview=(e||"").slice(0,300),t}try{t=await r.json()}catch{let e=Error("The company options response was invalid. Default options are available for this save.");throw e.code="enterprise_options_invalid_response",e}return(0,n.Uj)(t?.data)})();try{return await Promise.race([l,a])}finally{void 0!==t&&clearTimeout(t)}}async function p(e,t){let r=await fetch("/api/enterprise-options",{method:"PATCH",signal:t,headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!r.ok)throw Error(await r.text().catch(()=>r.statusText)||"Failed to update enterprise options");let a=await r.json().catch(()=>({}));return(0,n.Uj)(a?.data)}let m=(0,a.v)((e,t)=>({...i,hydrateFromServer:t=>{t&&e({options:(0,n.Uj)(t),status:"ready",error:null,lastFetchedAt:Date.now()})},fetchIfStale:async r=>{let{force:a=!1,ttlMs:i=18e5,shouldContinue:d}=r??{};if(d?.()===!1)return null;let{lastFetchedAt:p,status:m,options:h}=t(),y=!!p&&Date.now()-p<i&&"ready"===m;if(!a&&y)return d?.()===!1?null:h;let f=o;if(!c||c.generation!==f){let e=new AbortController,t=u(e),r={generation:f,controller:e,promise:t};c=r;let a=()=>{c===r&&(c=null)};t.then(a,a)}let g=c;if(d?.()===!1||!g||g.generation!==o)return null;"loading"!==m&&e({status:"loading",error:null});try{let t=await g.promise;if(d?.()===!1||g.generation!==o)return null;return e({options:t,status:"ready",error:null,lastFetchedAt:Date.now()}),t}catch(p){if(d?.()===!1||g.generation!==o)return null;let r=p instanceof Error?p.message:String(p),a=p?.httpStatus,i=p?.httpStatusText,c=p?.bodyPreview,u=p?.code===s;if(l.vF.error("[enterpriseCompanyOptionsStore] Failed to fetch options (falling back)",{error:r,..."number"==typeof a?{status:a}:{},..."string"==typeof i&&i?{statusText:i}:{},..."string"==typeof c&&c?{bodyPreview:c}:{},...u?{timeoutMs:5e3}:{},fallback_state:u?"enterprise_options_fetch_timeout_default_options":"enterprise_options_fetch_failed_default_options"}),d?.()===!1||g.generation!==o)return null;return e(e=>({options:e.options??(0,n.Uj)(n.PJ),status:"error",error:r})),t().options}},patchOptions:async t=>{let r=o,a=new AbortController;d.add(a);try{let l=await p(t,a.signal);if(a.signal.aborted||r!==o)return null;return e({options:l,status:"ready",error:null,lastFetchedAt:Date.now()}),l}catch(n){if(a.signal.aborted||r!==o)return null;let t=n instanceof Error?n.message:String(n);return l.vF.error("[enterpriseCompanyOptionsStore] Failed to patch options; no local success fallback was applied",{error:t,fallback_state:"enterprise_options_patch_rejected"}),e({status:"error",error:t}),null}finally{d.delete(a)}},addItem:async t=>{let r=o,a=new AbortController;d.add(a);try{let l=await p({addItem:t},a.signal);if(a.signal.aborted||r!==o)return null;return e({options:l,status:"ready",error:null,lastFetchedAt:Date.now()}),l}catch(n){if(a.signal.aborted||r!==o)return null;let t=n instanceof Error?n.message:String(n);return l.vF.error("[enterpriseCompanyOptionsStore] Failed to add option item; no local success fallback was applied",{error:t,fallback_state:"enterprise_option_add_rejected"}),e({status:"error",error:t}),null}finally{d.delete(a)}},reset:()=>{for(let e of(o+=1,c?.controller.abort(new DOMException("Enterprise company options runtime was reset.","AbortError")),d))e.abort(new DOMException("Enterprise company options runtime was reset.","AbortError"));d.clear(),c=null,e({...i})}})),h=()=>m(e=>e.options),y=()=>m(e=>e.status),f=()=>m(e=>e.error),g=()=>m(e=>e.fetchIfStale),b=()=>m(e=>e.patchOptions),x=()=>m(e=>e.addItem)},2896:(e,t,r)=>{r.d(t,{PJ:()=>l,j1:()=>a,Uj:()=>i});let a={industry:{label:"Industry",order:0},industrySubvertical:{label:"Industry Subvertical",order:1},dealType:{label:"Deal Type",order:2},dealSource:{label:"Deal Source",order:3},pipelineStage:{label:"Pipeline Stage",order:4},companyStage:{label:"Company Stage",order:5},endMarkets:{label:"End Markets",order:6},team:{label:"Team",order:7}},l={industrySubverticalRequired:!1,categoryConfig:a,industry:["Technology","Healthcare","Financial Services","Manufacturing","Retail","Energy","Consumer Goods","Real Estate","Media & Entertainment","Education","Other"],industrySubvertical:{Technology:["Software","Hardware","AI/ML","Cybersecurity","Cloud Services"],Healthcare:["Biotech","Pharmaceuticals","Medical Devices","Telehealth","Hospitals"],"Financial Services":["Banking","Insurance","Fintech","Wealth Management","Payments"],Manufacturing:["Automotive","Aerospace","Electronics","Consumer Goods","Heavy Machinery"],Retail:["E-commerce","Fashion/Apparel","Grocery","Home Goods","
1Luxury"],Energy:["Renewable Energy","Oil & Gas","Utilities","Energy Storage","Mining"],Education:["EdTech","Higher Education","K-12","Professional Training","Online Learning"]},dealType:["Acquisition","Investment","Merger","Buyout","Growth Investment","Recapitalization","Other"],dealSource:["Proprietary","Investment Bank","Business Broker","Direct Outreach","Other"],pipelineStage:["IOI","IOI Submitted","Mgmt Meeting","LOI Submitted","LOI Signed","Closed","Realized","Passed"],companyStage:["Early Stage","Growth","Mature","Turnaround","Other"],endMarkets:[],team:[]},n=e=>"string"==typeof e&&e.trim().length>0,s=(e,t)=>Array.isArray(e)?e.filter(n):[...t];function i(e){var t,r;return{industrySubverticalRequired:"boolean"==typeof e?.industrySubverticalRequired?e.industrySubverticalRequired:l.industrySubverticalRequired,categoryConfig:((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))return{...t};let r={...t};return Object.keys(t).forEach(a=>{let l,s=e[a];if(!s||"object"!=typeof s||Array.isArray(s))return;let i=n(s.label)?s.label.trim():t[a].label,o="number"==typeof(l=s.order)&&Number.isFinite(l)?s.order:t[a].order;r[a]={label:i,order:o}}),r})(e?.categoryConfig,a),industry:s(e?.industry,l.industry),industrySubvertical:(t=e?.industrySubvertical,r=l.industrySubvertical,!t||"object"!=typeof t||Array.isArray(t)?{...r}:Object.entries(t).reduce((e,[t,r])=>(n(t)&&(e[t]=Array.isArray(r)?r.filter(n):[]),e),{})),dealType:s(e?.dealType,l.dealType),dealSource:s(e?.dealSource,l.dealSource),pipelineStage:s(e?.pipelineStage,l.pipelineStage),companyStage:s(e?.companyStage,l.companyStage),endMarkets:s(e?.endMarkets,l.endMarkets),team:s(e?.team,l.team)}}},26339:(e,t,r)=>{r.d(t,{mx:()=>a,x_:()=>l});let a=["dealcloud","affinity","meridian","salesforce"],l=["industry","industrySubvertical","team","stage","dealType","dealSource","companyStage","location","endMarkets","isPortfolioCompany","newDeal"]},69109:(e,t,r)=>{r.d(t,{Kw:()=>a,Rp:()=>l}),r(26339);let a={dealcloud:{label:"DealCloud",usesObjectSelection:!0,requiresBaseUrl:!0,baseUrlLabel:"DealCloud site URL",baseUrlPlaceholder:"https://yourfirm.dealcloud.com"},affinity:{label:"Affinity",usesObjectSelection:!1,requiresBaseUrl:!1,baseUrlLabel:null,baseUrlPlaceholder:null},meridian:{label:"Meridian",usesObjectSelection:!0,requiresBaseUrl:!0,baseUrlLabel:"Meridian environment URL",baseUrlPlaceholder:"https://app.meridian-ai.com"},salesforce:{label:"Salesforce",usesObjectSelection:!0,requiresBaseUrl:!0,baseUrlLabel:"Salesforce My Domain URL",baseUrlPlaceholder:"https://yourfirm.my.salesforce.com"}};function l(e,t=""){return"affinity"===e?"name":"meridian"===e?"deals"===t?"company":"title":"salesforce"===e?"Name":""}},78517:(e,t,r)=>{r.d(t,{N:()=>v});var a=r(95155),l=r(43772),n=r(12115),s=r(65547),i=r(92571),o=r(34306),c=r(64962),d=r(89239),u=r(42763),p=r(60529),m=r(33807),h=r(29991),y=r(66645),f=r(69109),g=r(26339);let b={industry:"Industry",industrySubvertical:"Industry subvertical",team:"Team",stage:"Pipeline stage",dealType:"Deal type",dealSource:"Deal source",companyStage:"Company stage",location:"Location",endMarkets:"End markets",isPortfolioCompany:"Portfolio company",newDeal:"New deal"};async function x(e){let t=await e.json().catch(()=>null);if(!e.ok)throw Error(t?.error||"CRM request failed.");return t}function v({open:e,onOpenChange:t,onSaved:r}){let[j,S]=n.useState("dealcloud"),[w,C]=n.useState("DealCloud"),[_,k]=n.useState(""),[N,E]=n.useState(""),[M,A]=n.useState(""),[R,O]=n.useState(""),[F,I]=n.useState(""),[T,U]=n.useState(""),[P,D]=n.useState(""),[L,q]=n.useState(""),[J,B]=n.useState({}),[K,G]=n.useState(null),[$,H]=n.useState(!1),[V,z]=n.useState(!1),[W,Q]=n.useState(!1),[Z,X]=n.useState(!1),[Y,ee]=n.useState(null),[et,er]=n.useState(null),ea=f.Kw[j],el=n.useCallback(async()=>{z(!0),ee(null);try{let e=await fetch("/api/crm/integration",{credentials:"include"}),t=await e.json();if(!e.ok)throw Error(t.error||"Could not load CRM settings.");let r=t.integration;A(""),E(""),O(""),I(""),r?(S(r.provider),C(r.displayName),k(r.baseUrl||""),U(r.externalEntryType||""),D(r.externalListId||""),q(r.nameField||""),B(r.fieldMapping||{}),H(!0),r.lastError&&ee(r.lastError),r.lastVerifiedAt&&er(`Verified ${new Date(r.lastVerifiedAt).toLocaleStr
1ing()}`)):H(!1)}catch(e){y.vF.error("[CrmIntegrationDialog] Failed to load status",{error:e instanceof Error?e.message:String(e)}),ee((0,l.A)(e instanceof Error?e.message:"Could not load CRM settings.","We couldn't load the CRM settings. Refresh and try again.","web_features_analysis_management_company_components_crmintegrationdialog_crmintegrationdialog_1_failed"))}finally{z(!1)}},[]);n.useEffect(()=>{e&&el()},[e,el]);let en=n.useMemo(()=>{switch(j){case"dealcloud":return M.trim()||N.trim()?{clientId:N.trim(),apiKey:M.trim()}:void 0;case"affinity":return M.trim()?{apiKey:M.trim()}:void 0;case"meridian":return N.trim()||R.trim()||F.trim()?{clientId:N.trim(),clientSecret:R.trim(),refreshToken:F.trim()}:void 0;case"salesforce":return N.trim()||R.trim()?{clientId:N.trim(),clientSecret:R.trim()}:void 0}},[M,N,R,j,F]),es=async e=>{Q(!0),ee(null),er(null);let t=e??(ea.usesObjectSelection?T:null);try{let e=await fetch("/api/crm/integration/discover",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:j,baseUrl:ea.requiresBaseUrl?_:null,credentials:en,externalEntryType:ea.usesObjectSelection&&t||null,externalListId:"affinity"===j&&P||null})}),r=await x(e);if(!r?.discovery)throw Error("CRM schema discovery returned no fields.");G(r.discovery),ea.usesObjectSelection&&r.discovery.selectedObjectId&&
1!T&&(U(r.discovery.selectedObjectId),q((0,f.Rp)(j,r.discovery.selectedObjectId))),er(`Connected. ${r.discovery.fields.length} fields are available to map.`)}catch(e){y.vF.error("[CrmIntegrationDialog] CRM discovery failed",{provider:j,error:e instanceof Error?e.message:String(e)}),ee((0,l.A)(e instanceof Error?e.message:"CRM schema discovery failed.","We couldn't check the CRM connection. Review the connection settings and try again.","web_features_analysis_management_company_components_crmintegrationdialog_discover_2_failed"))}finally{Q(!1)}},ei=async()=>{X(!0),ee(null);try{let e=await fetch("/api/crm/integration",{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:j,displayName:w,baseUrl:ea.requiresBaseUrl?_:null,credentials:en,externalEntryType:ea.usesObjectSelection?T:null,externalListId:"affinity"===j&&P||null,nameField:"affinity"===j?"name":L,fieldMapping:J})});await x(e),er("Connection verified and mapping saved."),H(!0),A(""),E(""),O(""),I(""),r(),t(!1)}catch(e){y.vF.error("[CrmIntegrationDialog] Failed to save CRM mapping",{provider:j,error:e instanceof Error?e.message:String(e)}),ee((0,l.A)(e instanceof Error?e.message:"CRM connection could not be saved.","We couldn't save the CRM connection. Review the settings and try again.","web_features_analysis_management_company_components_crmintegrationdialog_save_3_failed"))}finally{X(!1)}},eo=$||("affinity"===j?!!M.trim():"dealcloud"===j?!!(N.trim()&&M.trim()):"meridian"===j?!!(N.trim()&&R.trim()&&F.trim()):!!(N.trim()&&R.trim())),ec=eo&&(!ea.requiresBaseUrl||!!_.trim()),ed=eo&&!!w.trim()&&(!ea.requiresBaseUrl||!!_.trim()&&!!T&&!!L);return(0,a.jsx)(u.lG,{open:e,onOpenChange:t,children:(0,a.jsxs)(u.Cf,{className:"flex h-[88vh] max-h-[820px] w-[calc(100vw-2rem)] max-w-4xl flex-col gap-0 overflow-hidden p-0",children:[(0,a.jsx)(u.c7,{className:"border-b border-slate-200 px-6 py-5",children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"flex h-9 w-9 items-center justify-center rounded-lg bg-blue-50 text-[#2563FF]",children:(0,a.jsx)(s.A,{className:"h-5 w-5"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)(u.L3,{children:"CRM company sync"}),(0,a.jsx)(u.rr,{children:"Connect one firm CRM and map its opportunity fields into company records."})]})]})}),V?(0,a.jsxs)("div",{className:"flex flex-1 items-center justify-center text-sm text-slate-500",children:[(0,a.jsx)(i.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading CRM configuration…"]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-5",children:[(0,a.jsxs)("div",{className:"grid gap-5 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(m.J,{children:"CRM provider"}),(0,a.jsxs)(h.l6,{value:j,onValueChange:e=>{S(e),C(f.Kw[e].label),G(null),B({}),U(""),D(""),q((0,f.Rp)(e)),A(""),E(""),O(""),I(""),H(!1),ee(null),er(null)},children:[(0,a.jsx)(h.bq,{children:(0,a.jsx)(h.yv,{})}),(0,a.jsx)(h.gC,{children:g.mx.map(e=>(0,a.jsx)(h.eb,{value:e,children:f.Kw[e].label},e))})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(m.J,{htmlFor:"crm-display-name",children:"Connection name"}),(0,a.jsx)(p.p,{id:"crm-display-name",value:w,onChange:e=>C(e.target.value),placeholder:"Firm CRM"})]}),ea.requiresBaseUrl&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"space-y-2 md:col-span-2",children:[(0,a.jsx)(m.J,{htmlFor:"crm-provider-url",children:ea.baseUrlLabel}),(0,a.jsx)(p.p,{id:"crm-provider-url",type:"url",value:_,onChange:e=>k(e.target.value),placeholder:ea.baseUrlPlaceholder??""})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(m.J,{htmlFor:"crm-client-id",children:"Client ID"}),(0,a.jsx)(p.p,{id:"crm-client-id",value:N,onChange:e=>E(e.target.value),placeholder:$?"Leave blank to keep stored credentials":`${ea.label} client ID`})]})]}),("dealcloud"===j||"affinity"===j)&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(m.J,{htmlFor:"crm-api-key",children:"API key"}),(0,a.jsx)(p.p,{id:"crm-api-key",type:"password",autoComplete:"new-password",value:M,onChange:e=>A(e.target.value),placeholder:$?"Leave blank to keep stored API key":`${ea.label} API key`})]}),("meridian"===j||"salesforce"===j)&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(m.J,{htmlFor:"crm-client-secret",children:"Client secret"}),(0,a.jsx)(p.p,{id:"crm-client-secret",type:"password",autoComplete:"new-password",value:R,onChange:e=>O(e.target.value),placeholder:$?"Leave blank to keep stored credentials":`${ea.label} client secret`})]}),"meridian"===j&&(0,a.jsxs)("div",{className:"space-y-2 md:col-span-2",children:[(0,a.jsx)(m.J,{htmlFor:"meridian-refresh-token",children:"OAuth refresh token"}),(0,a.jsx)(p.p,{id:"meridian-refresh-token",type:"password",autoComplete:"new-password",value:F,onChange:e=>I(e.target.value),placeholder:$?"Leave blank to keep stored credentials":"Meridian refresh token"}),(0,a.jsx)("p",{className:"text-xs text-slate-500",children:"Generate this once through Meridian's OAuth PKCE authorization flow. Qu
1ikirr uses it server-side to obtain short-lived access tokens."})]})]}),(0,a.jsxs)("div",{className:"mt-6 border-t border-slate-200 pt-5",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-end gap-3",children:[ea.usesObjectSelection&&K?.objects.length?(0,a.jsxs)("div",{className:"min-w-[260px] flex-1 space-y-2",children:[(0,a.jsx)(m.J,{children:"CRM object"}),(0,a.jsxs)(h.l6,{value:T,onValueChange:e=>{U(e),G(null),q((0,f.Rp)(j,e)),B({})},children:[(0,a.jsx)(h.bq,{children:(0,a.jsx)(h.yv,{placeholder:"Select CRM object"})}),(0,a.jsx)(h.gC,{children:K.objects.map(e=>(0,a.jsx)(h.eb,{value:e.apiName,children:e.name},e.id))})]})]}):null,"affinity"===j&&K?.objects.length?(0,a.jsxs)("div",{className:"min-w-[260px] flex-1 space-y-2",children:[(0,a.jsx)(m.J,{children:"Opportunity list (optional)"}),(0,a.jsxs)(h.l6,{value:P||"__all__",onValueChange:e=>{D("__all__"===e?"":e),G(null),B({})},children:[(0,a.jsx)(h.bq,{children:(0,a.jsx)(h.yv,{})}),(0,a.jsxs)(h.gC,{children:[(0,a.jsx)(h.eb,{value:"__all__",children:"All accessible opportunities"}),K.objects.map(e=>(0,a.jsx)(h.eb,{value:e.id,children:e.name},e.id))]})]})]}):null,(0,a.jsxs)(d.$,{type:"button",variant:"outline",disabled:!ec||W,onClick:()=>void es(),className:"gap-2",children:[W?(0,a.jsx)(i.A,{className:"h-4 w-4 animate-spin"}):(0,a.jsx)(o.A,{className:"h-4 w-4"}),K?"Refresh fields":"Connect & discover fields"]})]}),ea.usesObjectSelection&&K&&K.objects.length>0&&0===K.fields.length&&T&&(0,a.jsxs)(d.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>void es(T),className:"mt-2",children:["Load fields for ",T]})]}),K?.fields.length?(0,a.jsxs)("div",{className:"mt-6 border-t border-slate-200 pt-5",children:[(0,a.jsxs)("div",{className:"mb-4",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-slate-950",children:"Field mapping"}),(0,a.jsx)("p",{className:"mt-1 text-sm text-slate-500",children:"Select the CRM source for each Quikirr company field. Unmapped fields stay manual."})]}),(0,a.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:["affinity"!==j&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)(m.J,{children:["Company name ",(0,a.jsx)("span",{className:"text-red-600",children:"*"})]}),(0,a.jsxs)(h.l6,{value:L,onValueChange:q,children:[(0,a.jsx)(h.bq,{children:(0,a.jsx)(h.yv,{placeholder:"Select company-name field"})}),(0,a.jsx)(h.gC,{children:K.fields.map(e=>(0,a.jsx)(h.eb,{value:e.id,children:e.name},e.id))})]})]}),g.x_.map(e=>(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(m.J,{children:b[e]}),(0,a.jsxs)(h.l6,{value:J[e]||"__unmapped__",onValueChange:t=>B(r=>{if("__unmapped__"===t){let t={...r};return delete t[e],t}return{...r,[e]:t}}),children:[(0,a.jsx)(h.bq,{children:(0,a.jsx)(h.yv,{})}),(0,a.jsxs)(h.gC,{children:[(0,a.jsx)(h.eb,{value:"__unmapped__",children:"Not mapped"}),K.fields.map(e=>(0,a.jsx)(h.eb,{value:e.id,children:e.name},e.id))]})]})]},e))]})]}):null,et&&(0,a.jsxs)("div",{className:"mt-5 flex items-start gap-2 rounded-md border border-emerald-200 bg-emerald-50 px-3 py-2 text-sm text-emerald-800",children:[(0,a.jsx)(c.A,{className:"mt-0.5 h-4 w-4 shrink-0"}),et]}),Y&&(0,a.jsx)("div",{role:"alert",className:"mt-5 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-800",children:Y})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between border-t border-slate-200 bg-white px-6 py-4",children:[(0,a.jsx)("p",{className:"text-xs text-slate-500",children:"CRM credentials are encrypted and are never returned to the browser."}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$,{type:"button",variant:"outline",onClick:()=>t(!1),disabled:Z,children:"Cancel"}),(0,a.jsxs)(d.$,{type:"button",onClick:()=>void ei(),disabled:!ed||Z,className:"gap-2",children:[Z&&(0,a.jsx)(i.A,{className:"h-4 w-4 animate-spin"}),"Save connection"]})]})]})]})]})})}}}]);

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.