1import{_ as K,m as n,c as s,b as t,t as r,F as I,B,d as rt,I as bt,x as D,l as w,f as _,y as $,u as Ct,N as xt,a0 as St,C as ot,o as at,z as It,r as C,q as Lt,k as $t,e as E,g as u,D as nt,h as V,T as j,a2 as st,w as U,v as R,Z as it,L as Mt}from"./index-CZs8E7p5.js";import{u as Tt}from"./useToast-D8Sp8TiO.js";import{A as At}from"./AppLayout-DHFYS5he.js";import{g as Nt,s as Bt}from"./mcp-DZCc-u2L.js";import"./logowordsheavy4-BCh2U6rL.js";import"./AppLayout.vue_vue_type_style_index_0_scoped_6bb66ba6_lang-CSNqNX5X.js";import"./SkeletonList-Cspu2ZsC.js";/* empty css */import"./ContrastChip-cbqOPU6N.js";/* empty css */import"./upgrade.helpers-Dv8NCAvC.js";import"./team-helpers-7rg_xhCn.js";const Dt="/images/linkedin-profile-menu.png",zt={class:"mcp-trial__badge","aria-hidden":"true"},Pt={key:0,width:"26",height:"26",viewBox:"0 0 24 24",fill:"currentColor"},qt={key:1,width:"26",height:"26",viewBox:"0 0 24 24",fill:"currentColor"},Ot={class:"mcp-trial__title"},Et={class:"mcp-trial__subtitle"},Vt={class:"mcp-trial__features"},Ut={class:"mcp-trial__feature-title"},Rt={class:"mcp-trial__feature-text"},Ht=["disabled","data-test"],Gt={class:"mcp-trial__note"},Ft={__name:"McpTrialBanner",props:{state:{type:String,required:!0},starting:{type:Boolean,default:!1}},emits:["start","upgrade"],setup(l){const g=l,h=w(()=>g.state==="NONE"),y=[{icon:"search",title:"Find anyone",text:"Ask by name, company, email or tag"},{icon:"book",title:"Brief before a meeting",text:"Everything Contacts+ holds on one person"},{icon:"shield",title:"Nothing saves without you",text:"Every change waits for your approval"}],x=w(()=>h.value?{title:"Try assistant connections free for 14 days",subtitle:"Connect Claude or ChatGPT and work with your contacts from your assistant. Nothing is saved without your approval.",cta:"Start 14-Day Free Trial",note:"No credit card required"}:{title:"Your 14-day trial has ended",subtitle:"Assistant connections are a Premium feature. Upgrade to keep using them.",cta:"Upgrade to Premium",note:"Nothing has been disconnected â upgrading restores access without reconnecting."});return(k,i)=>(n(),s("div",{class:D(["mcp-trial",{"mcp-trial--ended":!h.value}]),"data-test":"mcp-trial-banner"},[t("div",zt,[h.value?(n(),s("svg",Pt,[...i[1]||(i[1]=[t("circle",{cx:"8.8",cy:"8.8",r:"3.4"},null,-1),t("path",{d:"M2.4 20.1c0-3.6 2.9-6 6.4-6s6.4 2.4 6.4 6c0 .5-.4 1-1 1H3.4c-.6 0-1-.5-1-1z"},null,-1),t("path",{d:"M18.4 2.2l1.1 2.85 2.85 1.1-2.85 1.1-1.1 2.85-1.1-2.85-2.85-1.1 2.85-1.1z"},null,-1)])])):(n(),s("svg",qt,[...i[2]||(i[2]=[t("path",{d:"M12 2l2.9 6.2 6.8.9-5 4.7 1.3 6.7L12 17.3 5.9 20.5 7.2 13.8l-5-4.7 6.8-.9z"},null,-1)])]))]),t("h2",Ot,r(x.value.title),1),t("p",Et,r(x.value.subtitle),1),t("div",Vt,[(n(),s(I,null,B(y,a=>t("div",{key:a.title,class:"mcp-trial__feature"},[rt(bt,{class:"mcp-trial__feature-icon",name:a.icon,size:22},null,8,["name"]),t("div",Ut,r(a.title),1),t("p",Rt,r(a.text),1)])),64))]),t("button",{class:"mcp-trial__cta",type:"button",disabled:l.starting,"data-test":h.value?"start-trial":"upgrade",onClick:i[0]||(i[0]=a=>k.$emit(h.value?"start":"upgrade"))},r(l.starting?"Startingâ¦":x.value.cta),9,Ht),t("p",Gt,r(x.value.note),1)],2))}},Wt=K(Ft,[["__scopeId","data-v-e42ecd80"]]),Zt={class:"integration-modal"},jt={class:"integration-modal__body"},Kt={class:"integration-modal__header"},Yt={key:0,width:"48",height:"48",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},Jt={key:1,width:"48",height:"48",viewBox:"0 0 36 36",fill:"none","aria-hidden":"true"},Xt={class:"integration-modal__title"},Qt={class:"integration-modal__text"},te={key:1,class:"integration-modal__note","data-test":"mcp-premium-note"},ee={key:2,class:"integration-modal__more-body"},oe={class:"more-intro"},ae=["data-type"],ne={class:"more-section__header"},se={key:0,class:"more-section__icon",width:"13",height:"13",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},ie={key:1,class:"more-section__icon",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","aria-hidden":"true"},le={key:2,class:"more-section__icon",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","aria-hidden":"true"},re={class:"more-section__title"},de={class:"more-section__count"},ce={key:0,class:"more-chips"},ue={key:1,class:"more-cards"},pe={class:"more-card__name"},me={key:0,class:"more-card__desc"},ge={class:"integration-modal__footer"},he={class:"integration-modal__footer-col"},_e={class:"integration-modal__footer-value"},ve={class:"integration-modal__footer-col"},fe=["href"],ye={class:"integration-modal__footer-col"},we=["href"],ke={__name:"IntegrationDetail",props:{integration:{type:Object,required:!0},premiumNote:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1},closable:{type:Boolean,default:!0},showScreenshots:{type:Boolean,default:!0},trial:{type:Object,default:null},startingTrial:{type:Boolean,default:!1}},emits:["close","expand","get-started","start-trial","upgrade"],setup(l){const g=l,h=w(()=>{var i,a;return((i=g.trial)==null?void 0:i.state)==="NONE"||((a=g.trial)==null?void 0:a.state)==="EXPIRED"?g.trial.state:null}),y=w(()=>h.value?null:{label:"Get Started",event:"get-started",sub:null}),x=w(()=>{var i;return((i=g.trial)==null?void 0:i.state)!=="ACTIVE"?null:g.trial.daysLeft===1?"Last day":`${g.trial.daysLeft} days left`}),k=w(()=>{var i;switch((i=g.trial)==null?void 0:i.state){case"NONE":case"EXPIRED":return null;case"ACTIVE":return g.trial.daysLeft===1?"Last day of your free trial.":`${g.trial.daysLeft} days left of your free trial.`;case"PREMIUM":return null;default:return g.trial===null?null:g.premiumNote?"Assistant connections need an active Premium plan. You can set this up now â it will start working as soon as your plan is active, without setting it up again.":null}});return(i,a)=>(n(),s("div",Zt,[l.closable?(n(),s("button",{key:0,class:"integration-modal__close",type:"button","aria-label":"Close",onClick:a[0]||(a[0]=p=>i.$emit("close"))},"Ã")):_("",!0),t("div",jt,[t("header",Kt,[t("span",{class:D(["integration-modal__logo",{"integration-modal__logo--mcp":l.integration.slug==="mcp"}])},[l.integration.slug==="mcp"?(n(),s("svg",Yt,[...a[5]||(a[5]=[t("circle",{cx:"8.8",cy:"8.8",r:"3.4"},null,-1),t("path",{d:"M2.4 20.1c0-3.6 2.9-6 6.4-6s6.4 2.4 6.4 6c0 .5-.4 1-1 1H3.4c-.6 0-1-.5-1-1z"},null,-1),t("path",{d:"M18.4 2.2l1.1 2.85 2.85 1.1-2.85 1.1-1.1 2.85-1.1-2.85-2.85-1.1 2.85-1.1z"},null,-1)])])):(n(),s("svg",Jt,[...a[6]||(a[6]=[t("path",{d:"M21.5 3.5L18 14.5L14.5 3.5L10.5 5.5L16 15.5L4.5 13.5L3.5 18L15 18.5L6 25.5L9 28.5L18 20L27 28.5L30 25.5L21 18.5L32.5 18L31.5 13L20 15.5L25.5 5.5L21.5 3.5Z",fill:"currentColor"},null,-1)])]))],2),t("h1",Xt,r(l.integration.name),1),x.value?(n(),s("span",{key:0,class:D(["integration-modal__trial-chip",{"integration-modal__trial-chip--last":l.trial.daysLeft<=3}
1]),"data-test":"trial-days-left"},r(x.value),3)):_("",!0),y.value?(n(),s("button",{key:1,class:"integration-modal__cta",type:"button","data-test":"integration-cta",onClick:a[1]||(a[1]=p=>i.$emit(y.value.event))},r(y.value.label),1)):_("",!0)]),h.value?(n(),$(Wt,{key:0,state:h.value,starting:l.startingTrial,onStart:a[2]||(a[2]=p=>i.$emit("start-trial")),onUpgrade:a[3]||(a[3]=p=>i.$emit("upgrade"))},null,8,["state","starting"])):_("",!0),a[12]||(a[12]=t("div",{class:"integration-modal__section-label"},"Overview",-1)),t("p",Qt,r(l.integration.description),1),k.value?(n(),s("p",te,r(k.value),1)):_("",!0),l.expanded&&l.integration.moreHeading?(n(),s("div",ee,[t("p",oe,r(l.integration.moreHeading),1),(n(!0),s(I,null,B(l.integration.moreSections,p=>(n(),s("div",{key:p.title,class:"more-section","data-type":p.title.toLowerCase()},[t("div",ne,[p.title==="Triggers"?(n(),s("svg",se,[...a[7]||(a[7]=[t("path",{d:"M13 2L3 14h9l-1 8 10-12h-9l1-8z"},null,-1)])])):p.title==="Actions"?(n(),s("svg",ie,[...a[8]||(a[8]=[t("circle",{cx:"12",cy:"12",r:"3"},null,-1),t("path",{d:"M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83"},null,-1)])])):(n(),s("svg",le,[...a[9]||(a[9]=[t("circle",{cx:"11",cy:"11",r:"8"},null,-1),t("path",{d:"M21 21l-4.35-4.35"},null,-1)])])),t("span",re,r(p.title),1),t("span",de,r(p.items.length),1)]),p.title==="Triggers"?(n(),s("div",ce,[(n(!0),s(I,null,B(p.items,b=>(n(),s("span",{key:b.text,class:"more-chip"},r(b.text),1))),128))])):(n(),s("div",ue,[(n(!0),s(I,null,B(p.items,b=>(n(),s("div",{key:b.text,class:"more-card"},[t("div",pe,r(b.text),1),b.children?(n(),s("p",me,r(b.children.join(" ")),1)):_("",!0)]))),128))]))],8,ae))),128))])):_("",!0),!l.expanded&&l.integration.moreSections?(n(),s("button",{key:3,type:"button",class:"integration-modal__more",onClick:a[4]||(a[4]=p=>i.$emit("expand"))},"More...")):_("",!0),l.showScreenshots?(n(),s(I,{key:4},[a[10]||(a[10]=t("div",{class:"integration-modal__screenshots-label"},"Screenshots",-1)),a[11]||(a[11]=t("div",{class:"integration-modal__screenshots-placeholder"},null,-1))],64)):_("",!0)]),t("footer",ge,[t("div",he,[a[13]||(a[13]=t("span",{class:"integration-modal__footer-label"},"Author",-1)),t("span",_e,r(l.integration.author),1)]),t("div",ve,[a[14]||(a[14]=t("span",{class:"integration-modal__footer-label"},"Support",-1)),t("a",{class:"integration-modal__footer-link",href:`mailto:${l.integration.supportEmail}`},r(l.integration.supportEmail),9,fe)]),t("div",ye,[a[15]||(a[15]=t("span",{class:"integration-modal__footer-label"},"Website",-1)),t("a",{class:"integration-modal__footer-link",href:l.integration.website,target:"_blank",rel:"noopener noreferrer"},r(l.integration.website),9,we)])])]))}},lt=K(ke,[["__scopeId","data-v-dea55bea"]]),be={class:"integrations-page"},Ce={class:"integrations-header-row"},xe={class:"integrations-feature"},Se=["aria-expanded"],Ie={class:"integrations-page__inner"},Le={class:"request-section"},$e={class:"request-candidates-grid"},Me=["aria-pressed","aria-label","onClick"],Te={class:"candidate-tile__name"},Ae={key:0,class:"candidate-tile__requested"},Ne={class:"details-modal"},Be={class:"details-modal__header"},De={class:"details-modal__title"},ze={class:"details-modal__body"},Pe={class:"details-modal__label"},qe={class:"details-modal__label"},Oe={class:"suggest-modal"},Ee={key:0,class:"suggest-modal__success"},Ve={class:"suggest-modal__success-msg"},Ue={class:"suggest-modal__body"},Re={class:"details-modal__label"},He={class:"details-modal__label"},Ge={class:"suggest-modal__footer"},Fe=["disabled"],We={__name:"IntegrationsView",setup(l){const g=Lt(),h=$t(),y=Ct();xt();const x=St(),k=w(()=>{var o;return((o=y.account)==null?void 0:o.id)||"anon"}),i=Tt(),a=[{name:"Zapier",shortDescription:"Automate tasks with hundreds of apps",description:"Zapier gives you the power to integrate Contacts+ with hundreds of other apps to automate your work. Use this integration to connect Contacts+ to other apps you use like Pipedrive, HubSpot, and Google Sheets to automate the tedious tasks in your workflow.",moreHeading:"Our new and improved Zapier Integrations supp
1orts the following:",moreSections:[{title:"Triggers",items:[{text:"Contact Deleted"},{text:"New Tag"},{text:"New Tag Deleted"},{text:"New Contact"},{text:"Contact Updated"},{text:"Tag Updated"}]},{title:"Actions",items:[{text:"Tag Contact",children:["Applies a tag to a contact.","Can either use tagId from another step or dynamic dropdown."]},{text:"Create or Get Tag",children:["Creates a Tag by name or returns the ID if it already exists."]},{text:"Append Note",children:["Appends a note to a contact via search or specific Contact ID."]},{text:"Create Contact"},{text:"Update Contact"}]},{title:"Searches",items:[{text:"Find Contact",children:["Allows you to lookup a contact."]},{text:"Find Person",children:["Allows you to lookup Person Data from Person API by email or twitter."]},{text:"Find Company",children:["Allows you to lookup Company Data from Company API by domain."]}]}],slug:"zapier",url:"https://zapier.com/apps/contacts-plus/integrations",author:"Contacts+",supportEmail:"[email protected]",website:"https://www.contactsplus.com"},{name:"AI assistants",shortDescription:"Use your contacts from Claude or ChatGPT",description:"Connect Claude or ChatGPT to Contacts+ and work with your address book from your assistant. Use this integration to find people, read a briefing before a meeting, and have the assistant suggest updates, notes and new contacts â each one waiting in Contacts+ for your approval before anything is saved. An assistant can never delete or export your contacts.",moreHeading:"The Contacts+ assistant connection supports the following:",moreSections:[{title:"Searches",items:[{text:"Find Contact",children:["Allows you to look up a contact by name, company, email, phone or tag."]},{text:"Read Briefing",children:["Returns what Contacts+ already holds on one person, including notes, tags and recent activity."]},{text:"List Tags",children:["Returns the tags already in use, with how many contacts carry each one."]}]},{title:"Actions",items:[{text:"Suggest Contact Update",children:["Proposes changes to fields on an existing contact. Waits in Contacts+ for your approval."]},{text:"Append Note",children:["Adds to a contact's note. Only ever adds â never replaces or clears what you wrote."]},{text:"Add Contact",children:["Stages a person the assistant has found. You confirm whether they are new or match someone you already have."]},{text:"Tag Contact",children:["Applies tags to up to 25 contacts at a time."]}]},{title:"Access",items:[{text:"Read only",children:["Find people and read briefings. Cannot change anything."]},{text:"Full access",children:["Read, propose changes, notes and new people for your approval, and add tags."]}]}],slug:"mcp",url:"https://mcp.contactsplus.com",author:"Contacts+",supportEmail:"[email protected]",website:"https://www.contactsplus.com"}],p=w(()=>g.params.slug),b=w(()=>a.find(o=>o.slug===p.value)),H=w(()=>{var o;return((o=b.value)==null?void 0:o.slug)==="mcp"?void 0:b.value}),G=w(()=>a.find(o=>o.slug==="mcp")),L=w(()=>p.value==="mcp"),Y=C(null);function dt(){h.push(L.value?"/integrations":"/integrations/mcp")}ot(L,async o=>{var e,c;o&&(J(),await Mt(),(c=(e=Y.value)==null?void 0:e.$el)==null||c.scrollIntoView({behavior:"smooth",block:"nearest"}))});const z=C(null),F=C(!1);at(()=>{L.value&&J()});async function J(){if(z.value)return;const{status:o,body:e}=await Nt();z.value=o===200&&e?e:{state:"UNKNOWN"}}async function ct(){F.value=!0;const{status:o,body:e}=await Bt();if(F.value=!1,o===200&&e){z.value=e;return}i.error("Could not start your trial â please try again")}const W=C(!1);ot(p,()=>{W.value=!1});function X(){h.push("/integrations")}function Q(o){var m;if(!o)return;const e=(m=y.account)==null?void 0:m.id,c=e?`${o.url}?account=${encodeURIComponent(e)}`:o.url;window.open(c,"_blank")}const P=C(!1),tt=C(null);function ut(){P.value=!0}function q(){var o;P.value=!1,(o=tt.value)==null||o.focus()}function pt(){P.value=!1,h.push("/import?source=linkedin")}function mt(o){o.key==="Escape"&&q()}const gt=[{id:"salesforce",name:"Salesforce",color:"#1589ee",textColor:"#fff"},{id:"hubspot",name:"HubSpot",color:"#ff7a59",textColor:"#fff"},{id:"pipedrive",name:"Pipedrive",color:"#40b25a",textColor:"#fff"}
1,{id:"slack",name:"Slack",color:"#4a154b",textColor:"#fff"},{id:"notion",name:"Notion",color:"#191919",textColor:"#fff"},{id:"airtable",name:"Airtable",color:"#fcb400",textColor:"#191919"},{id:"mailchimp",name:"Mailchimp",color:"#ffe01b",textColor:"#191919"},{id:"intercom",name:"Intercom",color:"#1f8ded",textColor:"#fff"},{id:"asana",name:"Asana",color:"#f06a6a",textColor:"#fff"},{id:"monday",name:"Monday",color:"#f0373b",textColor:"#fff"}],S=C(new Set),O=C({}),f=C({open:!1,candidate:null,what:"",why:""}),v=C({open:!1,name:"",why:"",success:!1});function et(o){return o.slice(0,1).toUpperCase()}function Z(o){var m;const e=`cp_candidate_requests_${o.user_id}`,c=JSON.parse(localStorage.getItem(e)||"{}");o.action==="remove"?delete c[o.integration_id]:c[o.integration_id]={integration_name:o.integration_name,what:o.what||"",why:o.why||"",updated_at:o.timestamp},localStorage.setItem(e,JSON.stringify(c)),it({resource:"/proxy/integration-request",method:"post",params:{...o,user_email:((m=y.account)==null?void 0:m.email)||""}}).catch(()=>{})}function ht(o){var m,A,N;const e="cp_custom_suggestions",c=JSON.parse(localStorage.getItem(e)||"[]");c.push({...o,created_at:new Date().toISOString()}),localStorage.setItem(e,JSON.stringify(c)),it({resource:"/proxy/integration-suggestion",method:"post",params:{...o,user_email:((m=y.account)==null?void 0:m.email)||"",first_name:((N=(A=y.myCard)==null?void 0:A.name)==null?void 0:N.givenName)||""}}).catch(()=>{})}function _t(){try{const o=`cp_candidate_requests_${k.value}`,e=JSON.parse(localStorage.getItem(o)||"{}");S.value=new Set(Object.keys(e)),O.value=Object.fromEntries(Object.entries(e).map(([c,m])=>[c,{what:m.what||"",why:m.why||""}]))}catch{}}at(_t);function vt(o){const e=new Set(S.value);e.has(o.id)?(e.delete(o.id),S.value=e,Z({event:"candidate_request",action:"remove",user_id:k.value,integration_id:o.id,integration_name:o.name,timestamp:new Date().toISOString()}),i.info(`Removed ${o.name} from your requests`)):(e.add(o.id),S.value=e,Z({event:"candidate_request",action:"upsert",user_id:k.value,integration_id:o.id,integration_name:o.name,what:"",why:"",timestamp:new Date().toISOString()}),i.success(`Thanks â we've noted you want ${o.name}`),ft(o))}function ft(o){const e=O.value[o.id]||{what:"",why:""};f.value={open:!0,candidate:o,what:e.what,why:e.why}}function M(){f.value={...f.value,open:!1}}function yt(){const{candidate:o,what:e,why:c}=f.value;if(!o)return;const m=e.trim()||c.trim();O.value={...O.value,[o.id]:{what:e,why:c}},Z({event:"candidate_request",action:"upsert",user_id:k.value,integration_id:o.id,integration_name:o.name,what:e,why:c,timestamp:new Date().toISOString()}),M(),m&&i.success("Thanks for the detail â this helps us prioritize")}function wt(){v.value={open:!0,name:"",why:"",success:!1}}function T(){v.value={...v.value,open:!1}}function kt(){const{name:o,why:e}=v.value;o.trim()&&(ht({event:"custom_suggestion",user_id:k.value,suggested_name:o.trim(),why:e}),v.value={...v.value,success:!0})}return(o,e)=>(n(),$(At,{"hide-header":!0},{default:It(()=>{var c,m,A,N;return[t("div",be,[t("div",Ce,[t("button",{class:"integrations-hamburger",onClick:e[0]||(e[0]=d=>E(x).openMobileNav())},[...e[10]||(e[10]=[t("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[t("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),t("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),t("line",{x1:"3",y1:"18",x2:"21",y2:"18"})],-1)])]),e[11]||(e[11]=t("div",{class:"integrations-page-title"},"Integrations",-1))]),t("div",xe,[e[13]||(e[13]=t("h1",{class:"feature-heading"},"AI assistants",-1)),t("button",{class:D(["integration-row integration-row--feature",{"integration-row--open":L.value}]),type:"button","data-test":"mcp-row","aria-expanded":L.value,"aria-controls":"mcp-detail",onClick:dt},[...e[12]||(e[12]=[t("span",{class:"integration-row__logo integration-row__logo--mcp"},[t("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[t("circle",{cx:"8.8",cy:"8.8",r:"3.4"}),t("path",{d:"M2.4 20.1c0-3.6 2.9-6 6.4-6s6.4 2.4 6.4 6c0 .5-.4 1-1 1H3.4c-.6 0-1-.5-1-1z"}),t("path",{d:"M18.4 2.2l1.1 2.85 2.85 1.1-2.85 1.1-1.1 2.85-1.1-2.85-2.85-1.1 2.85-1.1z"})])],-1),t("span",{class:"integration-row__info"},[t("span",{class:"integration-row__name"},[u(" Contacts+ MCP "),t("span",{class:"integration-row__pill"},"New")]),t("span",{class:"integration-row__desc"},"Use your contacts from Claude or ChatGPT")],-1),t("svg",{class:"integration-row__chevron",viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M9 18l6-6-6-6"})],-1)])],10,Se),L.value&&G.value?(n(),$(lt,{key:0,id:"mcp-detail",ref_key:"mcpPanel",ref:Y,class:"integration-detail--inline","data-test":"mcp-detail",integration:G.value,"premium-note":!E(y).isPremium,trial:z.value,"starting-trial":F.value,expanded:"",closable:!1,"show-screenshots":!1,onGetStarted:e[1]||(e[1]=d=>Q(G.value)),onStartTrial:ct,onUpgrade:e[2]||(e[2]=d=>E(h).push("/upgrade?origin=mcp"))},null,8,["integration","premium-note","trial","starting-trial"])):_("",!0)]),t("div",Ie,[t("button",{class:"integration-row",type:"button",onClick:e[3]||(e[3]=d=>E(h).push("/integrations/zapier"))},[...e[14]||(e[14]=[t("span",{class:"integration-row__logo integration-row__logo--zapier"},[t("svg",{width:"28",height:"28",viewBox:"0 0 36 36",fill:"none","aria-hidden":"true"},[t("path",{d:"M21.5 3.5L18 14.5L14.5 3.5L10.5 5.5L16 15.5L4.5 13.5L3.5 18L15 18.5L6 25.5L9 28.5L18 20L27 28.5L30 25.5L21 18.5L32.5 18L31.5 13L20 15.5L25.5 5.5L21.5 3.5Z",fill:"currentColor"})])],-1),t("span",{class:"integration-row__info"},[t("span",{class:"integration-row__name"},"Zapier"),t("span",{class:"integration-row__desc"},"Automate tasks with hundreds of apps")],-1),t("svg",{class:"integration-row__chevron",viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M9 18l6-6-6-6"})],-1)])]),t("button",{ref_key:"linkedInTriggerEl",ref:tt,class:"integration-row",type:"button",onClick:ut},[...e[15]||(e[15]=[t("span",{class:"integration-row__logo integration-row__logo--linkedin"}
1,[t("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[t("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})])],-1),t("span",{class:"integration-row__info"},[t("span",{class:"integration-row__name"},"LinkedIn"),t("span",{class:"integration-row__desc"},"How to bring your LinkedIn connections into Contacts+")],-1),t("svg",{class:"integration-row__chevron",viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M9 18l6-6-6-6"})],-1)])],512),e[18]||(e[18]=t("h1",{class:"apps-heading"},"Apps",-1)),e[19]||(e[19]=t("a",{class:"integration-row",href:"https://itunes.apple.com/us/app/contacts-address-book/id579616837",target:"_blank",rel:"noopener noreferrer","aria-label":"Contacts+ for iOS â open in App Store"},[t("span",{class:"integration-row__logo integration-row__logo--apple"},[t("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"#1A1A1A","aria-hidden":"true"},[t("path",{d:"M16.365 1.43c0 1.14-.43 2.22-1.16 3.02-.79.86-2.07 1.52-3.13 1.43-.13-1.13.43-2.31 1.13-3.04.78-.83 2.13-1.45 3.16-1.41zM20.5 17.36c-.55 1.27-.81 1.84-1.52 2.96-.99 1.56-2.39 3.5-4.12 3.51-1.54.02-1.94-1-4.03-.99-2.09.01-2.53 1.01-4.07.99-1.73-.02-3.05-1.77-4.04-3.33C.13 17.07-.18 11.95 1.79 9.04c1.32-1.95 3.4-3.09 5.36-3.09 1.99 0 3.24 1.09 4.89 1.09 1.6 0 2.57-1.09 4.88-1.09 1.74 0 3.59.95 4.91 2.59-4.31 2.36-3.61 8.51-1.33 8.82z"})])]),t("span",{class:"integration-row__info"},[t("span",{class:"integration-row__name"},"Contacts+ for iOS"),t("span",{class:"integration-row__desc"},"Store & Sync iPhone Contacts the Smart Way")]),t("svg",{class:"integration-row__chevron",viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[t("path",{d:"M9 18l6-6-6-6"})])],-1)),e[20]||(e[20]=t("a",{class:"integration-row",href:"https://play.google.com/store/apps/details?id=com.contapps.android",target:"_blank",rel:"noopener noreferrer","aria-label":"Contacts+ for Android â open in Google Play"},[t("span",{class:"integration-row__logo integration-row__logo--android"},[t("svg",{width:"30",height:"30",viewBox:"0 0 24 24",fill:"#3DDC84","aria-hidden":"true"},[t("path",{d:"M17.523 15.342a1.022 1.022 0 1 1 0-2.045 1.022 1.022 0 0 1 0 2.045m-11.046 0a1.022 1.022 0 1 1 0-2.045 1.022 1.022 0 0 1 0 2.045m11.412-6.605l2.04-3.536a.42.42 0 0 0-.155-.574.42.42 0 0 0-.573.156l-2.066 3.578a12.86 12.86 0 0 0-5.135-1.066c-1.846 0-3.59.39-5.135 1.066L4.799 4.783a.42.42 0 0 0-.573-.156.42.42 0 0 0-.156.574l2.04 3.536C2.605 10.504.396 13.892 0 17.815h24c-.396-3.923-2.605-7.311-6.111-9.078"})])]),t("span",{class:"integration-row__info"},[t("span",{class:"integration-row__name"},"Contacts+ for Android"),t("span",{class:"integration-row__desc"},"A Smart Alternative to Your Android Contacts App")]),t("svg",{class:"integration-row__chevron",viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[t("path",{d:"M9 18l6-6-6-6"})])],-1)),t("section",Le,[e[16]||(e[16]=t("h2",{class:"request-heading"},"Tell us what to build next",-1)),e[17]||(e[17]=t("p",{class:"request-lead"},"Click any integration you'd use, or suggest one we haven't listed.",-1)),t("div",$e,[(n(),s(I,null,B(gt,d=>t("button",{key:d.id,class:D(["candidate-tile",{"candidate-tile--requested":S.value.has(d.id)}]),type:"button","aria-pressed":S.value.has(d.id),"aria-label":`Request ${d.name} integration`,onClick:Ze=>vt(d)},[t("span",{class:"candidate-tile__logo",style:nt({background:d.color,color:d.textColor})},r(et(d.name)),5),t("span",Te,r(d.name),1),S.value.has(d.id)?(n(),s("span",Ae,"Requested â")):_("",!0)],10,Me)),64))]),t("button",{class:"suggest-btn",type:"button",onClick:wt}," + Don't see yours? Suggest something else ")])])]),H.value?(n(),s("div",{key:0,class:"integration-modal-backdrop",onClick:V(X,["self"])},[rt(lt,{integration:H.value,expanded:W.value,onClose:X,onExpand:e[4]||(e[4]=d=>W.value=!0),onGetStarted:e[5]||(e[5]=d=>Q(H.value))},null,8,["integration","expanded"])])):_("",!0),(n(),$(j,{to:"body"},[P.value?(n(),s("div",{key:0,class:"modal-backdrop",role:"dialog","aria-modal":"true","aria-label":"LinkedIn integration info",onClick:V(q,["self"]),onKeydown:mt},[t("div",{class:"linkedin-modal"},[t("div",{class:"linkedin-modal__header"},[e[21]||(e[21]=t("span",{class:"linkedin-modal__logo"},[t("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"#0077b5","aria-hidden":"true"},[t("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})])],-1)),e[22]||(e[22]=t("div",{class:"linkedin-modal__header-text"},[t("h2",{class:"linkedin-modal__title"},"LinkedIn"),t("p",{class:"linkedin-modal__subtitle"},"Bring your LinkedIn connections into Contacts+ safely")],-1)),t("button",{class:"linkedin-modal__close",type:"button","aria-label":"Close",onClick:q},"Ã")]),e[23]||(e[23]=t("div",{class:"linkedin-modal__body"},[t("div",{class:"linkedin-modal__badge"},"â± ~10 minutes · One-time setup"),t("div",{class:"linkedin-modal__lead"},[u(" LinkedIn doesn't offer a way for apps to pull your connections directly. "),t("strong",null,"This CSV export is the only safe way"),u(" to get your LinkedIn contacts into Contacts+ â tools claiming one-click sync work by scraping LinkedIn, which can get your account "),t("strong",null,"restricted, suspended, or permanently banned"),u(". ")]),t("details",{class:"linkedin-modal__accordion",open:""},[t("summary",{class:"linkedin-modal__accordion-summary"},"How to import your LinkedIn connections"),t("div",{class:"linkedin-modal__steps"},[t("div",{class:"linkedin-modal__step"},[t("div",{class:"linkedin-modal__step-num"},"1"),t("div",{class:"linkedin-modal__step-body"},[u(" Go to "),t("svg",{class:"linkedin-modal__step-li-icon",width:"14",height:"14",viewBox:"0 0 24 24",fill:"#0077b5","aria-hidden":"true"},[t("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})]),t("strong",null,"linkedin.com"),u(" and click your profile photo â "),t("span",{class:"linkedin-modal__action"},"Me"),t("details",{class:"linkedin-modal__hint"},[t("summary",{class:"linkedin-modal__hint-summary"},"Show me where"),t("img",{src:Dt,alt:"LinkedIn profile photo dropdown showing the Me menu",class:"linkedin-modal__hint-image"})])])]),t("div",{class:"linkedin-modal__step"},[t("div",{class:"linkedin-modal__step-num"},"2"),t("div",{class:"linkedin-modal__step-body"},[u(" Select "),t("span",{class:"linkedin-modal__action"},"Settings & Privacy"),u(" from the dropdown ")])]),t("div",{class:"linkedin-modal__step"},[t("div",{class:"linkedin-modal__step-num"},"3"),t("div",{class:"linkedin-modal__step-body"},[u(" In the left sidebar, click "),t("span",{class:"linkedin-modal__action"},"Data Privacy")])]),t("div",{class:"linkedin-modal__step"},[t("div",{class:"linkedin-modal__step-num"},"4"),t("div",{class:"linkedin-modal__step-body"},[u(" Click "),t("span",{class:"linkedin-modal__action"},"Get a copy of your data")])]),t("div",{class:"linkedin-modal__step"},[t("div",{class:"linkedin-modal__step-num"},"5"),t("div",{class:"linkedin-modal__step-body"},[u(" Check the "),t("span",{class:"linkedin-modal__action"},"Connections"),u(" box, then click "),t("span",{class:"linkedin-modal__action"}
1,"Request archive")])]),t("div",{class:"linkedin-modal__step linkedin-modal__step--last"},[t("div",{class:"linkedin-modal__step-num linkedin-modal__step-num--final"},"â"),t("div",{class:"linkedin-modal__step-body"},[u(" LinkedIn will email you a download link â usually within 10 minutes. Download and unzip the archive, then use the "),t("strong",null,"Connections.csv"),u(" file here. ")])])])]),t("details",{class:"linkedin-modal__accordion"},[t("summary",{class:"linkedin-modal__accordion-summary"},"The full story â why we made this choice"),t("div",{class:"linkedin-modal__accordion-body"},[t("p",null,"LinkedIn's official API Partner Program does not include a contacts or connections endpoint for third-party apps. The only officially supported data-export path for end users is the archive export described above."),t("p",null,`Third-party tools that claim to "sync" LinkedIn contacts do so by scraping your profile data â a violation of LinkedIn's Terms of Service. Users whose accounts are flagged for scraping activity risk temporary restriction, permanent suspension, or legal action from LinkedIn.`),t("p",null,"We chose not to offer a scraping-based integration because we believe the risk to your account outweighs the convenience. The CSV export path is slower but safe, and your data stays yours.")])])],-1)),t("div",{class:"linkedin-modal__footer"},[t("button",{class:"linkedin-modal__btn-cancel",type:"button",onClick:q},"Cancel"),t("button",{class:"linkedin-modal__btn-primary",type:"button",onClick:pt},"Open CSV Import â")])])],32)):_("",!0)])),(n(),$(j,{to:"body"},[f.value.open?(n(),s("div",{key:0,class:"modal-backdrop",role:"dialog","aria-modal":"true",onClick:V(M,["self"]),onKeydown:st(M,["escape"])},[t("div",Ne,[t("div",Be,[t("span",{class:"details-modal__logo",style:nt({background:(c=f.value.candidate)==null?void 0:c.color,color:(m=f.value.candidate)==null?void 0:m.textColor})},r(et(((A=f.value.candidate)==null?void 0:A.name)||"")),5),t("div",null,[t("h2",De,"Tell us more about "+r((N=f.value.candidate)==null?void 0:N.name),1),e[24]||(e[24]=t("p",{class:"details-modal__subtitle"},"Your interest is logged. Details help us prioritize â both fields are optional.",-1))]),t("button",{class:"details-modal__close",type:"button","aria-label":"Close",onClick:M},"Ã")]),t("div",ze,[t("label",Pe,[e[25]||(e[25]=u(" What specifically would you sync? ",-1)),U(t("input",{"onUpdate:modelValue":e[6]||(e[6]=d=>f.value.what=d),class:"details-modal__input",type:"text",placeholder:"e.g. Contacts, deals, tasks, email lists"},null,512),[[R,f.value.what]])]),t("label",qe,[e[26]||(e[26]=u(" How would you use this? Why is it important? ",-1)),U(t("textarea",{"onUpdate:modelValue":e[7]||(e[7]=d=>f.value.why=d),class:"details-modal__textarea",rows:"3",placeholder:"Tell us about your workflow"},null,512),[[R,f.value.why]])])]),t("div",{class:"details-modal__footer"},[t("button",{class:"details-modal__btn-skip",type:"button",onClick:M},"Skip"),t("button",{class:"details-modal__btn-primary",type:"button",onClick:yt},"Send details")])])],32)):_("",!0)])),(n(),$(j,{to:"body"},[v.value.open?(n(),s("div",{key:0,class:"modal-backdrop",role:"dialog","aria-modal":"true",onClick:V(T,["self"]),onKeydown:st(T,["escape"])},[t("div",Oe,[v.value.success?(n(),s("div",Ee,[e[29]||(e[29]=t("div",{class:"suggest-modal__success-icon"},"â",-1)),e[30]||(e[30]=t("h2",{class:"suggest-modal__success-title"},"Thanks â we've got it",-1)),t("p",Ve,[e[27]||(e[27]=u(" Your request for ",-1)),t("strong",null,r(v.value.name),1),e[28]||(e[28]=u(" has been logged. If enough users ask for the same thing, it'll move up our roadmap. ",-1))]),t("button",{class:"details-modal__btn-primary",type:"button",onClick:T},"Done")])):(n(),s(I,{key:1},[t("div",{class:"suggest-modal__header"},[e[31]||(e[31]=t("h2",{class:"suggest-modal__title"},"Suggest an integration",-1)),t("button",{class:"details-modal__close",type:"button","aria-label":"Close",onClick:T},"Ã")]),t("div",Ue,[t("label",Re,[e[32]||(e[32]=u(" Integration name ",-1)),e[33]||(e[33]=t("span",{class:"suggest-modal__required","aria-hidden":"true"},"*",-1)),U(t("input",{"onUpdate:modelValue":e[8]||(e[8]=d=>v.value.name=d),class:"details-modal__input",type:"text",placeholder:"e.g. Copper, Close.io, Zoho CRM","aria-required":"true",autofocus:""},null,512),[[R,v.value.name]])]),t("label",He,[e[34]||(e[34]=u(" Why do you need it? ",-1)),e[35]||(e[35]=t("span",{class:"suggest-modal__optional"},"(optional)",-1)),U(t("textarea",{"onUpdate:modelValue":e[9]||(e[9]=d=>v.value.why=d),class:"details-modal__textarea",rows:"3",placeholder:"Tell us about your use case"},null,512),[[R,v.value.why]])])]),t("div",Ge,[t("button",{class:"details-modal__btn-skip",type:"button",onClick:T},"Cancel"),t("button",{class:"details-modal__btn-primary",type:"button",disabled:!v.value.name.trim(),onClick:kt},"Send request",8,Fe)])],64))])],32)):_("",!0)]))]}),_:1}))}},io=K(We,[["__scopeId","data-v-1567dd2b"]]);export{io 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.