PageSourceSearch

https://assets.canny.io/fa546556d0aefca98f67dc6e4b8584fa6df43baf/1184.js

js canny.io collected 2026-09-24 07:53:33 UTC 88,743 bytes, 1 lines download raw bytes

1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="612a87d4-fdf8-4101-9025-f2e6e6c15487",e._sentryDebugIdIdentifier="sentry-dbid-612a87d4-fdf8-4101-9025-f2e6e6c15487")}catch(e){}}(),(globalThis.webpackChunk=globalThis.webpackChunk||[]).push([[1184],{28128(e,t,a){a.d(t,{A:()=>o});var n=a(63696),r=a(62688),s=a.n(r);a(30539);class o extends n.Component{static propTypes={className:s().string,style:s().object};static defaultProps={style:{}};render(){var e="uppercaseHeader";return this.props.className&&(e+=" "+this.props.className),n.createElement("div",{...this.props,className:e},this.props.children)}}},59210(e,t,a){a.d(t,{l1:()=>r}),a(15724);var n=a(88637);function r(){return e=>e((e,t)=>{const a=t().cookies;return Promise.all([n.A.fetch({company:{input:{},query:n.A.queries.company}},a,(t,a)=>function(e,t,a){var n;return n=t&&"not found"===t?{timestamp:Date.now(),type:"canny/company/company_not_found"}:t||!a.company?function(e){return{error:e,timestamp:Date.now(),type:"canny/company/company_error"}}(t):{company:a.company,timestamp:Date.now(),type:"canny/company/company_loaded"},Promise.all([e(n)]).then(()=>{s.forEach(e=>{e()}),s.length=0})}(e,t,a))])})}const s=[]},66789(e,t,a){a.d(t,{A:()=>l,h:()=>i});var n=a(63696),r=a(62688),s=a.n(r),o=a(78325);a(34316);const i="canny-portal-container";class l extends n.Component{static propTypes={align:s().oneOf(["center","end","start"]),className:s().string,onBlur:s().func,portalContainerID:s().string,position:s().oneOf(["bottom","left","right","top"]),relativeToRef:s().object,zIndex:s().number};static defaultProps={align:"start",className:"",portalContainerID:i,position:"bottom",zIndex:5e3};state={hasEventListeners:!!this.props.relativeToRef};componentDidMount(){const{portalContainerID:e}=this.props,t=document.getElementById(e)??this.createPortalContainer();this.portalNode=document.createElement("div"),this.portalNode.className=this.props.className,Object.assign(this.portalNode.style,{...e!==i&&{height:"100%",width:"100%"},position:"absolute",zIndex:this.props.zIndex}),t.appendChild(this.portalNode),this.createEventListeners(),this.forceUpdate(),this.updateRelativePosition()}componentDidUpdate(e){const{align:t,position:a,relativeToRef:n}=this.props;!n||e.align===t&&e.position===a||this.updateRelativePosition()}componentWillUnmount(){this.destroyEventListeners(),document.getElementById(this.props.portalContainerID).removeChild(this.portalNode)}containsNode(e){return(0,o.findDOMNode)(this.portalNode).contains(e)}createPortalContainer(){const e=document.createElement("div");return e.id=this.props.portalContainerID,document.body.appendChild(e),e}createEventListeners(){this.props.onBlur&&(document.addEventListener("click",this.onBlur),this.portalNode.addEventListener("click",this.onIgnoreClick)),this.state.hasEventListeners&&(window.addEventListener("scroll",this.updateRelativePosition,!0),window.addEventListener("resize",this.updateRelativePosition))}destroyEventListeners(){this.props.onBlur&&(document.removeEventListener("click",this.onBlur),this.portalNode.removeEventListener("click",this.onIgnoreClick)),this.state.hasEventListeners&&(window.removeEventListener("scroll",this.updateRelativePosition,!0),window.removeEventListener("resize",this.updateRelativePosition))}updateRelativePosition=()=>{const{align:e,position:t,relativeToRef:a}=this.props;a&&"undefined"!=typeof window&&window.requestAnimationFrame(()=>{const n=a?.current?.getBoundingClientRect(),r=this.portalNode.getBoundingClientRect();if(!n||!r)return;let s,o,i,l=e;const c=window.innerWidth;if("bottom"===t)if(o=n.bottom,"center"===e){const e=n.width/2-r.width/2;s=n.left,i=`translateX(${e}px)`}else"end"===e?(s=n.right,i="translateX(-100%)"):"start"===e&&(s=n.left);else if("left"===t)if(s=n.left,i="translateX(-100%)","center"===e){const e=n.height/2-r.height/2;o=n.top,i=`translate(-100%, ${e}px)`}else"end"===e?(o=n.bottom,i="translate(-100%, -100%)"):"start"===e&&(o=n.top);else if("right"===t)if(s=n.right,"center"===e){const e=n.height/2-r.height/2;o=n.top,i=`translateY(${e}px)`}else"end"===e?(o=n.bottom,i="translateY(-100%)"):"start"===e&&(o=n.top);else if("top"===t)if(o=n.top,i="translateY(-100%)","center"===e){const e=n.width/2-r.width/2;s=n.left,i=`translate(${e}px, -100%)`}else"end"===e?(s=n.right,i="translate(-100%, -100%)"):"start"===e&&(s=n.left);s+r.width>c?"start"!==l&&"center"!==l||(l="end","bottom"!==t&&"top"!==t||(s=n.right,i="top"===t?"translate(-100%, -100%)":"translateX(-100%)")):s<0&&("end"!==l&&"center"!==l||(l="start","bottom"!==t&&"top"!==t||(s=n.left,i="top"===t?"translateY(-100%)":""))),this.portalNode.style.left=`${s}px`,this.portalNode.style.top=`${o+window.scrollY}px`,this.portalNode.style.transform=i??""})};onBlur=e=>{this.containsNode(e.target)?e.stopPropagation():this.props.relativeToRef?.current&&(0,o.findDOMNode)(this.props.relativeToRef.current).contains(e.target)||this.props.onBlur(e)};onIgnoreClick=e=>{e.stopPropagation()};render(){return this.updateRelativePosition(),this.portalNode?(0,o.createPortal)(this.props.children,this.portalNode):null}}},580(e,t,a){a.d(t,{z2:()=>o});var n=a(63696),r=a(82116),s=a(59210);const o=n.createContext(null),i=n.createContext({reloadCompany:()=>Promise.resolve()});(0,r.connect)(null,{reloadCompany:s.l1})(({company:e,children:t,reloadCompany:a})=>n.createElement(o.Provider,{value:e},n.createElement(i.Provider,{value:{reloadCompany:a}},t)))},27087(e,t,a){a.r(t),a.d(t,{default:()=>_});var n=a(63696),r=a(4452),s=a.n(r),o=a(62688),i=a.n(o),l=a(15875),c=a(5064),d=a(87237);const m=(0,a(64672).A)("https://canny.io");function u(e){const t=e.split(/[?#]/)[0].replace(/\/+$/,"");return`${m}${t||"/"}`}var p=a(43963);class h extends n.Component{static propTypes={pathname:i().string.isRequired};render(){const{pathname:e}=this.props;return n.createElement(p.A,{defaultIcons:!0,title:"Canny",link:[{href:u(e),rel:"canonical"}]})}}var g=a(21895),y=a(14231),f=a(40207),b=a(26584),E=a(94906),x=a(98300);const v=n.createContext();class w extends n.Component{static propTypes={isWidget:i().bool.isRequired};render(){return n.createElement(v.Provider,{value:this.props.isWidget},this.props.children)}}var N=a(13539),k=a(21811),M=a(15883),A=a(19720),C=a(15043);a(78348);const L=({subHeading:e,heading:t="Oops, looks like something went wrong!",icon:a})=>{const r=(0,n.useContext)(x.AO);return n.createElement("div",{className:"errorWrapper"},n.createElement("div",{className:"errorIcon"},a||n.createElement(A.A,{className:"alertIcon",size:120})),n.createElement("p",{className:"text"},t),n.createElement("p",{className:"subText"},e||n.createElement(n.Fragment,null,n.createElement("span",null,"You may refresh the page or try again later. Please "),n.createElement(C.A,{buttonType:"textButton",value:"contact us",onTap:r}),n.createElement("span",null," if the problem persists."))))};var I=a(86996);a(67958);class T extends n.Component{static propTypes={message:i().string};static defaultProps={message:"Something went wrong and our team has been notified. Please try again later."};state={error:!1};static getDerivedStateFromError(e){return{error:!0}}componentDidCatch(e,t){I.A.captureException(e)}render(){const{message:e,renderError:t}=this.props,{error:a}=this.state;return a?t?t():n.createElement("div",{className:"errorBoundary"},n.createElement("p",{className:"error"},e)):this.props.children}}var z=a(78325),j=a(66789),D=a(19652),S=a(6992);a(99064);class B extends n.Component{static propTypes={allowBodyScroll:i().bool,allowEscape:i().bool,className:i().string,overlayClassName:i().string,modalClassName:i().string,closeOnClickAway:i().bool,onClose:i().func,portalContainerID:i().string,modalWidth:i().number};static defaultProps={allowBodyScroll:!1,allowEscape:!0,closeOnClickAway:!0,portalContainerID:j.h};constructor(e,t){super(e,t),this.backgroundRef=n.createRef(),this.contentsRef=n.createRef()}componentDidMount(){this.props.closeOnClickAway&&setTimeout(()=>{document.addEventListener("pointerdown",this.onMouseDown),document.addEventListener("pointerup",this.onMouseUp)}
1,0),this.props.allowEscape&&document.addEventListener("keydown",this.onKeyDown),this.props.allowBodyScroll||document.body.classList.add("modalPortalBodyLock")}componentWillUnmount(){this.props.closeOnClickAway&&(document.removeEventListener("pointerdown",this.onMouseDown),document.removeEventListener("pointerup",this.onMouseUp)),this.props.allowEscape&&document.removeEventListener("keydown",this.onKeyDown),this.props.allowBodyScroll||document.body.classList.remove("modalPortalBodyLock")}onKeyDown=e=>{e.keyCode===D.Ay.Escape&&this.props.onClose?.(e),document.activeElement,document.body};onMouseDown=e=>{if(this.contentsRef?.current&&(0,z.findDOMNode)(this.contentsRef.current).contains(e.target))return void(this._skipClose=!0);if(e.target.closest(".ignoreModalClickAway"))return void(this._skipClose=!0);const t=document.getElementById(this.props.portalContainerID),a=(0,z.findDOMNode)(this.backgroundRef.current);t&&t.contains(e.target)&&e.target!==a&&(this._skipClose=!0)};onMouseUp=e=>{if(this._skipClose)return void(this._skipClose=!1);if(this.contentsRef?.current&&(0,z.findDOMNode)(this.contentsRef.current).contains(e.target))return;const t=document.getElementById(this.props.portalContainerID),a=(0,z.findDOMNode)(this.backgroundRef.current);t&&t.contains(e.target)&&e.target!==a||this.props.onClose?.(e)};render(){const e=(0,S.cn)("modalPortal bg-overlay",this.props.className,this.props.overlayClassName),t=(0,S.cn)("modalPortalContents",this.props.modalClassName);return n.createElement(j.A,{portalContainerID:this.props.portalContainerID},n.createElement("div",{className:e,ref:this.backgroundRef},n.createElement("div",{className:t,ref:this.contentsRef,role:"dialog",style:{width:this.props.modalWidth}},this.props.children)))}}var O=a(23608);const R=n.createContext(()=>{}),P=n.createContext(()=>{});class H extends n.Component{static propTypes={parentWindowViewport:i().object};state={allowRouteChange:!1,ChildComponent:null,childProps:{},isOpen:!1};_unlisten=()=>{};componentDidMount(){this._unlisten=M.Nc.listen(this.onRouteChange)}componentWillUnmount(){this._unlisten()}onRouteChange=()=>{const{allowRouteChange:e}=this.state;e||this.closeModal()};openModal=(e,t,a)=>{e&&(document.body.classList.add("modalOpen"),this.setState({allowRouteChange:!!a?.allowRouteChange,ChildComponent:e,childProps:t,isOpen:!0}))};closeModal=()=>{document.body?.classList.remove("modalOpen"),this.setState({allowRouteChange:!1,ChildComponent:null,childProps:{},isOpen:!1})};renderModal(){if(!this.state.isOpen)return null;const{parentWindowViewport:e}=this.props,t=e?{height:e.clientHeight,minHeight:e.clientHeight,maxHeight:e.clientHeight,top:e.scrollTop}:{},{ChildComponent:a,childProps:r}=this.state,s=a?n.createElement(T,{renderError:()=>n.createElement("div",{className:"modal"},n.createElement(O.A,{"aria-label":"Close modal",iconOnly:!0,className:"closeModalButton",onClick:this.closeModal,variant:"plain"},n.createElement(k.A,null)),n.createElement(L,null))},n.createElement(a,{...r})):null;return n.createElement(B,{onClose:this.closeModal,closeOnClickAway:!0,allowEscape:!0,allowBodyScroll:!1,modalClassName:"modalOld",style:t},s)}render(){return n.createElement(R.Provider,{value:this.openModal},n.createElement(P.Provider,{value:this.closeModal},this.props.children,this.renderModal()))}}var U=a(44180),q=a(69275),Y=a(88535),G=a(85561);const Z=n.createContext(null),W=(0,q.A)(e=>({cookies:e.cookies,viewer:e.viewer}))(({children:e,configTheme:t,cookies:a,isUserTheme:r=!1,viewer:s})=>{const o=(0,n.useMemo)(()=>(0,G.L7)(a),[a]),i=(e=>{const[t,a]=(0,n.useState)(e);return(0,n.useEffect)(()=>{const e=window.matchMedia?.("(prefers-color-scheme: dark)");if(!e)return;const t=e=>a(e.matches?G.Ay.dark:G.Ay.light);return"function"==typeof e.addEventListener?(e.addEventListener("change",t),()=>e.removeEventListener("change",t)):"function"==typeof e.addListener?(e.addListener(t),()=>e.removeListener(t)):void 0},[]),t})(o),l=(0,n.useMemo)(()=>r?s?.theme||G.Ay.auto:t,[r,s,t]),[c,d]=(0,n.useState)(()=>(0,G.Gi)({configTheme:l,browserTheme:o}));return(0,n.useEffect)(()=>{d((0,G.Gi)({configTheme:l,browserTheme:i}))},[i,l]),(0,n.useEffect)(()=>{(0,Y.A)(U.V.browserTheme,i)},[i]),(0,n.useEffect)(()=>{const e=document.documentElement;e.classList.remove("darkTheme","lightTheme"),e.classList.add("dark"===c?"darkTheme":"lightTheme")},[c]),n.createElement(Z.Provider,{value:{theme:c,setTheme:d}},e)});var F=a(22147);class V extends n.Component{static propTypes={location:i().object,router:i().object};componentDidMount(){this._isMounted=!0,g.A.track({enableAdsTracking:!0,measurementID:"G-ZV9SCTX12H",trackerName:"cannyTracker"}),this.fixURL(),setTimeout(()=>{this._isMounted&&this.trackEventRef&&this.trackEventRef("Viewed Content (30 secs)")},3e4),setTimeout(()=>{this._isMounted&&this.trackEventRef&&this.trackEventRef("Viewed Content (60 secs)")},6e4)}componentWillUnmount(){this._isMounted=!1}fixURL=()=>{var e=this.props.location.hash;if(e&&!(e.length<4||"/"!==e[2])){var t=e.substr(3);this.props.router.replace(t)}};renderPixels(){return n.createElement("noscript",{dangerouslySetInnerHTML:{__html:'\n<img height="1" width="1" src="https://www.facebook.com/tr?id=709729582515044&ev=PageView&noscript=1" style="display:none" />\n        '}})}render(){const e=["/","/about","/compare","/compare/build-in-house","/compare/enterpret","/compare/chattermill","/compare/thematic","/compare/unwrap","/compare/buildbetter","/compare/aha","/compare/productboard","/compare/trello","/compare/uservoice","/compare/pendo","/lp/demo"].includes(this.props.location.pathname);return n.createElement("div",{className:s()("min-h-screen",{"bg-gray-20":!e})},n.createElement(W,null,n.createElement(h,{pathname:this.props.location.pathname}),n.createElement(c.Ay,{location:this.props.location,params:this.props.params,route:this.props.route,router:this.props.router},n.createElement(w,{isWidget:!1},n.createElement(H,null,n.createElement(F.A,null,n.createElement(y.Ay,null,n.createElement(E.A,null,n.createElement(x.Ay,null,n.createElement(N.A,{shouldLoadSDK:!0}
1,n.createElement(b.A,null,n.createElement(f.A,{shouldLoadSDK:!0},n.createElement(l.A,null,n.createElement(l.h.Consumer,null,e=>(this.trackEventRef=e,this.props.children))))))))))))),n.createElement("div",{id:"fb-root"}),this.renderPixels()))}}const _=(0,d.A)([F.A.asyncConnect])(V)},69275(e,t,a){a.d(t,{A:()=>r});var n=a(82116);function r(e,t,a){return(0,n.connect)(e,t,null,a)}},68938(e,t,a){a.d(t,{A:()=>o});var n=a(63696),r=a(43963);const s="https://canny.io/images/canny-social.png",o=({title:e,description:t,pageURL:a})=>n.createElement(r.A,{title:e,meta:[{name:"description",content:t},{property:"og:image",content:s},{property:"og:title",content:e},{property:"og:description",content:t},{property:"og:url",content:a},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:site",content:"@cannyHQ"},{name:"twitter:title",content:e},{name:"twitter:description",content:t},{name:"twitter:image",content:s}]})},39113(e,t,a){a.d(t,{A:()=>r});var n=a(63696);const r=({rootMargin:e="0px",threshold:t=.1,once:a=!0}={})=>{const r=(0,n.useRef)(null),[s,o]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{const n=r.current;if(!n||"undefined"==typeof IntersectionObserver)return void o(!0);const s=new IntersectionObserver(([e])=>{o(e.isIntersecting),e.isIntersecting&&a&&s.disconnect()},{rootMargin:e,threshold:t});return s.observe(n),()=>s.disconnect()},[a,e,t]),{ref:r,inView:s}}},15043(e,t,a){a.d(t,{A:()=>p});var n=a(63696),r=a(4452),s=a.n(r),o=a(62688),i=a.n(o),l=a(73115),c=a(54410),d=a(72170);const m=["blackButton","cannyButton","darkGhostButton","destructive","emailButton","fbButton","ghostButton","githubButton","googleButton","greenButton","greyButton","redButton","textButton","whiteButton"];class u extends n.Component{static propTypes={buttonStyle:i().object.isRequired,buttonType:i().oneOf(m).isRequired,className:i().string,component:i().string,disabled:i().bool.isRequired,formButton:i().bool.isRequired,loading:i().bool.isRequired,onTap:i().func,tabIndex:i().number,tint:i().bool,tintColor:i().string,value:i().node.isRequired};static defaultProps={buttonStyle:{},buttonType:"cannyButton",component:"button",disabled:!1,formButton:!1,loading:!1,tint:!1};onTap=e=>{this.props.loading||(!this.props.onClick||this.props.onTap?this.props.onTap(e):this.props.onClick(e))};render(){const e=s()("button","buttonStyle",this.props.buttonType,this.props.className,{loading:this.props.loading}),t={};let a;this.props.disabled&&(t.disabled="disabled"),this.props.formButton?t.type="submit":t.type="button",this.props.onClick&&!this.props.onTap&&(t.onClick=this.onTap),a="string"==typeof this.props.value?this.props.value.replace(/ /g," "):this.props.value,"number"==typeof this.props.tabIndex&&(t.tabIndex=this.props.tabIndex);const r=Object.assign({},this.props.buttonStyle,{...this.props.tint&&{background:this.props.tintColor}}),o=this.props.component,i=n.createElement(o,{...t,className:e,style:r},n.createElement("span",{className:"label"},a),n.createElement("span",{className:"loader"}," "));return this.props.onTap?n.createElement(d.A,{onTap:this.onTap},i):i}}const p=(0,c.A)({tintColor:l.y5})(u)},76949(e,t,a){a.d(t,{A:()=>o});var n=a(63696),r=a(22147),s=a(39604);const o=({installLink:e,installButtonText:t="Install Extension"})=>{const a=(0,n.useContext)(r.o);return!a||a.loggedOut||0===a.companies?.length?n.createElement(s.A,{to:"/register",size:"large"},"Get started"):n.createElement(s.A,{href:e,rel:"noopener",target:"_blank",size:"large"},t)}},91802(e,t,a){a.d(t,{A:()=>c});var n=a(63696);const r=(0,a(21727).A)({name:"plus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]});var s=a(49885),o=a(6992),i=a(57935),l=a.n(i);const c=({icon:e,iconClassName:t,name:a})=>n.createElement("div",{className:"flex items-center gap-4"},n.createElement(s.A,{className:"size-12 object-contain",loading:"eager",src:l(),alt:"Canny logo"}),n.createElement(r,{className:"size-6 text-secondary-foreground [stroke-width:2]","aria-hidden":!0}),n.createElement(s.A,{className:(0,o.cn)("size-12 object-contain",t),loading:"eager",src:e,alt:`${a} logo`}))},12440(e,t,a){a.r(t),a.d(t,{default:()=>U});var n=a(63696),r=a(21727);const s=(0,r.A)({name:"copy",size:24,node:[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]}),o=(0,r.A)({name:"user-check",size:24,node:[["path",{d:"m16 11 2 2 4-4",key:"9rsbq5"}],["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]}),i=(0,r.A)({name:"shield-check",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",ke
1y:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]}),l=(0,r.A)({name:"circle-dollar-sign",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 18V6",key:"zqpxq5"}]]});var c=a(55051),d=a(35623);const m=(0,r.A)({name:"target",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]}),u=(0,r.A)({name:"plug",size:24,node:[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]}),p=(0,r.A)({name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]});var h=a(95181);const g=(0,r.A)({name:"bell",size:24,node:[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]});var y=a(9048),f=a(89588),b=a(15875),E=a(68938),x=a(28859),v=a(53827),w=a(3808),N=a(19347),k=a(99619),M=a(30253);const A="mx-auto box-border w-[90%] max-w-5xl py-12 md:py-16",C="text-3xl font-semibold tracking-tight text-balance text-foreground md:text-5xl",L="text-lg leading-relaxed text-pretty text-secondary-foreground",I=n.createElement("div",{className:"w-full rounded-xl border border-border bg-white p-4 shadow-sm md:w-[300px]"},n.createElement("div",{className:"mb-2.5 text-sm font-medium tracking-wide text-muted-foreground"},"MERGING DUPLICATES"),n.createElement("div",{className:"mb-1.5 rounded-md border border-border px-2.5 py-2 text-base text-secondary-foreground line-through"},"Dark mode pls"),n.createElement("div",{className:"mb-1.5 rounded-md border border-border px-2.5 py-2 text-base text-secondary-foreground line-through"},"night theme??"),n.createElement("div",{className:"rounded-md border border-primary bg-indigo-30 px-2.5 py-2 text-base font-medium text-primary"},"Dark mode · 47 requests")),T=n.createElement("div",{className:"w-full rounded-xl border border-border bg-white p-4 shadow-sm md:w-[300px]"},n.createElement("div",{className:"mb-2.5 text-sm font-medium tracking-wide text-muted-foreground"},"AN IDEA IN CANNY"),n.createElement("div",{className:"mb-2 text-base font-medium text-foreground"},"Salesforce sync"),n.createElement("div",{className:"flex items-center justify-between border-t border-border py-1.5 text-base"},n.createElement("span",{className:"text-base text-muted-foreground"},"users"),n.createElement("span",{className:"text-lg text-foreground"},"57")),n.createElement("div",{className:"flex items-center justify-between border-t border-border py-1.5 text-base"},n.createElement("span",{className:"text-base text-muted-foreground"},"accounts"),n.createElement("span",{className:"text-lg text-foreground"},"23")),n.createElement("div",{className:"flex items-center justify-between border-t border-border py-1.5 text-base"},n.createElement("span",{className:"text-base text-muted-foreground"},"ARR at stake"),n.createElement("span",{className:"text-lg font-medium text-foreground"},"$412K")),n.createElement("div",{className:"flex items-center justify-between border-t border-border py-1.5 text-base"},n.createElement("span",{className:"text-base text-muted-foreground"},"open opps"),n.createElement("span",{className:"text-lg text-foreground"},"$180K"))),z=n.createElement("div",{className:"w-full rounded-xl border border-border bg-white p-4 shadow-sm md:w-[300px]"},n.createElement("div",{className:"mb-2.5 text-sm font-medium tracking-wide text-muted-foreground"},"AUTOPILOT EXTRACTION"),n.createElement("div",{className:"mb-2.5 border-l-2 border-border pl-2.5 text-base leading-snug text-secondary-foreground"},"“...honestly we’d pay more if reports could go straight to Slack...”"),n.createElement("span",{className:"inline-block rounded bg-indigo-30 px-2.5 py-1.5 text-base text-primary"},"Scheduled Slack reports +1")),j=[{title:"A customer-facing feedback portal",v1:"The v1: your customers submit requests and vote on them. You can see what is popular.",hardParts:[{Icon:s,label:"Deduplication",text:"Duplicates split the count across four versions of the same request"},{Icon:o,label:"Account matching",text:"Who is asking, letting them log in with existing accounts, and account details on feedback"},{Icon:i,label:"Moderation",text:"A public portal is an open door vulnerable to spam and abuse"}],visual:I},{title:"Organizing and prioritizing feedback",v1:"The v1: a filterable list of feedback with statuses on it.",hardParts:[{Icon:l,label:"Revenue context",text:"Every request connected to accounts, ARR, and open opportunities. This makes prioritization defensible"},{Icon:c.A,label:"Merging and triaging",text:"Hundreds of requests into a prioritized view sorted by product area"},{Icon:d.A,label:"Views per stakeholder",text:"Sales, CS, and execs each need a different cut of the same data"}],visual:T},{title:"Automated feedback capture",v1:"The v1: feature requests pulled from your support queue. Convincing, at first.",hardParts:[{Icon:m,label:"Accuracy",text:"Typeform audited 1,725 tickets and found Autopilot 93% accurate, and 30% better than their live team"},{Icon:u,label:"Sources",text:"Every tool you capture from (Gong, Intercom, Zendesk) is an integration you maintain"},{Icon:p,label:"Model changes",text:"Every model update shifts extraction behavior, so prompts and benchmarks need upkeep"}],visual:z}],D=["SSO and SAML","role-based permissions","moderation and spam handling","email digests","search across feedback","CSV and API exports","webhooks","audit logs","duplicate merging UI","saved views","bulk actions","custom fields","notification preferences","accessibility","localization","data retention controls"],S=[{label:"Build",color:"text-[#6B7180]",text:"Engineer hours (an opportunity cost) plus AI usage. The part that got easier, and usually the only part teams factor in."},{label:"Maintenance",color:"text-[#993C1D]",text:"Roughly 15 to 20% of build cost, every year the tool exists. Broken integrations, model migrations, accuracy drift, security fixes."},{label:"Operations",color:"text-[#793AAF]",text:"Every ticket, call, and review runs through an LLM, and that cost scales with your feedback volume."}],B=[{step:"1 · Spec your features",how:"Check every feature you would want",note:"Most teams underestimate this and end up having to build more later"}
1,{step:"2 · Build cost",how:"Engineer hours × their hourly cost, plus AI usage",note:"Token usage and cost is easy to overlook but it adds up"},{step:"3 · Maintenance cost",how:"15 to 20% of build cost",note:"Recurs annually"},{step:"4 · Operating cost",how:"Monthly feedback volume × per-item cost",note:"If you specced automated feedback capture. Recurs and scales."},{step:"5 · Compare",how:"Total vs. Canny's price for the same features",note:n.createElement(n.Fragment,null,n.createElement(M.A,{className:"text-base text-primary underline",to:"/request-demo"},"Book a call")," ","with our team to discuss Canny’s full offering")}],O=[{label:"You are a small team that needs very limited functionality",text:"If you are bootstrapping and all you want is a basic feedback board, building it can make sense."},{label:"You have hard data-residency constraints",text:"Some compliance environments rule out vendors entirely. Then the build cost is the cost of doing business."},{label:"The math genuinely favors it",text:"Enterprise customer intelligence platforms can run north of $50K a year, and building can beat that. The build that beats a $50K contract rarely beats Canny at $79 a month."}],R=[{question:"Can I build my own feedback tool with Claude or Cursor?",answer:"You can build something usable quickly. Depth is where the effort lives: deduplication at scale, CRM enrichment, source integrations, and accuracy that holds as models change. Many teams find the ongoing cost outweighs the subscription they were avoiding."},{question:"How much does it cost to build a feedback tool in-house?",answer:"Three costs. Building is engineer hours times your rate. Maintenance typically runs 15 to 20% of build cost annually. Operations is mostly usage costs, metered per item, and is more expensive if you build automated feedback capture. Price all three for every feature you want before you decide."},{question:"Should we build or buy?",answer:"Run the math honestly. Price the full spec, not the v1. Add 15 to 20% a year for maintenance, and inference costs if you are capturing automatically. Then ask one non-financial question: who owns this in year two?"},{question:"What are the parts of a customer intelligence system?",answer:"Capture, organization, analysis, and closing the loop. Capture pulls feedback from tickets, calls, reviews, and a customer-facing portal. Organization deduplicates it, groups it, and ties each idea to accounts and ARR. Analysis shows which themes are growing, what is blocking renewals, and how much revenue sits behind a request. Closing the loop tells customers what happened. Most builds cover one."},{question:"Is AI-generated code safe enough for customer data?",answer:"Treat it as unreviewed code. If your build touches revenue figures or support conversations, it needs the same security review any production system gets."}],P=({handle:e,meta:t,children:a})=>n.createElement("div",{className:"flex-1 rounded-xl border border-border bg-white p-4"},n.createElement("div",{className:"mb-1.5 flex items-center gap-2"},n.createElement("div",{className:"flex size-6 items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground"},e.replace(/[^a-zA-Z]/g,"").charAt(0).toUpperCase()),n.createElement("span",{className:"text-sm font-medium text-foreground"},e),n.createElement("span",{className:"text-xs text-muted-foreground"},t)),n.createElement("div",{className:"text-base leading-relaxed text-pretty text-secondary-foreground"},a)),H=({label:e})=>n.createElement("span",{className:"flex-1 rounded-lg bg-indigo-30 px-3 py-2 text-center text-sm text-primary"},e),U=(0,f.K)(()=>{const e=(0,n.useContext)(b.h);return(0,n.useEffect)(()=>{e("Viewed Build Internal Page")},[e]),n.createElement(n.Fragment,null,n.createElement(E.A,{title:"Canny vs. Building In-House | Build vs. Buy a Feedback Tool",description:"AI made a feedback tool cheap to build, not cheap to own. See what building in-house actually costs across build, maintenance, and operations, and when it is the right call.",pageURL:"https://canny.io/compare/build-in-house"}),n.createElement("main",{className:"overflow-x-hidden bg-white",id:"main"},n.createElement(N.A,{eyebrow:"Canny vs. building in-house",title:"You could build a version of Canny. That's not the hard part.",subtitle:"Building one feature is easy. Running the whole system means managing a second product.",registerButton:"Get started free",demoButton:"Request a demo",align:"center"}),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("h2",{className:C},"AI made software cheap to build, not cheap to own"),n.createElement("div",{className:"mt-4 flex flex-col gap-4"},n.createElement("p",{className:L},"Building parts of Canny is doable now, whether that is a feedback board or automated feedback capture. But there are a lot of supporting features that teams often do not consider. Deduplicating feedback, organizing it by product area, adding revenue context, and closing the loop with customers are each projects of their own. If you build your own feedback tools, you own adding functionality and fixing things when they break."),n.createElement("p",{className:L},n.createElement("span",{className:"text-lg font-semibold text-foreground"},"That is the second product problem.")," ","You set out to solve a problem, and end up owning a product nobody planned to run. It has users, a backlog, and a supp
1ort burden, and every improvement competes with your roadmap for engineering time."),n.createElement("p",{className:"text-lg leading-relaxed text-pretty font-semibold text-foreground"},"Canny does all of it starting at $79 a month.")))),n.createElement(x.A,null,n.createElement(k.A,{title:"What you'd actually be replacing",subtitle:"Most teams look to build at least one of three main parts of Canny. You can build a convincing v1, but getting each right is harder than it looks."})),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("div",{className:"flex flex-col gap-10"},j.map(e=>n.createElement("div",{key:e.title,className:"grid grid-cols-1 items-start gap-6 md:grid-cols-[1fr_300px] md:gap-16"},n.createElement("div",null,n.createElement("h3",{className:"text-2xl font-semibold text-balance text-foreground"},e.title),n.createElement("p",{className:"mt-1.5 mb-4 text-lg text-pretty text-muted-foreground"},e.v1),n.createElement("ul",{className:"flex flex-col gap-4"},e.hardParts.map(({Icon:e,label:t,text:a})=>n.createElement("li",{key:t,className:"flex items-start gap-2.5"},n.createElement(e,{className:"mt-1 size-4 shrink-0 text-primary"}),n.createElement("div",null,n.createElement("div",{className:"text-lg font-medium text-pretty text-foreground"},t),n.createElement("p",{className:"text-lg leading-relaxed text-pretty text-secondary-foreground"},a)))))),n.createElement("div",{className:"flex md:justify-end"},e.visual)))))),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("h2",{className:C},"Don’t forget about closing the loop"),n.createElement("p",{className:`mt-4 ${L}`},"Most customer intelligence tools stop at capturing insights. Nothing goes back to the customer who shared their feedback, and in-house builds often skip this too. Keeping customers updated reduces churn, grows accounts, and keeps the feedback coming."),n.createElement("div",{className:"mt-6 grid grid-cols-1 gap-6 md:grid-cols-2"},n.createElement(P,{handle:"judgemyusername",meta:"r/SaaS"},"The initial, optimistic scope has already creeped out a bit... From our end, the problem is solved.",n.createElement("span",{className:"rounded bg-amber-30 px-1 text-base text-amber-110"},"But from the user perspective, they’re not being kept in the loop as well as they were with Canny.")),n.createElement("div",null,n.createElement("div",{className:"mb-2 text-xs font-medium tracking-wide text-muted-foreground"},"FOR YOUR CUSTOMERS"),n.createElement("div",{className:"mb-4 flex items-center gap-1.5"},n.createElement(H,{label:"Status change email"}),n.createElement(h.A,{className:"size-3.5 shrink-0 text-muted-foreground","aria-hidden":!0}),n.createElement(H,{label:"Public roadmap"}),n.createElement(h.A,{className:"size-3.5 shrink-0 text-muted-foreground","aria-hidden":!0}),n.createElement(H,{label:"Changelog"})),n.createElement("div",{className:"mb-2 text-xs font-medium tracking-wide text-muted-foreground"},"FOR YOUR TEAM"),n.createElement("div",{className:"mb-1.5 flex items-center gap-2 rounded-lg border border-border px-2.5 py-2 text-sm"},n.createElement(g,{className:"size-3.5 shrink-0 text-muted-foreground","aria-hidden":!0}),n.createElement("span",{className:"text-pretty text-secondary-foreground"},"DM an account owner when a customer over"," ",n.createElement("span",{className:"font-medium text-foreground"},"[$20k/yr]")," shares feedback")),n.createElement("div",{className:"flex items-center gap-2 rounded-lg border border-border px-2.5 py-2 text-sm"},n.createElement(y.A,{className:"size-3.5 shrink-0 text-muted-foreground","aria-hidden":!0}),n.createElement("span",{className:"text-pretty text-secondary-foreground"},"Account owners see requests tied to active deals and renewals")))))),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("h2",{className:C},"Other things you might want to build"),n.createElement("p",{className:`mt-3 mb-5 ${L}`},"Illustrative, not exhaustive."),n.createElement("div",{className:"flex flex-wrap gap-2"},D.map(e=>n.createElement("span",{key:e,className:"rounded-full border border-border px-3 py-1 text-lg text-pretty text-secondary-foreground"},e))))),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("div",{className:"grid grid-cols-1 items-start gap-8 md:grid-cols-[1fr_240px]"},n.createElement("div",null,n.createElement("h2",{className:C},"You’ll need to secure your customers’ data"),n.createElement("div",{className:"mt-4 flex flex-col gap-4"},n.createElement("p",{className:L},"A public feedback portal with anonymous requests poses few security risks, but it also does not have much value. The version worth having holds account identity, revenue figures, and CRM data. That is a system of record for sensitive customer data, and it needs real authentication, permissions, audit trails, and someone responsible for keeping it secure and up to date."),n.createElement("p",{className:L},"One recent analysis found 434 exploitable flaws across a set of vibe-coded apps. The most common were missing rate limiting and broken authorization."," ",n.createElement("a",{className:"text-lg text-primary underline",href:"https://www.securityweek.com/vibe-coded-apps-riddled-with-exploitable-security-flaws",target:"_blank",rel:"noopener noreferrer"},"Read the analysis"),"."),n.createElement("p",{className:L},"The data is not only yours, since support tickets and call transcripts contain your customers’ information, and that surfaces in your next enterprise vendor questionnaire. Automated feedback capture also sends conversations to LLM APIs, which raises questions about data-processing terms, retention, and training. A vendor answers those contractually. A homegrown build usually does not consider them."),n.createElement("p",{className:"text-lg leading-relaxed text-pretty text-foreground"},"Canny is SOC 2 Type 2 certified, with SSO, encryption, and GDPR compliance already in place, and our agreements ensure customer data is never used to train models."))),n.createElement("div",{className:"rounded-xl border border-border bg-white p-3 font-mono text-sm shadow-sm"},n.createElement("div",{className:"mb-1.5 text-muted-foreground"},"feedback_record"),n.createElement("div",{className:"flex justify-between py-1"},n.createElement("span",{className:"text-secondary-foreground"},"account"),n.createElement("span",{className:"text-foreground"}
1,"Acme Corp")),n.createElement("div",{className:"flex justify-between py-1"},n.createElement("span",{className:"text-secondary-foreground"},"arr"),n.createElement("span",{className:"rounded bg-red-30 px-1 text-red-110"},"$140,000")),n.createElement("div",{className:"flex justify-between py-1"},n.createElement("span",{className:"text-secondary-foreground"},"crm_id"),n.createElement("span",{className:"rounded bg-red-30 px-1 text-red-110"},"SF-88214")),n.createElement("div",{className:"flex justify-between py-1"},n.createElement("span",{className:"text-secondary-foreground"},"source"),n.createElement("span",{className:"text-foreground"},"support ticket")))))),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("h2",{className:C},"Three hidden costs"),n.createElement("p",{className:`mt-3 mb-6 ${L}`},"It's easy to underestimate the cost of building in-house"),n.createElement("svg",{viewBox:"0 0 640 220",className:"h-auto w-full",role:"img","aria-label":"Cumulative cost over five years: an upfront build block, a stepped maintenance line, and an operations curve that scales with volume all climb above Canny's flat subscription line."},n.createElement("line",{x1:"48",y1:"180",x2:"620",y2:"180",stroke:"#D8DADE",strokeWidth:"1"}),n.createElement("line",{x1:"48",y1:"180",x2:"48",y2:"18",stroke:"#D8DADE",strokeWidth:"1"}),n.createElement("rect",{x:"54",y:"112",width:"34",height:"68",fill:"#B4B2A9",rx:"2"}),n.createElement("path",{d:"M88 112 L190 112 L190 92 L320 92 L320 72 L450 72 L450 52 L580 52 L580 36 L620 36",fill:"none",stroke:"#D85A30",strokeWidth:"2"}),n.createElement("path",{d:"M88 112 Q 340 70 620 10",fill:"none",stroke:"#8E4EC6",strokeWidth:"2",strokeDasharray:"5 3"}),n.createElement("line",{x1:"48",y1:"166",x2:"620",y2:"166",stroke:"#1D9E75",strokeWidth:"2"}),n.createElement("text",{x:"62",y:"104",fontSize:"11",fill:"#6B7180"},"build"),n.createElement("text",{x:"330",y:"86",fontSize:"11",fill:"#993C1D"},"+ maintenance, yearly"),n.createElement("text",{x:"310",y:"26",fontSize:"11",fill:"#793AAF"},"+ operations, scales with volume"),n.createElement("text",{x:"510",y:"160",fontSize:"11",fill:"#0F6E56"},"Canny · $79/mo"),n.createElement("text",{x:"48",y:"200",fontSize:"11",fill:"#8A8F98"},"year 1"),n.createElement("text",{x:"584",y:"200",fontSize:"11",fill:"#8A8F98"},"year 5")),n.createElement("div",{className:"mt-6 grid grid-cols-1 gap-4 md:grid-cols-3"},S.map(({label:e,color:t,text:a})=>n.createElement("div",{key:e},n.createElement("div",{className:`text-lg font-semibold text-pretty ${t}`},e),n.createElement("p",{className:"mt-1 text-lg leading-relaxed text-pretty text-secondary-foreground"},a)))),n.createElement("p",{className:`mt-6 ${L}`},"Canny’s plans start at $79/mo and cover all three."))),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("h2",{className:C},"Calculating your actual cost to build in-house"),n.createElement("div",{className:"mt-8 overflow-x-auto"},n.createElement("table",{className:"w-full min-w-[560px] border-collapse text-left text-base text-pretty"},n.createElement("thead",null,n.createElement("tr",{className:"border-b border-border"},n.createElement("th",{className:"w-[26%] py-3.5 pr-8 font-medium text-muted-foreground"},"Step"),n.createElement("th",{className:"w-[42%] py-3.5 pr-8 font-medium text-muted-foreground"},"How"),n.createElement("th",{className:"py-3.5 font-medium text-muted-foreground"},"Note"))),n.createElement("tbody",null,B.map(({step:e,how:t,note:a})=>n.createElement("tr",{key:e,className:"border-b border-border"},n.createElement("td",{className:"py-3.5 pr-8 align-top font-medium text-foreground"},e),n.createElement("td",{className:"py-3.5 pr-8 align-top text-secondary-foreground"},t),n.createElement("td",{className:"py-3.5 align-top text-muted-foreground"},a)))))))),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("h2",{className:C},"When building is genuinely right"),n.createElement("div",{className:"mt-5 flex flex-col gap-4"},O.map(({label:e,text:t})=>n.createElement("div",{key:e},n.createElement("div",{className:"text-lg font-semibold text-pretty text-foreground"},e),n.createElement("p",{className:"mt-1 text-lg leading-relaxed text-pretty text-secondary-foreground"},t)))))),n.createElement(x.A,null,n.createElement("section",{className:A},n.createElement("h2",{className:C},"“But building means we get exactly what we want”"),n.createElement("div",{className:"mt-4 flex flex-col gap-4"},n.createElement("p",{className:L},"True on day one. Then your needs change, and every change is a ticket your team has to handle. Feedback capture, deduplication, organization, and closing the loop work the same way at almost every company. The part that is genuinely specific to you is your views, your workflows, and your internal dashboards. That part is small."),n.createElement("p",{className:L},"Build that part using Canny’s API and MCP server. It lets you use organized and enriched Canny data in ChatGPT or Claude. You can also make updates in Canny from these LLMs so you can actively manage your feedback. Keep the system, own the custom layer."),n.createElement("p",{className:"text-lg font-medium text-pretty text-primary"},n.createElement("a",{className:"text-lg",href:"https://feedback.canny.io",target:"_blank",rel:"noopener noreferrer"},"If Canny doesn’t do something you need, request it on our Portal and watch it ship ",n.createElement(h.A,{className:"inline size-3.5","aria-hidden":!0})))))),n.createElement(x.A,null,n.createElement(v.A,{title:"Reserve your roadmap for your own product",subtitle:"Canny captures your feedback, deduplicates it, and shows you the ARR behind every request.",registerButton:"Get started free",demoButton:"Request a demo",microcopy:"Free sign up · No credit card required"})),n.createElement(x.A,null,n.createElement(w.A,{faqs:R}))))})},65147(e,t,a){a.r(t),a.d(t,{default:()=>z});var n=a(63696),r=a(62688),s=a.n(r),o=a(89588),i=a(88441),l=a(15875),c=a(98300),d=a(22147),m=a(43963);const u="HubSpot Integration | Canny",p="Track feedback on behalf of contacts in HubSpot",h="https://canny.io/images/canny-social.png";class g extends n.Component{render(){return n.createElement(m.A,{title:u,meta:[{name:"description",content:p},{property:"og:image",content:h},{property:"og:title",content:u},{property:"og:description",content:p},{property:"og:url",content:"https://canny.io/integrations/hubspot"},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:site",content:"@cannyHQ"},{name:"twitter:title",content:u},{name:"twitter:description",content:p},{name:"twitter:image",content:h}]})}}var y=a(91802),f=a(15043),b=a(53827),E=a(49885),x=a(30253),v=a(54410),w=a(10867),N=a.n(w),k=a(28361),M=a.n(k),A=a(58724),C=a.n(A),L=a(53683),I=a.n(L);a(18738),a(95818);class T extends n.Component{static propTypes={showIntercom:s().func,trackEvent:s().func,viewer:s().shape({companies:s().array})};componentDidMount(){const{trackEvent:e}=this.props;e("Viewed HubSpot Integration Page")}onContactUsTapped=()=>{this.props.showIntercom()};renderCTA(){const{viewer:e}=this.props;return!e||e.loggedOut||0===e.companies.length?n.createElement(x.A,{className:"cta",to:"/register"},n.createElement(f.A,{buttonType:"greenButton",value:"Get started"})):n.createElement(f.A,{buttonType:"blackButton",className:"cta",onTap:this.onContactUsTapped,value:"Contact Us for access"})}render(){return n.createElement("main",{className:"integrationsLanding overflow-x-hidden bg-white",id:"main"},n.createElement(g,null),n.createElement("div",{className:"integrationsLandingContainer"},n.createElement("div",{className:"header"},n.createElement("div",{className:"left"},n.createElement(y.A,{icon:N(),name:"HubSpot"}),n.createElement("div",{className:"text"},n.createElement("h1",{className:"title text-pretty"},"Canny for HubSpot"),n.createElement("div",{className:"subtitle text-pretty"},"Track feedback on behalf of contacts and deals in HubSpot"),n.createElement("div",{className:"links"},this.renderCTA(),n.createElement("a",{href:"https://help.canny.io/en/articles/5876904-hubspot-integration",rel:"noopener",target:"_blank",className:"LandingIntegrations__install-link"},"See install docs"))))),n.createElement("div",{className:"features"},n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(E.A,{className:"shadow",loading:"eager",src:M(),alt:"HubSpot contact detail panel with an embedded Canny Feedback section showing a linked feature request (Status: Open)"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Keep track of your prospect's dealbreakers"),n.createElement("div",{className:"subtitle text-pretty"},"Close more deals by staying on top of what prospects are asking for. You'll know the status of these requests from your product team."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(E.A,{className:"shadow",src:C(),alt:'Canny "Track feedback" search dialog overlaying HubSpot showing suggested posts including "Reporting/analytics"'})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"No need to leave HubSpot"),n.createElement("div",{className:"subtitle text-pretty"},"Send feedback to your product team without disrupting your current workflow. Search and create Canny posts from HubSpot."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(E.A,{className:"shadow",src:I(),alt:"Opportunities table listing accounts (Appy Inc., ACME Co., Important Company) with HubSpot link icons"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"All your feedback in one place"),n.createElement("div",{className:"subtitle text-pretty"},"Canny keeps track of all votes that came from HubSpot. Link potential revenue opportunities to inform your product decisions.")))
1)),n.createElement("div",{className:"w-full mt-12 mb-8 md:mt-20 md:mb-12"},n.createElement(b.A,{title:"Capture feedback from every contact",subtitle:"Get started free, or see the HubSpot integration in a demo.",demoButton:"Request a demo",registerButton:"Get started free",microcopy:"No credit card required"})))}}const z=(0,i.Zz)((0,v.A)({showIntercom:c.AO,trackEvent:l.h,viewer:d.o}),o.K)(T)},36660(e,t,a){a.r(t),a.d(t,{default:()=>U});var n=a(63696),r=a(62688),s=a.n(r),o=a(89588),i=a(88441),l=a(15875),c=a(22147),d=a(90006),m=a(43963);const u="Intercom Integration | Canny",p="Easily integrate Canny with Intercom to track customer feedback in conversations.",h="https://canny.io/images/canny-social.png";class g extends n.Component{render(){return n.createElement(m.A,{title:u,meta:[{name:"description",content:p},{property:"og:image",content:h},{property:"og:title",content:u},{property:"og:description",content:p},{property:"og:url",content:"https://canny.io/integrations/intercom"},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:site",content:"@cannyHQ"},{name:"twitter:title",content:u},{name:"twitter:description",content:p},{name:"twitter:image",content:h}]})}}var y=a(91802),f=a(53827),b=a(49885),E=a(30253),x=a(72170),v=a(28128),w=a(64672),N=a(54410),k=a(76428),M=a.n(k),A=a(93717),C=a.n(A),L=a(782),I=a.n(L),T=a(50549),z=a.n(T),j=a(80096),D=a.n(j),S=a(85700),B=a.n(S),O=a(19497),R=a.n(O);a(18738),a(95818);const P="7927uj57u4";class H extends n.Component{static propTypes={loadVideo:s().func,playVideo:s().func,trackEvent:s().func,viewer:s().shape({companies:s().array})};componentDidMount(){const{trackEvent:e}=this.props;e("Viewed Intercom Integration Page")}onLoadVideo=()=>{const{loadVideo:e,trackEvent:t}=this.props;e(P,e=>{e.trackingEvents||(e.trackingEvents=!0,e.bind("play",()=>(t("Started Intercom Video"),e.unbind)),e.bind("secondchange",a=>{if(80===a)return t("Finished Intercom Video"),e.unbind}))})};onPlayVideo=()=>{this.onLoadVideo();const{playVideo:e}=this.props;e(P)};renderVideo(){return n.createElement("div",{className:"playButtonContainer"},n.createElement("div",{className:"playButton"}),n.createElement("div",{className:"playButtonLabel"},n.createElement(v.A,null,"See how it works")))}renderCTA(){const{viewer:e}=this.props;if(!e||e.loggedOut||0===e.companies.length)return n.createElement(E.A,{className:"LandingGlobal__cta",to:"/register"},"Get started");const{companies:t}=e,a=t[0],r=(0,w.A)("https://"+a.subdomain+".canny.io/admin/settings/integrations/intercom");return n.createElement("a",{className:"LandingGlobal__cta",href:r},"Get started")}render(){return n.createElement("main",{className:"integrationsLanding overflow-x-hidden bg-white",id:"main"},n.createElement(g,null),n.createElement("div",{className:"integrationsLandingContainer"},n.createElement("div",{className:"header"},n.createElement("div",{className:"left"},n.createElement(y.A,{icon:R(),name:"Intercom"}),n.createElement("div",{className:"text"},n.createElement("h1",{className:"title text-pretty"},"Canny for Intercom"),n.createElement("div",{className:"subtitle text-pretty"},"Capture feedback from people in Intercom"),n.createElement("div",{className:"links"},this.renderCTA(),n.createElement("a",{href:"https://help.canny.io/en/articles/2048046-intercom-integration",rel:"noopener",target:"_blank",className:"LandingIntegrations__install-link"},"See install docs")))),n.createElement(x.A,{onTap:this.onPlayVideo},n.createElement("div",{className:"right",onMouseOver:this.onLoadVideo},this.renderVideo(),n.createElement(b.A,{loading:"eager",src:B()})))),n.createElement("div",{className:"features"},n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(b.A,{loading:"eager",src:M(),alt:"Autopilot capturing feedback from Intercom conversations automatically"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Automatically capture feedback in Intercom conversations"),n.createElement("div",{className:"subtitle text-pretty"},"Autopilot reads your Intercom conversations and captures feedback automatically. It gets deduplicated, triaged, and tied to your actual customers and revenue."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(b.A,{loading:"eager",src:z(),alt:'Canny feedback search in Intercom showing a "Your feedback has been tracked" confirmation popup'})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Show customers you've tracked their feedback"),n.createElement("div",{className:"subtitle text-pretty"},"Build trust with your customers instead of saying \"we'll run it by the team\". They'll get notified on any updates to their feedback."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(b.A,{src:D(),alt:'Intercom chat conversation with a Canny "Give feedback" overlay for direct in-chat feedback submission'})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Let users give feedback directly"),n.createElement("div",{className:"subtitle text-pretty"},"Less friction means more feedback. It'll be tracked in an organized way that's easy for your product team to understand."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(b.A,{src:C(),srcSet:`${C()} 1x, ${I()} 2x`,alt:"Keeping customers up to date with features in Canny, a customer feedback management tool"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Keep everyone engaged with product updates"),n.createElement("div",{className:"subtitle text-pretty"},"Automatically follow up with people when you release a feature. Keep the feedback loop going strong."))))),n.createElement("div",{className:"w-full mt-12 mb-8 md:mt-20 md:mb-12"},n.createElement(f.A,{title:"Capture feedback from every conversation",subtitle:"Get started free, or see the Intercom integration in a demo.",demoButton:"Request a demo",registerButton:"Get started free",microcopy:"No credit card required"})))}}const U=(0,i.Zz)((0,N.A)({loadVideo:d.tv,playVideo:d.jB,trackEvent:l.h,viewer:c.o}),o.K)(H)},46738(e,t,a){a.r(t),a.d(t,{default:()=>j});var n=a(63696),r=a(62688),s=a.n(r),o=a(89588),i=a(88441),l=a(15875),c=a(98300),d=a(22147),m=a(43963);const u="Feedback Management for Salesforce | Canny",p="Track feedback on behalf of contacts in Salesforce with Canny's integration. Leverage feedback management to build features leads want and close more deals.",h="https://canny.io/images/canny-social.png";class g extends n.Component{render(){return n.createElement(m.A,{title:u,meta:[{name:"description",content:p},{property:"og:image",content:h},{property:"og:title",content:u},{property:"og:description",content:p},{property:"og:url",content:"https://canny.io/integrations/salesforce"},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:site",content:"@cannyHQ"},{name:"twitter:title",content:u},{name:"twitter:description",content:p},{name:"twitter:image",content:h}]})}}var y=a(91802),f=a(15043),b=a(53827),E=a(49885),x=a(30253),v=a(54410),w=a(28076),N=a(33531),k=a.n(N),M=a(11162),A=a.n(M),C=a(75333),L=a.n(C),I=a(63169),T=a.n(I);a(18738),a(95818);class z extends n.Component{static propTypes={showIntercom:s().func,trackEvent:s().func,viewer:s().shape({companies:s().array})};componentDidMount(){const{trackEvent:e}=this.props;e("Viewed Salesforce Integration Page")}onContactUsTapped=()=>{this.props.showIntercom()};renderCTA(){const{viewer:e}=this.props;return!e||e.loggedOut||0===e.companies.length?n.createElement(x.A,{className:"cta",to:"/register"},n.createElement(f.A,{buttonType:"greenButton",value:"Get started"})):n.createElement(f.A,{buttonType:"blackButton",className:"cta",onTap:this.onContactUsTapped,value:"Contact Us for access"})}render(){return n.createElement("main",{className:"integrationsLanding overflow-x-hidden bg-white",id:"main"},n.createElement(g,null),n.createElement("div",{className:"integrationsLandingContainer"},n.createElement("section",{className:"header"},n.createElement("div",{className:"left"},n.createElement(y.A,{icon:T(),iconClassName:"size-14",name:"Salesforce"}),n.createElement("div",{className:"text"},n.createElement("h1",{className:"title text-pretty"},"Canny for Salesforce"),n.createElement("div",{className:"subtitle text-pretty"},"Track feedback on behalf of contacts in Salesforce"),n.createElement("div",{className:"links"},this.renderCTA(),n.createElement("a",{href:"https://help.canny.io/en/articles/3808707-salesforce-integration",rel:"noopener",target:"_blank",className:"LandingIntegrations__install-link"},"See install docs"))))),n.createElement("section",{className:"features"},n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(E.A,{className:"shadow",loading:"eager",src:k(),alt:"The Canny widget that lives inside Salesforce, showing previous requests and a button to add a new one."})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Keep track of your prospect's dealbreakers"),n.createElement("div",{className:"subtitle text-pretty"},"Close more deals by staying on top of what prospects are asking for. You'll know the status of these requests from your product team."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(E.A,{className:"shadow",src:A(),alt:"A form that lets you search for an existing feedback item, or add a new one."})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"No need to leave Salesforce"),n.createElement("div",{className:"subtitle text-pretty"},"Send feedback to your product team without disrupting your current workflow. Search and create Canny posts from Salesforce."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(E.A,{className:"shadow",src:L(),alt:"The breakdown of all feedback and opportunities."})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"All your feedback in one place"),n.createElement("div",{className:"subtitle text-pretty"},"Canny keeps track of all votes that came from Salesforce. Link potential revenue opportunities to inform your product decisions.")))
1)),n.createElement("div",{className:"w-full mt-12 mb-8 md:mt-20 md:mb-12"},n.createElement(b.A,{title:"Capture feedback from every deal",subtitle:"Get started free, or see the Salesforce integration in a demo.",demoButton:"Request a demo",registerButton:"Get started free",microcopy:"No credit card required"})),n.createElement("div",{className:"integrationsLandingContainer mb-12 md:mb-16"},n.createElement(w.A,{faqs:[{question:"What is a feedback management system?",answer:"<div><p>This is a process of collecting, organizing, and actioning customer feedback. When you gather actionable insights from your users, you end up building better products. At the same time, you boost customer satisfaction. That's because customer experience improves when users feel heard.</p><p>Canny helps you set up an effective feedback management system without leaving Salesforce.</p></div>",html:n.createElement(n.Fragment,null,n.createElement("p",null,"This is a process of collecting, organizing, and actioning customer feedback. When you gather actionable insights from your users, you end up building better products. At the same time, you boost customer satisfaction. That's because customer experience improves when users feel heard."),n.createElement("p",null,"Canny helps you set up an effective feedback management system without leaving Salesforce."))},{question:"How can Canny help with my Salesforce feedback management?",answer:"<div><p>Capture customer sentiment in Salesforce CRM. Then, send ideas from your sales prospects directly to Canny. In Canny, you'll be able to track the status of these requests, prioritize them, and more. That feedback data will help your product management.</p><p>Salesforce is usually a home for customer data. Let's keep it this way. You don't need to leave the tool you know and love to manage user feedback.</p></div>",html:n.createElement(n.Fragment,null,n.createElement("p",null,"Salesforce is usually a home for customer data. Let's keep it this way. You don't need to leave the tool you know and love to manage user feedback."),n.createElement("p",null,"Capture customer sentiment in Salesforce CRM. Then, send ideas from your sales prospects directly to Canny. In Canny, you'll be able to track the status of these requests, prioritize them, and more. That feedback data will help your product management."))},{question:"How much does it cost?",answer:"<div><p>We have a variety of plans to fit your feedback management needs. Get started with our Free plan - it has everything you need to collect and manage customer feedback. And our Salesforce integration helps you manage it all in one place.</p><p>Note: Salesforce integration is only available on our Business plan.</p></div>",html:n.createElement(n.Fragment,null,n.createElement("p",null,"We have a variety of plans to fit your feedback management needs. Get started with our Free plan - it has everything you need to collect and manage customer feedback. And our Salesforce integration helps you manage it all in one place."),n.createElement("p",null,"Note: Salesforce integration is only available on our Business plan."))},{question:"What other integrations does Canny have?",answer:'<div><p>In addition to Salesforce, we also integrate with many other popular tools. For example:</p><ul><li><p>Hubspot</p></li><li><p>Slack</p></li><li><p>Microsoft Teams</p></li><li><p>Intercom</p></li><li><p>Zendesk</p></li><li><p>And many more</p></li></ul><p>Check out the full list of <a href="https://canny.io/integrations" rel="noopener" target="_blank">integrations here</a>.</p></div>',html:n.createElement(n.Fragment,null,n.createElement("p",null,"In addition to Salesforce, we also integrate with many other popular tools. For example:"),n.createElement("ul",{className:"orderedList"},n.createElement("li",{className:"orderedListItem"},n.createElement("p",{className:"orderedListItemCopy"},"Hubspot")),n.createElement("li",{className:"orderedListItem"},n.createElement("p",{className:"orderedListItemCopy"},"Slack")),n.createElement("li",{className:"orderedListItem"},n.createElement("p",{className:"orderedListItemCopy"},"Microsoft Teams")),n.createElement("li",{className:"orderedListItem"},n.createElement("p",{className:"orderedListItemCopy"},"Intercom")),n.createElement("li",{className:"orderedListItem"},n.createElement("p",{className:"orderedListItemCopy"},"Zendesk")),n.createElement("li",{className:"orderedListItem"},n.createElement("p",{className:"orderedListItemCopy"},"And many more"))),n.createElement("p",null,"Check out the full list of"," ",n.createElement("a",{href:"https://canny.io/integrations",rel:"noopener",target:"_blank"},"integrations here"),"."))}]})))}}const j=(0,i.Zz)((0,v.A)({showIntercom:c.AO,trackEvent:l.h,viewer:d.o}),o.K)(z)},58715(e,t,a){a.r(t),a.d(t,{default:()=>z});var n=a(63696),r=a(62688),s=a.n(r),o=a(89588),i=a(88441),l=a(15875),c=a(22147),d=a(43963);const m="Slack Integration | Canny",u="Easily integrate Canny with Slack to keep your team up-to-date with customer feedback.",p="https://canny.io/images/canny-social.png";class h extends n.Component{render(){return n.createElement(d.A,{title:m,meta:[{name:"description",content:u},{property:"og:image",content:p},{property:"og:title",content:m},{property:"og:description",content:u},{property:"og:url",content:"https://canny.io/integrations/slack"},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:site",content:"@cannyHQ"},{name:"twitter:title",content:m},{name:"twitter:description",content:u},{name:"twitter:image",content:p}]})}}var g=a(49885),y=a(6992);const f=({media:e,className:t})=>{const a=(0,n.useRef)(null);return(0,n.useEffect)(()=>{const e=a.current;e&&(window.matchMedia("(prefers-reduced-motion: reduce)").matches?e.pause():(e.muted=!0,e.play().catch(()=>{})))},[]),"image"===e.type?n.createElement(g.A,{src:e.src,alt:e.alt,className:(0,y.cn)("block",t)}):n.createElement("video",{ref:a,"aria-label":e.alt,autoPlay:!0,className:(0,y.cn)("block",t),loop:!0,muted:!0,playsInl
1ine:!0,poster:e.poster,preload:"metadata"},e.sources.map(e=>n.createElement("source",{key:e.src,src:e.src,type:e.type})))};var b=a(76949),E=a(91802),x=a(53827),v=a(54410),w=a(41690),N=a.n(w),k=a(41402),M=a.n(k),A=a(96370),C=a.n(A),L=a(16314),I=a.n(L);a(95818),a(18738);class T extends n.Component{static propTypes={trackEvent:s().func,viewer:s().shape({companies:s().array})};componentDidMount(){const{trackEvent:e}=this.props;e("Viewed Slack Integration Page")}render(){return n.createElement("main",{className:"integrationsLanding overflow-x-hidden bg-white",id:"main"},n.createElement(h,null),n.createElement("div",{className:"integrationsLandingContainer"},n.createElement("div",{className:"header"},n.createElement("div",{className:"left"},n.createElement(E.A,{icon:M(),name:"Slack"}),n.createElement("div",{className:"text"},n.createElement("h1",{className:"title text-pretty"},"Canny for Slack"),n.createElement("div",{className:"subtitle text-pretty"},"Capture and subscribe to feedback in Slack"),n.createElement("div",{className:"links"},n.createElement(b.A,{installButtonText:"Get started",installLink:"https://canny.io/redirect?to=%2Fadmin%2Fsettings%2Fintegrations%2Fslack"}),n.createElement("a",{href:"https://help.canny.io/en/articles/766734-slack-integration",rel:"noopener",target:"_blank",className:"LandingIntegrations__install-link"},"See install docs"))))),n.createElement("div",{className:"features"},n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(f,{className:"shadow",media:{type:"video",sources:[{src:C(),type:'video/mp4; codecs="av01.0.05M.08"'},{src:I(),type:'video/mp4; codecs="avc1.42E01E"'}],alt:"Mentioning @canny in Slack to track feedback from a conversation"}})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Mention @canny to capture feedback"),n.createElement("div",{className:"subtitle text-pretty"},"Customer feedback is constantly being discussed in Slack. Mention @canny to track it right away. It gets deduplicated, triaged, and tied to your actual customers and revenue."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(g.A,{className:"shadow",loading:"eager",src:N(),alt:"Canny bot notifications displayed in Slack #feedback channel showing new feature requests and comments"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Keep your team up to date on user feedback"),n.createElement("div",{className:"subtitle text-pretty"},"Configure notifications to go to specific Slack channels and get DMs for feedback that matters to you and your accounts."))))),n.createElement("div",{className:"w-full mt-12 mb-8 md:mt-20 md:mb-12"},n.createElement(x.A,{title:"Leverage Canny's Slack agent",subtitle:"Get started free, or see the Slack integration in a demo.",demoButton:"Request a demo",registerButton:"Get started free",microcopy:"No credit card required"})))}}const z=(0,i.Zz)((0,v.A)({trackEvent:l.h,viewer:c.o}),o.K)(T)},27433(e,t,a){a.r(t),a.d(t,{default:()=>z});var n=a(63696),r=a(62688),s=a.n(r),o=a(89588),i=a(88441),l=a(15875),c=a(22147),d=a(43963);const m="Zendesk Integration | Canny",u="Easily integrate Canny with Zendesk to track customer feedback from tickets.",p="https://canny.io/images/canny-social.png";class h extends n.Component{render(){return n.createElement(d.A,{title:m,meta:[{name:"description",content:u},{property:"og:image",content:p},{property:"og:title",content:m},{property:"og:description",content:u},{property:"og:url",content:"https://canny.io/integrations/zendesk"},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:site",content:"@cannyHQ"},{name:"twitter:title",content:m},{name:"twitter:description",content:u},{name:"twitter:image",content:p}]})}}var g=a(76949),y=a(91802),f=a(53827),b=a(49885),E=a(54410),x=a(76428),v=a.n(x),w=a(45200),N=a.n(w),k=a(88029),M=a.n(k),A=a(36690),C=a.n(A),L=a(91238),I=a.n(L);a(95818),a(18738);class T extends n.Component{static propTypes={trackEvent:s().func,viewer:s().shape({companies:s().array})};componentDidMount(){const{trackEvent:e}=this.props;
1e("Viewed Zendesk Integration Page")}render(){return n.createElement("main",{className:"integrationsLanding overflow-x-hidden bg-white",id:"main"},n.createElement(h,null),n.createElement("div",{className:"integrationsLandingContainer"},n.createElement("div",{className:"header"},n.createElement("div",{className:"left"},n.createElement(y.A,{icon:I(),iconClassName:"size-14",name:"Zendesk"}),n.createElement("div",{className:"text"},n.createElement("h1",{className:"title text-pretty"},"Canny for Zendesk"),n.createElement("div",{className:"subtitle text-pretty"},"Capture feedback from Zendesk tickets"),n.createElement("div",{className:"links"},n.createElement(g.A,{installLink:"https://www.zendesk.com/apps/support/canny/",installButtonText:"Get started"}),n.createElement("a",{href:"https://help.canny.io/en/articles/3160421-zendesk-integration",rel:"noopener",target:"_blank",className:"LandingIntegrations__install-link"},"See install docs"))))),n.createElement("div",{className:"features"},n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(b.A,{loading:"eager",src:v(),alt:"Autopilot capturing feedback from Zendesk tickets automatically"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Automatically capture feedback in Zendesk tickets"),n.createElement("div",{className:"subtitle text-pretty"},"Autopilot reads your Zendesk tickets and captures feedback automatically. It gets deduplicated, triaged, and tied to your actual customers and revenue."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(b.A,{className:"shadow",loading:"eager",src:M(),alt:"Zendesk ticket with Canny sidebar panel showing linked feedback posts and voter counts"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"Show customers you've tracked their feedback"),n.createElement("div",{className:"subtitle text-pretty"},"Send links to their feedback to build trust with your customers instead of saying \"we'll run it by the team\". They'll get notified on any updates to their feedback."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(b.A,{className:"shadow",src:N(),alt:"Canny post search dialog overlaying a Zendesk ticket for linking feedback without leaving the app"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"No need to leave Zendesk"),n.createElement("div",{className:"subtitle text-pretty"},"Keep track of feedback without disrupting your current workflow. Search and create Canny posts from Zendesk."))),n.createElement("div",{className:"featureHighlight"},n.createElement("div",{className:"featureImage"},n.createElement(b.A,{className:"shadow",src:C(),alt:"Canny voter list showing customer names, MRR values, and linked Zendesk tickets"})),n.createElement("div",{className:"featureText"},n.createElement("div",{className:"title text-pretty"},"All your feedback in one place"),n.createElement("div",{className:"subtitle text-pretty"},"Canny keeps track of all votes that came from Zendesk tickets. Easily return to the original ticket to give updates."))))),n.createElement("div",{className:"w-full mt-12 mb-8 md:mt-20 md:mb-12"},n.createElement(f.A,{title:"Capture feedback from every ticket",subtitle:"Get started free, or see the Zendesk integration in a demo.",demoButton:"Request a demo",registerButton:"Get started free",microcopy:"No credit card required"})))}}const z=(0,i.Zz)((0,E.A)({trackEvent:l.h,viewer:c.o}),o.K)(T)},88535(e,t,a){a.d(t,{A:()=>r});var n=a(58510);function r(e,t){const a=(0,n.A)(window.location.host),r=encodeURIComponent(e)+"="+encodeURIComponent(t),s="; expires="+new Date((new Date).getTime()+31536e7).toString(),o="; domain="+a;try{document.cookie=r+s+o+"; path=/; SameSite=Lax"}catch(e){return}}},81215(e,t,a){function n(e,t,a="https://schema.org"){return{"@context":a,"@type":e,...t}}function r(e){return{"@type":"ListItem",...e}}function s(e,t="https://schema.org"){return n("ItemList",e,t)}a.d(t,{A:()=>
1o});const o={createOrganization:function(e,t="https://schema.org"){return n("Organization",e,t)},createWebSite:function(e,t="https://schema.org"){return n("WebSite",e,t)},createArticle:function(e,t,a="https://schema.org"){return n(e,t,a)},createBreadcrumbList:function(e,t="https://schema.org"){return n("BreadcrumbList",{itemListElement:e.map((e,t)=>r({position:t+1,name:e.name,...e.item&&{item:e.item}}))},t)},createFAQPage:function(e,t="https://schema.org",a){return n("FAQPage",{...a&&{"@id":a},mainEntity:e.map(e=>({"@type":"Question",name:e.question,acceptedAnswer:{"@type":"Answer",text:e.answer}}))},t)},createProduct:function(e,t="https://schema.org"){return n("Product",e,t)},createPerson:function(e,t="https://schema.org"){return n("Person",e,t)},createSoftwareApplication:function(e,t="https://schema.org"){return n("SoftwareApplication",e,t)},createWebPage:function(e,t="https://schema.org"){return n("WebPage",e,t)},createListItem:r,createItemList:s,createNamedItemList:function(e,t,a,n){const o=a.map((e,t)=>r({position:t+1,name:e.name,...e.description&&{description:e.description},...e.item&&{item:e.item}}));return s({"@id":e,name:t,itemListOrder:n?.itemListOrder||"Unordered",itemListElement:o},n?.context)},createGraph:function(e,t="https://schema.org"){return{"@context":t,"@graph":e}},toString:function(e){return JSON.stringify(e)}}},58510(e,t,a){a.d(t,{A:()=>r});var n=a(23456);function r(e){const t=e.split(":")[0],a=t.split("."),r=(0,n.A)("hostnameOverride")||"canny.io",s="localhost"===t,o=t.match(/\.localhost$/i),i=new RegExp(`(^|.)${r}$`,"i"),l=t.match(i);return s?"localhost":o?"."+a[a.length-2]+"."+a[a.length-1]:l?`.${r}`:t}},28076(e,t,a){a.d(t,{A:()=>u});var n=a(63696),r=a(4452),s=a.n(r);const o=(0,a(21727).A)({name:"chevron-up",size:24,node:[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]});var i=a(46359),l=a(5064),c=a(43963),d=a(574),m=a.n(d);const u=({faqs:e})=>{const t=(0,n.useContext)(l.di),a=(0,n.useContext)(l.zA),[r,d]=(0,n.useState)(new Array(e.length).fill(!1));let u=-1;if(t.hash){const a=t.hash.slice(1),n=e.findIndex(e=>e.id===a);-1!==n&&(u=n)}return n.createElement(n.Fragment,null,n.createElement(c.A,null,n.createElement("script",{type:"application/ld+json"},JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:e.map(e=>({"@type":"Question",name:e.question,acceptedAnswer:{"@type":"Answer",text:e.answer}}))}))),n.createElement("section",{className:m().FAQs},n.createElement("h2",{className:m().faqHeader},"Faq"),n.createElement("ul",{className:m().questionsWrapper},e.map((l,c)=>{const p=u===c||r[c];return n.createElement("li",{className:s()(m().questionWrapper,{[m().open]:p}),id:l.id,key:c},n.createElement("button",{className:m().question,onClick:()=>(n=>{if(t.hash){const r=t.hash.slice(1);e.findIndex(e=>e.id===r)===n&&a.replace(t.pathname)}setTimeout(()=>{const e=[...r],t=n!==u&&!r[n];e.splice(n,1,t),d(e)},0)})(c)},l.question,r[c]?n.createElement(o,{className:m().accordionIcon}):n.createElement(i.A,{className:m().accordionIcon})),n.createElement("div",{className:m().answer},l.html))}))))}},28859(e,t,a){a.d(t,{A:()=>s});var n=a(63696),r=a(39113);const s=({children:e,className:t="",delay:a})=>{const[s,o]=(0,n.useState)(!1),{ref:i,inView:l}=(0,r.A)({rootMargin:"-60px"});(0,n.useEffect)(()=>{const e=setTimeout(()=>o(!0),350);return()=>clearTimeout(e)},[]);const c=s&&l?"animate-in fade-in-0 slide-in-from-bottom-4 duration-700 fill-mode-both"+(a?` ${a}`:""):"opacity-0";return n.createElement("div",{ref:i,className:`${c} ${t}`},e)}},3808(e,t,a){a.d(t,{A:()=>d});var n=a(63696),r=a(46359),s=a(18628),o=a(43963),i=a(81215);const l=(0,s.tv)({slots:{section:"box-border mx-auto w-[90%] max-w-3xl py-12 md:py-16",title:"mb-8 text-center text-3xl font-semibold tracking-tight text-balance text-foreground md:text-4xl",list:"flex flex-col",item:"group border-b border-border py-4",summary:["flex cursor-pointer list-none items-center justify-between gap-4 text-lg font-semibold","text-foreground [&::-webkit-details-marker]:hidden"],chevron:"size-5 shrink-0 text-secondary-foreground transition-transform group-open:rotate-180",answer:"mt-3 text-base text-pretty text-secondary-foreground",answerList:"mt-3 list-disc space-y-2 pl-5 text-base text-pretty text-secondary-foreground"}}
1),c=({answer:e,bullets:t,footer:a})=>[e,...t??[],a].filter(Boolean).join(" "),d=({title:e="Frequently asked questions",faqs:t})=>{const a=l(),s=i.A.toString(i.A.createFAQPage(t.map(e=>({question:e.question,answer:c(e)}))));return n.createElement("section",{className:a.section()},n.createElement(o.A,null,n.createElement("script",{type:"application/ld+json"},s)),n.createElement("h2",{className:a.title()},e),n.createElement("div",{className:a.list()},t.map(({question:e,answer:t,bullets:s,footer:o})=>n.createElement("details",{key:e,className:a.item()},n.createElement("summary",{className:a.summary()},e,n.createElement(r.A,{"aria-hidden":!0,className:a.chevron()})),n.createElement("p",{className:a.answer()},t),s&&s.length>0?n.createElement("ul",{className:a.answerList()},s.map((e,t)=>n.createElement("li",{key:t},e))):null,o?n.createElement("p",{className:a.answer()},o):null))))}},19347(e,t,a){a.d(t,{A:()=>d});var n=a(63696),r=a(95181),s=a(19785),o=a(18628),i=a(58996),l=a(39604);const c=(0,o.tv)({slots:{section:"box-border w-full py-12 md:py-16",inner:"mx-auto w-[90%] max-w-7xl",content:"flex flex-col gap-4",eyebrow:"w-fit rounded bg-indigo-30 px-3 py-2 text-base font-semibold text-indigo-100",title:"max-w-[700px] text-4xl font-bold tracking-tight text-balance text-foreground md:text-6xl",subtitle:"max-w-2xl text-lg text-balance text-secondary-foreground md:text-2xl",ctas:["mt-2 flex w-full flex-col items-stretch gap-3","sm:w-auto sm:flex-row sm:flex-wrap sm:items-center"],cost:"flex items-center gap-2 text-base text-secondary-foreground",media:"w-full"},variants:{align:{center:{content:"items-center text-center",eyebrow:"mx-auto",ctas:"sm:justify-center",cost:"justify-center"},split:{content:"items-start text-left"}}},defaultVariants:{align:"center"}}),d=({eyebrow:e,title:t,titleClassName:a,subtitle:o,demoButton:d,registerButton:m,cost:u,align:p="center",media:h,registerLinkOverride:g=i.registerLink,demoLinkOverride:y=i.demoLink})=>{const f="split"===p&&Boolean(h),b=c({align:f?"split":"center"}),E=n.createElement("div",{className:b.content()},n.createElement("h1",{className:b.eyebrow()},e),n.createElement("h2",{className:b.title({class:a})},t),n.createElement("p",{className:b.subtitle()},o),(d||m)&&n.createElement("div",{className:b.ctas()},d&&n.createElement(l.A,{to:y,size:"xlarge",responsive:!0,variant:"outlined"},d),m&&n.createElement(l.A,{to:g,size:"xlarge",responsive:!0},m,n.createElement(r.A,{"aria-hidden":!0}))),u&&n.createElement("p",{className:b.cost()},n.createElement(s.A,{"aria-hidden":!0,size:18,strokeWidth:1.5}),u));return n.createElement("section",{className:b.section()},n.createElement("div",{className:b.inner()},f?n.createElement("div",{className:"grid grid-cols-1 items-center gap-12 lg:grid-cols-2"},E,n.createElement("div",{className:b.media()},h)):n.createElement(n.Fragment,null,E,h?n.createElement("div",{className:"mx-auto mt-10 w-full max-w-5xl md:mt-12"},h):null)))}},99619(e,t,a){a.d(t,{A:()=>s});var n=a(63696);const r=(0,a(18628).tv)({slots:{section:"box-border mx-auto w-[90%] max-w-4xl py-12 text-center md:py-16",title:"mx-auto max-w-[700px] text-3xl font-semibold tracking-tight text-balance text-foreground md:text-5xl",subtitle:"mx-auto mt-3 max-w-2xl text-lg text-pretty text-secondary-foreground"}}),s=({title:e,subtitle:t})=>{const a=r();return n.createElement("section",{className:a.section()},n.createElement("h2",{className:a.title()},e),t?n.createElement("p",{className:a.subtitle()},t):null)}},96370(e,t,a){e.exports=a.p+"slack-promo__720-av1-f35bad2be9da1030d4cf97471edd6dbe.mp4"},16314(e,t,a){e.exports=a.p+"slack-promo__720-h264-2beb5f1af25f6da5238cc32c71faa1fb.mp4"},574(e){e.exports={FAQs:"HKL1zhys",faqHeader:"GJT4KBqD",questionWrapper:"eAlwzJhe",answer:"Uto6sq4_",questionsWrapper:"PYsVLLD4",question:"RFgRi6Pa",accordionIcon:"rdIwPxUy",open:"mUryD8w2"}},95818(){},30539(){},78348(){},67958(){},34316(){},18738(){},99064(){},76428(e,t,a){e.exports=a.p+"collect-no-padding-e61c8927fc863e737d13c41696e61c9a.webp"},93717(e,t,a){e.exports=a.p+"feature-highlight-3-1x-b7d8bb5284adccf197533ac0a23b1121.webp"},782(e,t,a){e.exports=a.p+"feature-highlight-3-2x-bd61a4ff6bc9258fa7bc2827d5e35cb8.webp"},28361(e,t,a){e.exports=a.p+"hubspot-1-7f54f8d11b321cf80eacf31f8c118e71.avif"},58724(e,t,a){e.exports=a.p+"hubspot-2-82288f6474c08561c4a93fb4f3991b7a.avif"},53683(e,t,a){e.exports=a.p+"hubspot-3-c918e47a515c93cd9dc65e39a61ff236.avif"},10867(e,t,a){e.exports=a.p+"hubspot-logo-a4416fe357a8b169b35b9f005b71af93.webp"},50549(e,t,a){e.exports=a.p+"intercom-1-b3401d773a7407d2b22e2b2236b0d0ce.avif"},80096(e,t,a){e.exports=a.p+"intercom-2-f2454c80f66cb0a773609e256f120f68.avif"},19497(e){e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUwMCIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTIyMS44NjcgMTQwLjc0OGE4LjUzNCA4LjUzNCAwIDAgMS0xNy4wNjcgMFY2NGE4LjUzNCA4LjUzNCAwIDAgMSAxNy4wNjcgMHY3Ni43NDh6bS0yLjk3OCA1My40MTNjLTEuMzE5IDEuMTI5LTMyLjkzIDI3LjY1NS05MC44ODkgMjcuNjU1LTU3Ljk1OCAwLTg5LjU2OC0yNi41MjctOTAuODg3LTI3LjY1NmE4LjUzNSA4LjUzNSAwIDAgMS0uOTI1LTEyLjAzMyA4LjUzIDguNTMgMCAwIDEgMTIuMDEzLS45NDJjLjUwMS40MiAyOC43MjkgMjMuNTYzIDc5LjggMjMuNTYzIDUxLjcxMiAwIDc5LjUwMy0yMy4zMSA3OS43NzgtMjMuNTQ1IDMuNTcxLTMuMDY3IDguOTY4LTIuNjU1IDEyLjAzMy45MjVhO
1C41MzQgOC41MzQgMCAwIDEtLjkyMyAxMi4wMzN6TTM0LjEzMyA2NEE4LjUzNCA4LjUzNCAwIDAgMSA1MS4yIDY0djc2Ljc0OGE4LjUzNCA4LjUzNCAwIDAgMS0xNy4wNjcgMFY2NHptNDIuNjY4LTE3LjA2N2E4LjUzNCA4LjUzNCAwIDAgMSAxNy4wNjYgMHYxMTQuMDAxYTguNTM0IDguNTM0IDAgMCAxLTE3LjA2NiAwdi0xMTR6bTQyLjY2Ni00LjMxOEE4LjUzMiA4LjUzMiAwIDAgMSAxMjggMzQuMDgyYTguNTMyIDguNTMyIDAgMCAxIDguNTM0IDguNTMzdjEyMy43MzNhOC41MzQgOC41MzQgMCAwIDEtMTcuMDY3IDBWNDIuNjE1em00Mi42NjcgNC4zMThhOC41MzQgOC41MzQgMCAwIDEgMTcuMDY2IDB2MTE0LjAwMWE4LjUzNCA4LjUzNCAwIDAgMS0xNy4wNjYgMHYtMTE0ek0yMjQgMEgzMkMxNC4zMjcgMCAwIDE0LjMyNyAwIDMydjE5MmMwIDE3LjY3MiAxNC4zMjcgMzIgMzIgMzJoMTkyYzE3LjY3MyAwIDMyLTE0LjMyOCAzMi0zMlYzMmMwLTE3LjY3My0xNC4zMjctMzItMzItMzJ6IiBmaWxsPSIjMUY4REVEIi8+PC9zdmc+"},85700(e,t,a){e.exports=a.p+"intercom-video-thumbnail-dacba928419e28fef531d98e7ca36e56.avif"},33531(e,t,a){e.exports=a.p+"salesforce-1-5c3281074821b52238e796e2fb9b6d2d.webp"},11162(e,t,a){e.exports=a.p+"salesforce-2-59acfd6a8defd737f9978f88ec226914.webp"},75333(e,t,a){e.exports=a.p+"salesforce-3-7a119260c51602b084e75bb6e52ffa01.webp"},63169(e,t,a){e.exports=a.p+"salesforce-logo-7f7fbdaf6773b9244b6fb4a5e31d7887.svg"},41690(e,t,a){e.exports=a.p+"slack-1-b0cfa320587179ecf768d98c793c3988.avif"},41402(e){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjcuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMjYuNCAxMjciIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDEyNi40IDEyNzsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNFMDFFNUE7fQoJLnN0MXtmaWxsOiMzNkM1RjA7fQoJLnN0MntmaWxsOiMyRUI2N0Q7fQoJLnN0M3tmaWxsOiNFQ0IyMkU7fQo8L3N0eWxlPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNy4yLDgwYzAsNy4zLTUuOSwxMy4yLTEzLjIsMTMuMlMwLjgsODcuMywwLjgsODBTNi43LDY2LjgsMTQsNjYuOGgxMy4yVjgweiBNMzMuOCw4MAoJCWMwLTcuMyw1LjktMTMuMiwxMy4yLTEzLjJTNjAuMiw3Mi43LDYwLjIsODB2MzNjMCw3LjMtNS45LDEzLjItMTMuMiwxMy4ycy0xMy4yLTUuOS0xMy4yLTEzLjJWODB6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDcsMjdjLTcuMywwLTEzLjItNS45LTEzLjItMTMuMlMzOS43LDAuNiw0NywwLjZzMTMuMiw1LjksMTMuMiwxMy4yVjI3SDQ3eiBNNDcsMzMuNwoJCWM3LjMsMCwxMy4yLDUuOSwxMy4yLDEzLjJTNTQuMyw2MC4xLDQ3LDYwLjFIMTMuOWMtNy4zLDAtMTMuMi01LjktMTMuMi0xMy4yczUuOS0xMy4yLDEzLjItMTMuMkg0N3oiLz4KCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05OS45LDQ2LjljMC03LjMsNS45LTEzLjIsMTMuMi0xMy4yYzcuMywwLDEzLjIsNS45LDEzLjIsMTMuMnMtNS45LDEzLjItMTMuMiwxMy4ySDk5LjlWNDYuOXogTTkzLjMsNDYuOQoJCWMwLDcuMy01LjksMTMuMi0xMy4yLDEzLjJjLTcuMywwLTEzLjItNS45LTEzLjItMTMuMlYxMy44YzAtNy4zLDUuOS0xMy4yLDEzLjItMTMuMmM3LjMsMCwxMy4yLDUuOSwxMy4yLDEzLjIKCQlDOTMuMywxMy44LDkzLjMsNDYuOSw5My4zLDQ2Ljl6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNODAuMSw5OS44YzcuMywwLDEzLjIsNS45LDEzLjIsMTMuMmMwLDcuMy01LjksMTMuMi0xMy4yLDEzLjJjLTcuMywwLTEzLjItNS45LTEzLjItMTMuMlY5OS44SDgwLjF6CgkJIE04MC4xLDkzLjJjLTcuMywwLTEzLjItNS45LTEzLjItMTMuMmMwLTcuMyw1LjktMTMuMiwxMy4yLTEzLjJoMzMuMWM3LjMsMCwxMy4yLDUuOSwxMy4yLDEzLjJjMCw3LjMtNS45LDEzLjItMTMuMiwxMy4ySDgwLjF6Ii8+CjwvZz4KPC9zdmc+Cg=="},45200(e,t,a){e.exports=a.p+"zendesk-1-23ca4396b0ed28b5de105621cf11ab12.webp"},88029(e,t,a){e.exports=a.p+"zendesk-2-2bcc21316a0b905159ae06a7cd3faa88.webp"},36690(e,t,a){e.exports=a.p+"zendesk-3-aaa5bae814bdb8bc6c7659e7bd093ca8.webp"},91238(e){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjcuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyMDIuNCAxNTMuNCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAyLjQgMTUzLjQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojMDMzNjNEO30KPC9zdHlsZT4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkzLjUsNDAuNXYxMTIuOUgwTDkzLjUsNDAuNXogTTkzLjUsMGMwLDI1LjgtMjAuOSw0Ni43LTQ2LjcsNDYuN1MwLDI1LjgsMCwwSDkzLjV6IE0xMDguOSwxNTMuNAoJYzAtMjUuOCwyMC45LTQ2LjcsNDYuNy00Ni43czQ2LjcsMjAuOSw0Ni43LDQ2LjdIMTA4Ljl6IE0xMDguOSwxMTIuOVYwaDkzLjVMMTA4LjksMTEyLjlMMTA4LjksMTEyLjl6Ii8+Cjwvc3ZnPgo="},19720(e,t,a){a.d(t,{A:()=>n});const n=(0,a(21727).A)({name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]})},19785(e,t,a){a.d(t,{A:()=>n});const n=(0,a(21727).A)({name:"credit-card",size:24,node:[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}],["path",{d:"M6 14h2",key:"mk7k0u"}]]})},9048(e,t,a){a.d(t,{A:()=>n});const n=(0,a(21727).A)({name:"eye",size:24,node:[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]})},55051(e,t,a){a.d(t,{A:()=>n});const n=(0,a(21727).A)({name:"layers",size:24,node:[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],aliases:["layers-3"]})},35623(e,t,a){a.d(t,{A:()=>n});const n=(0,a(21727).A)({name:"users",size:24,node:[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]})},21811(e,t,a){a.d(t,{A:()=>n});const n=(0,a(21727).A)({name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}
1],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]})}}]);

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.