1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[609],{33706:function(e,t,n){n.d(t,{J:function(){return i},j:function(){return s}});var a=n(67294);let i=(0,a.createContext)({setCrumb:()=>{},setBellDot:()=>{}});function s(){return(0,a.useContext)(i)}},51922:function(e,t,n){n.d(t,{d:function(){return H}});var a=n(85893),i=n(67294),s=n(11163),r=n(41664),l=n.n(r),o=n(73681),c=n(60837),d=n(44548);let u=(0,a.jsx)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M12 3v3M12 18v3M3 12h3M18 12h3M5.6 5.6l2 2M16.4 16.4l2 2M5.6 18.4l2-2M16.4 7.6l2-2"})}),m=(0,a.jsxs)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"9",cy:"8",r:"3"}),(0,a.jsx)("path",{d:"M3 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2"}),(0,a.jsx)("circle",{cx:"17",cy:"8",r:"2.5"}),(0,a.jsx)("path",{d:"M21 18v-1a3.5 3.5 0 0 0-3-3.45"})]}),p=(0,a.jsx)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M4 20V10M10 20V4M16 20v-7M22 20H2"})}),h=(0,a.jsxs)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,a.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,a.jsx)("circle",{cx:"12",cy:"12",r:"1"})]}),f=(0,a.jsxs)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M22 2 11 13"}),(0,a.jsx)("path",{d:"M22 2 15 22l-4-9-9-4z"})]}),x=(0,a.jsxs)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:[(0,a.jsx)("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"}),(0,a.jsx)("path",{d:"M3 9h18M8 9v11"})]}),v=(0,a.jsxs)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,a.jsx)("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"})]}),g=(0,a.jsxs)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:[(0,a.jsx)("rect",{x:"6",y:"10",width:"12",height:"9",rx:"2"}),(0,a.jsx)("path",{d:"M9 10V7a3 3 0 1 1 6 0v3"})]}),b=(0,a.jsxs)("svg",{className:"ri-ico",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M10 17l-5-5 5-5"}),(0,a.jsx)("path",{d:"M5 12h12"}),(0,a.jsx)("path",{d:"M21 19V5a2 2 0 0 0-2-2h-6"})]});function j(){var e,t;let{collapsed:n=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=(0,s.useRouter)(),{tenantContext:r}=(0,o.S)(),{user:j,signOut:N}=(0,c.aC)(),w=null!==(e=null==r?void 0:r.tenant.subdomain)&&void 0!==e?e:"",y="/".concat(w,"/admin"),_=""!==w,{recent:S}=(0,d.V)(),E=S.slice(0,5),C=e=>{if("#"===e)return!1;let t=i.asPath.split("?")[0];return e===y?t===y:t===e||t.startsWith("".concat(e,"/"))},T=e=>{let t=(0,a.jsxs)(a.Fragment,{children:[e.icon,(0,a.jsx)("span",{className:"ri-label",children:e.label})]});return _?(0,a.jsx)(l(),{href:e.href,title:n?e.label:void 0,className:"rail-item".concat(C(e.href)?" is-current":""),children:t},e.label):(0,a.jsx)("span",{title:n?e.label:void 0,"aria-disabled":"true",className:"rail-item",children:t},e.label)},R=null!==(t=null==j?void 0:j.email)&&void 0!==t?t:"",I=R?R.split("@")[0]:"â",P=I.trim().charAt(0).toUpperCase()||"â¢",k=(null==r?void 0:r.tenant.subdomain)?r.tenant.subdomain:"â";return(0,a.jsxs)("aside",{className:"rail".concat(n?" is-collapsed":""),children:[(0,a.jsxs)("div",{className:"rail-head",children:[(0,a.jsx)("div",{className:"rail-mark",children:"C"}),(0,a.jsx)("div",{className:"rail-wordmark",children:"ConsultKit"})]}),(0,a.jsxs)("nav",{className:"rail-nav",children:[[{label:"Assistant",href:"".concat(y,"/assistant"),icon:u}].map(T),(0,a.jsx)("div",{className:"rail-section",children:"Your funnel"}),[{label:"Landing Pages",href:"".concat(y,"/landing-pages"),icon:x},{label:"Leads",href:"".concat(y,"/clients"),icon:m},{label:"Pipeline",href:"".concat(y,"/opportunities"),icon:h},{label:"Campaigns",href:"".concat(y,"/campaigns"),icon:f},{label:"Analytics",href:"".concat(y,"/analytics"),icon:p}].map(T),[{label:"Settings",href:"".concat(y,"/settings/branding"),icon:v}].map(T),E.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"rail-section",children:"Recent"}),E.map(e=>{let t=e.name.trim().charAt(0).toUpperCase()||"â¢",i=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"ri-ava","aria-hidden":!0,
1children:t}),(0,a.jsx)("span",{className:"ri-label",children:e.name})]});if(!_)return(0,a.jsx)("span",{title:n?e.name:void 0,"aria-disabled":"true",className:"rail-item rail-recent",children:i},e.id);let s="/".concat(w,"/admin/clients/").concat(e.id),r=C(s);return(0,a.jsx)(l(),{href:s,title:n?e.name:void 0,className:"rail-item rail-recent".concat(r?" is-viewing":""),"aria-current":r?"page":void 0,children:i},e.id)})]})]}),(0,a.jsxs)("div",{className:"rail-foot",children:[(0,a.jsxs)("a",{href:"mailto:[email protected]?subject=Bug%20report",className:"rail-item",children:[g,(0,a.jsx)("span",{className:"ri-label",children:"Report a bug"})]}),(0,a.jsxs)("button",{type:"button",className:"rail-item",onClick:N,title:"Sign out","aria-label":"Sign out",style:{background:"transparent",border:"none",width:"100%",textAlign:"left",cursor:"pointer"},children:[b,(0,a.jsx)("span",{className:"ri-label",children:"Sign out"})]}),(0,a.jsxs)("div",{className:"rail-user",children:[(0,a.jsx)("div",{className:"rail-user-ava",children:P}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"rail-user-name",children:I}),(0,a.jsx)("div",{className:"rail-user-sub",children:k})]})]})]})]})}var N=n(721),w=n(61959),y=n(40797),_=n(33633),S=n(52542),E=n(44101),C=n(27695),T=n(14235),R=n(50039),I=n(46611),P=n(45062),k=n(77918),M=n(23432),A=n(77249);n(28599),n(42520);let{Tour:D}=A.default,L=(0,i.createContext)({tourCompleted:!1,tourDismissedSession:!1,isTourRunning:!1,startTour:()=>{},dismissTourSession:()=>{},demoClientId:null}),O=()=>(0,i.useContext)(L);var B=n(15987);let F=()=>{let{tenantContext:e}=(0,o.S)(),{isTourRunning:t}=O(),n=(0,s.useRouter)(),[r,l]=(0,i.useState)(!1),[c,d]=(0,i.useState)([]),[u,m]=(0,i.useState)(0),[p,h]=(0,i.useState)(!1),[f,x]=(0,i.useState)(!1),[v,g]=(0,i.useState)(!0),b=(0,i.useRef)(null),j=(0,i.useRef)(null),N=(0,i.useCallback)(async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e)try{n?x(!0):h(!0);let a=localStorage.getItem("userEmail")||"",i=await fetch("/api/notifications?limit=".concat(15,"&offset=").concat(t,"&user_email=").concat(encodeURIComponent(a)),{headers:{"x-tenant-subdomain":e.tenant.subdomain}});if(!i.ok)throw Error("Failed to fetch");let s=await i.json();n?d(e=>[...e,...s.notifications]):d(s.notifications),m(s.unreadCount),g(15===s.notifications.length)}catch(e){console.error("Error fetching notifications:",e)}finally{h(!1),x(!1)}},[e]),A=(0,i.useCallback)(()=>{!f&&v&&N(c.length,!0)},[N,c.length,f,v]),D=(0,i.useCallback)(async t=>{if(e)try{await fetch("/api/notifications/mark-read",{method:"POST",headers:{"Content-Type":"application/json","x-tenant-subdomain":e.tenant.subdomain},body:JSON.stringify({notificationId:t})}),d(e=>e.map(e=>e.id===t?{...e,read:!0}:e)),m(e=>Math.max(0,e-1))}catch(e){console.error("Error marking as read:",e)}},[e]),L=(0,i.useCallback)(async()=>{if(e)try{await fetch("/api/notifications/mark-read",{method:"POST",headers:{"Content-Type":"application/json","x-tenant-subdomain":e.tenant.subdomain},body:JSON.stringify({markAll:!0})}),d(e=>e.map(e=>({...e,read:!0}))),m(0)}catch(e){console.error("Error marking all as read:",e)}},[e]),F=(0,i.useCallback)(e=>{e.read||D(e.id),e.link&&(n.push(e.link),l(!1))},[D,n]);return(0,i.useEffect)(()=>{if(!r)return;let e=e=>{b.current&&!b.current.contains(e.target)&&l(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[r]),(0,i.useEffect)(()=>{N();let e=setInterval(()=>N(),3e4);return()=>clearInterval(e)},[N]),(0,i.useEffect)(()=>{r&&(g(!0),N())},[r,N]),(0,i.useEffect)(()=>{let e=j.current;if(!e||!r)return;let t=()=>{e.scrollTop+e.clientHeight>=e.scrollHeight-40&&A()};return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[r,A]),(0,a.jsxs)("div",{className:"relative",ref:b,children:[(0,a.jsxs)("button",{onClick:()=>{t||l(!r)},className:"relative p-2 text-slate-500 hover:text-slate-900 hover:bg-slate-100 rounded-lg transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-forest-700/20 ".concat(t?"pointer-events-none opacity-50":""),"aria-label":"Notifications","data-testid":"notification-bell-trigger",children:[(0,a.jsx)(k.Z,{className:"h-5 w-5"}),u>0&&(0,a.jsx)("span",{className:"absolute top-1.5 right-1.5 h-2 w-2 rounded-full bg-red-500 ring-2 ring-white"})]}),r&&(0,a.jsxs)("div",{className:"absolute right-0 mt-1.5 w-[340px] bg-white rounded-xl shadow-lg border border-slate-200 z-50 overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-3.5 py-2.5 border-b border-slate-100",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-[13px] font-semibold text-slate-900",children:"Notifications"}),u>0&&(0,a.jsx)("span",{className:"text-[10px] font-medium bg-slate-900 text-white rounded-full min-w-[18px] h-[18px] flex items-center justify-center leading-none",children:u})]}),u>0&&(0,a.jsx)("button",{onClick:L,className:"text-[11px] text-slate-400 hover:text-slate-600 font-medium transition-all duration-150",children:"Mark all read"})]}),(0,a.jsx)("div",{ref:j,className:"max-h-[400px] overflow-y-auto",children:p&&0===c.length?(0,a.jsxs)("div",{className:"px-3.5 py-10 text-center",children:[(0,a.jsx)(M.Z,{className:"h-5 w-5 text-slate-300 mx-auto mb-2 animate-spin"}),(0,a.jsx)("p",{className:"text-xs text-slate-400",children:"Loading..."})]}):0===c.length?(0,a.jsxs)("div",{className:"px-3.5 py-10 text-center",children:[(0,a.jsx)(k.Z,{className:"h-7 w-7 text-slate-200 mx-auto mb-2"}),(0,a.jsx)("p",{className:"text-xs text-slate-400",children:"No notifications"})]}):(0,a.jsxs)(a.Fragment,{children:[c.map(e=>(0,a.jsxs)("button",{"data-testid":"notification-row",onClick:()=>F(e),className:"group w-full text-left px-3.5 py-2.5 flex items-start gap-2.5 hover:bg-slate-50 transition-all duration-150 border-b border-slate-100/60 last:border-b-0 ".concat(e.link?"cursor-pointer":"cursor-default"),children:[(0,a.jsxs)("div",{className:"relative flex-shrink-0 mt-0.5",children:[(0,a.jsx)("div",{className:"h-6 w-6 rounded-md bg-slate-50 flex items-center justify-center",children:function(e){let t="h-3.5 w-3.5";switch(e){case"assessment_completed":case"deliverable_ready":return(0,a.jsx)(w.Z,{className:"".concat(t," text-forest-700")});case"questionnaire_completed":case"all_questionnaires_completed":return(0,a.jsx)(y.Z,{className:"".concat(t," text-forest-700")});case"report_completed":return(0,a.jsx)(_.Z,{className:"".concat(t," text-forest-700")});case"report_failed":case"credit_warning":return(0,a.jsx)(S.Z,{className:"".concat(t," text-red-600")});case"assessment_held":return(0,a.jsx)(E.Z,{className:"".concat(t," text-amber-600")});case"usage_warning":return(0,a.jsx)(S.Z,{className:"".concat(t," text-amber-600")});case"payment_failed":case"subscription_canceled":return(0,a.jsx)(C.Z,{className:"".concat(t," text-red-600")});case"payment_succeeded":return(0,a.jsx)(T.Z,{className:"".concat(t," text-forest-700")});case"trial_ending":case"checkpoint_waiting":return(0,a.jsx)(R.Z,{className:"".concat(t," text-amber-600")});case"credit_topup_purchased":return(0,a.jsx)(I.Z,{className:"".concat(t," text-forest-700")});case"account_paused":return(0,a.jsx)(E.Z,{className:"".concat(t," text-slate-500")});case"account_resumed":return(0,a.jsx)(P.Z,{className:"".concat(t," text-forest-700")});default:return(0,a.jsx)(k.Z,{className:"".concat(t," text-slate-500")})}}(e.type)}),!e.read&&(0,a.jsx)("div",{className:"absolute -top-0.5 -left-0.5 h-[7px] w-[7px] rounded-full bg-forest-700 ring-2 ring-white"})]}),(0,a.jsxs)("div",{className:"flex-1 min-w-0 pt-px",children:[(0,a.jsx)("p",{className:"text-[13px] leading-[1.4] font-semibold ".concat(e.read?"text-slate-600":"text-slate-900"),children:e.title}),(0,a.jsx)("p",{className:"text-[12px] leading-[1.4] mt-0.5 text-slate-500",children:e.message}),(0,a.jsx)("p",{className:"text-[11px] text-slate-400 mt-0.5 font-medium tracking-wide",children:(0,B.Q)(new Date(e.created_at),{addSuffix:!0})})]})]},e.id)),f&&(0,a.jsx)("div",{className:"py-3 flex justify-center",children:(0,a.jsx)(M.Z,{className:"h-4 w-4 text-slate-300 animate-spin"})}),!v&&c.length>15&&(0,a.jsx)("div",{className:"py-2.5 text-center",children:(0,a.jsx)("p",{className:"text-[11px] text-slate-300",children:"All caught up"})})]})})]})]})};function V(e){var t;let{crumbNow:n="Dashboard"}=e,{tenantContext:i}=(0,o.S)(),s=null!==(t=null==i?void 0:i.tenant.company_name)&&void 0!==t?t:"â";return(0,a.jsxs)("div",{className:"topbar",children:[(0,a.jsxs)("div",{className:"crumb",children:[(0,a.jsx)("span",{children:s}),(0,a.jsx)("span",{className:"crumb-sep",children:"/"}),(0,a.jsx)("span",{className:"crumb-now",children:n})]}),(0,a.jsxs)("div",{className:"topbar-right",children:[(0,a.jsx)(N.A,{}),(0,a.jsx)(F,{})]})]})}var Z=n(33706);function q(e){var t;let{children:n,variant:r="default",crumbNow:l,hasBellDot:o}=e,c=(0,s.useRouter)(),d=(0,i.useRef)(null),[u,m]=(0,i.useState)(void 0),[p,h]=(0,i.useState)(void 0),f=c.pathname;(0,i.useEffect)(()=>{m(void 0),h(void 0)},[f]),(0,i.useEffect)(()=>
1{if("assistant"===r){let e=d.current;e&&(e.scrollTop=0)}else window.scrollTo(0,0)},[c.asPath,r]);let x=(0,i.useMemo)(()=>({setCrumb:e=>m(e),setBellDot:e=>h(e)}),[]),v=null!==(t=null!=p?p:o)&&void 0!==t&&t,g="assistant"===r;return(0,a.jsx)(Z.J.Provider,{value:x,children:(0,a.jsx)("div",{className:"admin-root",children:(0,a.jsxs)("div",{className:"dp-app".concat(g?" is-assistant":""),children:[(0,a.jsx)(j,{collapsed:g}),(0,a.jsxs)("div",{className:"main".concat(g?" is-assistant":""),children:[!g&&(0,a.jsx)(V,{crumbNow:null!=u?u:l,hasBellDot:v}),(0,a.jsx)("div",{ref:d,className:g?"main-bleed":"main-body",children:n})]})]})})})}function H(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.jsx)(q,{variant:t.variant,crumbNow:t.crumbNow,hasBellDot:t.hasBellDot,children:e})}},721:function(e,t,n){n.d(t,{A:function(){return o}});var a=n(85893),i=n(41664),s=n.n(i),r=n(73681),l=n(52874);function o(){var e,t;let{tenantContext:n}=(0,r.S)(),i=(0,l.B)(),o=null!==(e=null==n?void 0:n.tenant.subdomain)&&void 0!==e?e:"",c=i.isLoading?"â":String(null!==(t=i.total)&&void 0!==t?t:0);return(0,a.jsxs)(s(),{href:o?"/".concat(o,"/admin/billing"):"#",className:"credits-pill",title:"".concat(c," credits â open billing"),"aria-label":"".concat(c," credits"),children:[(0,a.jsxs)("svg",{className:"ico",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,a.jsx)("path",{d:"M15 9.5c-.5-1.2-1.7-2-3-2s-3 .8-3 2.2 1.3 1.8 3 2.3 3 1 3 2.3-1.7 2.2-3 2.2-2.5-.8-3-2"}),(0,a.jsx)("path",{d:"M12 6.5v11"})]}),(0,a.jsx)("span",{className:"credits-val",children:c})]})}},81998:function(e,t,n){n.d(t,{Z:function(){return m}});var a=n(85893),i=n(67294),s=n(11163),r=n(60837),l=n(73681),o=n(38474);let c=()=>(0,a.jsx)("div",{className:"min-h-screen bg-slate-50 flex items-center justify-center",children:(0,a.jsx)("div",{className:"flex flex-col items-center",children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"w-2 h-2 rounded-full bg-slate-300 animate-[pulse_1.4s_ease-in-out_infinite]"}),(0,a.jsx)("span",{className:"w-2 h-2 rounded-full bg-slate-300 animate-[pulse_1.4s_ease-in-out_0.2s_infinite]"}),(0,a.jsx)("span",{className:"w-2 h-2 rounded-full bg-slate-300 animate-[pulse_1.4s_ease-in-out_0.4s_infinite]"})]})})}),d=()=>(0,a.jsx)("div",{className:"flex-1 flex items-center justify-center py-32",children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"w-2 h-2 rounded-full bg-slate-300 animate-[pulse_1.4s_ease-in-out_infinite]"}),(0,a.jsx)("span",{className:"w-2 h-2 rounded-full bg-slate-300 animate-[pulse_1.4s_ease-in-out_0.2s_infinite]"}),(0,a.jsx)("span",{className:"w-2 h-2 rounded-full bg-slate-300 animate-[pulse_1.4s_ease-in-out_0.4s_infinite]"})]})}),u=e=>{let{fullScreen:t,onRetry:n}=e,i=(0,a.jsxs)("div",{className:"max-w-sm w-full bg-white border border-slate-200 rounded-xl shadow-sm p-6 text-center",children:[(0,a.jsx)("h2",{className:"text-base font-semibold text-slate-900 mb-1",children:"Couldn't load your workspace"}),(0,a.jsx)("p",{className:"text-sm text-slate-600 mb-4",children:"Something interrupted loading your workspace."}),(0,a.jsx)("button",{type:"button",onClick:n,className:"inline-flex items-center justify-center px-[18px] py-[9px] text-[13px] font-medium text-white bg-forest-700 hover:bg-forest-800 rounded-lg transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-forest-700/20",children:"Try again"})]});return t?(0,a.jsx)("div",{className:"min-h-screen bg-slate-50 flex items-center justify-center p-4",children:i}):(0,a.jsx)("div",{className:"flex-1 flex items-center justify-center py-32",children:i})};var m=e=>{let{children:t,requiresSubscription:n=!0}=e,{user:m,session:p,loading:h}=(0,r.aC)(),{tenantContext:f,loading:x,error:v,refetchTenant:g}=(0,l.S)(),b=(0,s.useRouter)(),j=b.pathname.startsWith("/[tenant]/admin"),N=j?d:c,w=!!m&&!!p,y="forbidden"===v||"unauthenticated"===v&&!w,_="unavailable"===v||"unauthenticated"===v&&w;if((0,i.useEffect)(()=>{if(!h&&!x){if(!m){console.log("[PROTECTED ROUTE] No user, redirecting to login"),b.push("/login");return}if(n&&!f){if(y){b.replace("/login");return}"unauthenticated"===v&&console.error("[PROTECTED ROUTE] tenant context returned 401 despite a live session â not redirecting (would loop back from /login); showing the retry panel instead",{pathname:b.pathname});return}if(n&&f){var e;(0,o.Pm)({subscription_status:f.tenant.subscription_status,stripe_subscription_id:null!==(e=f.tenant.stripe_subscription_id)&&void 0!==e?e:null})||b.push("/".concat(f.tenant.subdomain,"/admin/billing/select-plan"))}}},[h,x,m,f,v,y,n]),h||x)return(0,a.jsx)(N,{});if(!m||!p)return null;if(n){var S;if(!f)return _?(0,a.jsx)(u,{fullScreen:!j,onRetry:g}):y?null:(0,a.jsx)(N,{});if(!(0,o.Pm)({subscription_status:f.tenant.subscription_status,stripe_subscription_id:null!==(S=f.tenant.stripe_subscription_id)&&void 0!==S?S:null}))return null}return(0,a.jsx)(a.Fragment,{children:t})}},52874:function(e,t,n){n.d(t,{B:function(){return c},e:function(){return o}});var a=n(67294),i=n(16976),s=n(68444),r=n(73681);let l="credits:invalidated";function o(){window.dispatchEvent(new Event(l))}
1function c(){var e,t,n,o,c,d,u;let{tenantContext:m}=(0,r.S)(),{data:p,error:h,isLoading:f,mutate:x}=(0,i.ZP)(m?["".concat(window.location.origin,"/api/credits/balance"),{"x-tenant-subdomain":m.tenant.subdomain}]:null,e=>{let[t,n]=e;return(0,s._)(t,n)},{refreshInterval:3e4,revalidateOnFocus:!0,dedupingInterval:5e3});(0,a.useEffect)(()=>{let e=()=>{x()};return window.addEventListener(l,e),()=>window.removeEventListener(l,e)},[x]);let v=null==p?void 0:p.balance;return{balance:v,total:null!==(e=null==v?void 0:v.total)&&void 0!==e?e:0,subscription:null!==(t=null==v?void 0:v.subscription)&&void 0!==t?t:0,rollover:null!==(n=null==v?void 0:v.rollover)&&void 0!==n?n:0,topup:null!==(o=null==v?void 0:v.topup)&&void 0!==o?o:0,reserved:null!==(c=null==v?void 0:v.reserved)&&void 0!==c?c:0,tier:null!==(d=null==v?void 0:v.tier)&&void 0!==d?d:"starter",monthlyCredits:null!==(u=null==v?void 0:v.monthly_credits)&&void 0!==u?u:0,isLoading:f,error:h,mutate:x}}},44548:function(e,t,n){n.d(t,{V:function(){return d}});var a=n(67294),i=n(73681),s=n(92611);let r=[],l=new Map;function o(e){return"".concat("recentClients:").concat(e)}function c(e){if(!e)return r;let t=l.get(e);return void 0===t&&(t=function(e){if(!e)return r;try{let t=window.localStorage.getItem(o(e));if(!t)return r;let n=JSON.parse(t);if(!Array.isArray(n))return r;let a=n.filter(e=>e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.name&&"number"==typeof e.visitedAt);return 0===a.length?r:a}catch(e){return r}}(e),l.set(e,t)),t}function d(){var e;let{tenantContext:t}=(0,i.S)(),n=null!==(e=null==t?void 0:t.tenant.subdomain)&&void 0!==e?e:"";return{recent:(0,a.useSyncExternalStore)(e=>(function(e,t){if(!e)return()=>{};let n=o(e),a="recentClients:".concat(e,":update"),i=a=>{a.key===n&&(l.delete(e),t())},s=()=>t();return window.addEventListener("storage",i),window.addEventListener(a,s),()=>{window.removeEventListener("storage",i),window.removeEventListener(a,s)}})(n,e),()=>c(n),()=>r),track:(0,a.useCallback)(e=>{var t;if(!n||!(null==e?void 0:e.id))return;let a=c(n),i=a.find(t=>t.id===e.id);if(i&&(null===(t=a[0])||void 0===t?void 0:t.id)===e.id&&i.name===(e.name||s.jX))return;let r=a.filter(t=>t.id!==e.id);!function(e,t){if(e)try{window.localStorage.setItem(o(e),JSON.stringify(t)),l.delete(e),window.dispatchEvent(new Event("recentClients:".concat(e,":update")))}catch(e){}}(n,[{id:e.id,name:e.name||s.jX,visitedAt:Date.now()},...r].slice(0,10))},[n])}}},38474:function(e,t,n){function a(e){let t=["active","trialing","past_due","unpaid"].includes(e.subscription_status),n=!!e.stripe_subscription_id;return t&&n}n.d(t,{Pm:function(){return a}}),n(54381)},92611:function(e,t,n){n.d(t,{$3:function(){return d},Ak:function(){return i},DI:function(){return b},Dd:function(){return h},EB:function(){return v},EQ:function(){return u},GP:function(){return o},Ht:function(){return C},KC:function(){return N},KG:function(){return g},NS:function(){return r},SZ:function(){return E},Vz:function(){return c},YY:function(){return j},ed:function(){return y},fG:function(){return T},fh:function(){return m},gW:function(){return l},jX:function(){return f},kU:function(){return a},lY:function(){return R},lh:function(){return I},mF:function(){return p},nH:function(){return w},ng:function(){return s},vM:function(){return _},zy:function(){return x}});let a={hot:"HOT",warm:"WARM",cold:"COLD",not_scored:"Not scored yet",sample:"SAMPLE"},i={1:"analysis",2:"research",3:"tool selection",4:"consultant intel",5:"report writing"},s="generation",r={queued:e=>"Submitted ".concat(e,"."),generatingTitle:"Generating",generatingSub:e=>"started ".concat(e),generatingCard:e=>"Started ".concat(e,"."),failed:e=>"Failed during ".concat(e,". Your credit has been returned."),stalled:e=>"Stopped after ".concat(e," minutes without progress. Your credit has been returned."),notEmailed:"The report generated but the email never sent.",notEmailedSub:e=>"generated ".concat(e,", email never sent"),deliveredTitle:e=>"Emailed ".concat(e,"."),deliveredOpens:(e,t)=>"Opened ".concat(e,", last seen ").concat(t,".")},l={held:"Held",queued:"Queued",generating:"Generating",failed:"Generation failed",stalled:"Generation stalled",ready_not_emailed:"Ready â email didn't send",delivered:"Delivered"},o={retry:"Retry",retrying:"Retryingâ¦",release:"Release",releasing:"Releasingâ¦",copyLink:"Copy link",viewReport:"View report"},c={action:"Delete lead",confirmTitle:"Delete this lead?",confirmBody:e=>"".concat(e," will be permanently removed, along with its report, deliverables, and assistant conversations. Any email sequence still running for this person stops too. This can't be und
1one."),confirm:"Delete",cancel:"Cancel",done:e=>"".concat(e," deleted"),failed:"Couldn't delete this lead. Try again."},d={heldTitle:"Held",failedTitle:"Failed",stalledTitle:"Stalled",generatingTitle:"Generating",queuedTitle:"Queued",notEmailedTitle:"Ready â not emailed",deliveredTitle:"Delivered",failedSub:e=>"failed during ".concat(e),stalledSub:e=>"stalled during ".concat(e),generatingSub:e=>"started ".concat(e),deliveredSub:e=>"emailed ".concat(e),notEmailedSub:e=>"generated ".concat(e,", email never sent"),heldSub:"waiting for release"},u={headers:{company:"Company",temperature:"Temperature",deliverable:"Deliverable",status:"Status",value:"Approx. value"},reportNoun:"Report",title:"Leads",subtitle:"Everyone who has taken your assessment, and where their report is. Work you deliver continues on each lead's page.",pipelineNotYet:"Not in the pipeline yet",pipelineStep:(e,t)=>"Email ".concat(e," of ").concat(t),pipelineOpen:"Open in Pipeline",plateTitle:"Leads",newLead:"New lead",errorLoad:"Couldnât load leads. Retry to try again.",filterAll:"All",filterHot:"Hot",filterWarm:"Warm",filterCold:"Cold",filterNotScored:"Not scored",filterFailed:"Status: Failed",open:"Open",footerValue:"Report-estimated value",footerFailed:"failed",matches:e=>"".concat(e," ").concat(1===e?"match":"matches"),showing:(e,t,n)=>"Showing ".concat(e,"â").concat(t," of ").concat(n),noResults:"No results",emptyNone:"No leads yet â share your audit link to bring the first one in.",emptyNoMatch:"No leads match the current filters."},m={updated:e=>"updated ".concat(e)},p={title:"New lead",submit:"Add lead",submitting:"Adding...",failed:"Failed to create lead"},h={backList:"Leads",backToList:"Back to leads",unavailable:"Lead unavailable"},f="Lead",x={started:"Report regeneration started",failedPrefix:"Couldn't retry:"},v={started:"Report released â generating now.",insufficient:"Not enough credits to release this report. Top up and try again.",failedPrefix:"Couldn't release this report.",reasons:{blocked_status:"This account is not active.",trial_limit_reached:"This account has reached its trial limit.",credits_exhausted:"This account does not have enough credits.",tenant_not_found:"This account could not be found.",cannot_afford:"This account cannot afford to release this report right now.",not_found:"This report no longer exists.",not_held:"This report is no longer held.",trigger_failed:"The report generator failed to start. Try again."}},g="Couldn't create this deliverable. The service didn't respond. Try again.",b={action:"Stop sequence",confirm:"Stop it?",stopping:"Stoppingâ¦",inSequence:e=>'In "'.concat(e,'" â stop the email sequence'),stopped:e=>"".concat(e," removed from the email sequence."),failed:"Couldn't stop the sequence. Try again."},j={needsAttention:"Needs attention",newThisWeek:"New leads this week",hottest:"Hottest right now",held:"Held for release",failedPart:e=>"".concat(e," failed"),notEmailedPart:e=>"".concat(e," not emailed"),heldPart:e=>"".concat(e," held")},N={cell:e=>"Opened \xd7".concat(e),notViewed:"Not viewed",notTracked:"Not tracked",none:"â",untrackedLong:"Report views not tracked for this lead"},w={readiness:(e,t)=>"Readiness ".concat(e,"/100 (").concat(t,")"),opened:e=>"Opened the report ".concat(e),completed:e=>"Completed ".concat(e)},y={summary:(e,t,n,a,i)=>"Last ".concat(e," days: ~").concat(t," visitors â ").concat(n," started â ").concat(a," completed â ").concat(i," opened their report."),stageVisited:"Visited",stageStarted:"Started",stageCompleted:"Completed",stageOpened:"Opened report",ofVisits:e=>"".concat(e,"% of visits"),ofStarts:e=>"".concat(e,"% of starts"),ofCompletions:e=>"".concat(e,"% of completions"),fnote:e=>"~ approximate. Median completion time ".concat(e,"."),fnoteNoMedian:"~ approximate.",qmodCap:(e,t)=>"Where starters drop, question by question (".concat(e," â ").concat(t,")"),worstDrop:e=>"Biggest drop â".concat(e,"%"),worstDropAria:(e,t)=>"Biggest drop: question ".concat(e,", â").concat(t,"%"),empty:"No funnel activity in this window yet.",completionTimeTitle:"Completion time (all time)"},_={assessments:"Assessments (30 days)",ofStarted:e=>"of ".concat(e," started"),oldestInFlight:e=>"(oldest ".concat(function(e){if(e<60)return"".concat(e,"m");let t=Math.round(e/60);return t<48?"".concat(t," h"):"".concat(Math.round(e/1440)," d")}(e),")"),readiness:"Readiness of your leads",axisLow:"Low",axisMedium:"Medium",axisHigh:"High",reportOpens:"Report opens (30 days)"};function S(e){if(e>=1e6){let t=e/1e6;return"".concat(t>=10?Math.round(t):t.toFixed(1),"m")}return e>=1e3?"".concat(Math.round(e/1e3),"k"):"".concat(Math.round(e))}function E(e,t,n){let a=function(e){try{var t,n;let a=new Intl.NumberFormat("en-GB",{style:"currency",currency:e,currencyDisplay:"narrowSymbol"}).formatToParts(0);return null!==(n=null===(t=a.find(e=>"currency"===e.type))||void 0===t?void 0:t.value)&&void 0!==n?n:"$"}catch(e){return"$"}}(n),i=S(e),s=S(t);return i===s?"".concat(a).concat(i,"/yr"):"".concat(a).concat(i,"â").concat(a).concat(s,"/yr")}function C(e){return 1===e?"once":2===e?"twice":"".concat(e," times")}function T(e){let t=new Date(e);return Number.isNaN(t.getTime())?"":t.toLocaleDateString("en-GB",{day:"numeric",month:"short"})}function R(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Date,n=new Date(e).getTime();if(Number.isNaN(n))return"";let a=Math.max(0,Math.round((t.getTime()-n)/6e4));if(a<1)return"a moment ago";if(a<60)return"".concat(a," min ago");let i=Math.round(a/60);if(i<24)return"".concat(i,"h ago");let s=Math.round(i/24);return 1===s?"yesterday":s<7?"".concat(s," days ago"):T(e)}let I={heading:"Follow-up",stateLabel:"Pipeline",sequenceLabel:"Sequence",emailLabel:"Email",noSequence:"No sequence running",emailOk:"Reachable",stop:"Stop",cancel:"Cancel"}},54381:function(e,t,n){n.d(t,{JK:function(){return s},Jd:function(){return r}});var a=n(34155);let i={starter:{name:"ConsultKit Pro",price:49,assessments:10,overagePrice:0,priceId:a.env.STRIPE_PRICE_SUBSCRIPTION_ID||a.env.STRIPE_PRICE_STARTER_ID}
1,professional:{name:"Professional (Legacy)",price:499,assessments:100,overagePrice:12,priceId:a.env.STRIPE_PRICE_PROFESSIONAL_ID},scale:{name:"Scale (Legacy)",price:997,assessments:400,overagePrice:12,priceId:a.env.STRIPE_PRICE_SCALE_ID},agency:{name:"Agency",price:499,assessments:1200,overagePrice:0,priceId:a.env.STRIPE_PRICE_AGENCY_ID}},s={...i.starter,assessmentsIncluded:i.starter.assessments};a.env.STRIPE_PRICE_SINGLE_ID,a.env.STRIPE_PRICE_STARTER_ID,a.env.STRIPE_PRICE_PROFESSIONAL_ID,a.env.STRIPE_PRICE_AGENCY_ID,a.env.STRIPE_PRICE_STARTER_V2_ID,a.env.STRIPE_PRICE_PROFESSIONAL_V2_ID,a.env.STRIPE_PRICE_AGENCY_V2_ID;let r={starter_v2:{name:"Starter",price:49,monthlyCredits:250,priceId:a.env.STRIPE_PRICE_STARTER_V2_ID},professional_v2:{name:"Professional",price:99,monthlyCredits:650,priceId:a.env.STRIPE_PRICE_PROFESSIONAL_V2_ID},agency_v2:{name:"Agency",price:199,monthlyCredits:1700,priceId:a.env.STRIPE_PRICE_AGENCY_V2_ID}}},42520:function(e,t,n){n.d(t,{os:function(){return a}}),n(34155);function a(e,t){return"".concat("https://www.consultkit.ai".trim(),"/report/view/").concat(e)}}}]);
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.