PageSourceSearch

https://thechaincademy.com/assets/Footer-C2mwZlj3.js

js thechaincademy.com collected 2026-10-05 22:45:13 UTC 13,998 bytes, 25 lines download raw bytes

vendor: 7,872 bytes, lines 1-25
1import{c as b,a as J,r as i,e as w,j as e,P as x,b as g,d as C,S as Q,D as ee,t as te,v as oe,u as re,h as v,X as ae,o as se,k as ne,L as m,B as y}from"./index-CNPsGjEa.js";import{R as ie,h as le,a as ce,F as de,u as N}from"./index-D9eVhfiJ.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const ue=b("Linkedin",[["path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z",key:"c2jq9f"}],["rect",{width:"4",height:"12",x:"2",y:"9",key:"mk3on5"}],["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}]]);/**
7 * @license lucide-react v0.462.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const fe=b("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/**
12 * @license lucide-react v0.462.0 - ISC
13 *
14 * This source code is licensed under the ISC license.
15 * See the LICENSE file in the root directory of this source tree.
16 */const he=b("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/**
17 * @license lucide-react v0.462.0 - ISC
18 *
19 * This source code is licensed under the ISC license.
20 * See the LICENSE file in the root directory of this source tree.
21 */const me=b("Twitter",[["path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z",key:"pff0z6"}]]);var D="Dialog",[E,Ae]=J(D),[ge,u]=E(D),P=t=>{const{__scopeDialog:o,children:r,open:n,defaultOpen:s,onOpenChange:a,modal:c=!0}=t,d=i.useRef(null),l=i.useRef(null),[h=!1,j]=re({prop:n,defaultProp:s,onChange:a});return e.jsx(ge,{scope:o,triggerRef:d,contentRef:l,contentId:N(),titleId:N(),descriptionId:N(),open:h,onOpenChange:j,onOpenToggle:i.useCallback(()=>j(Z=>!Z),[j]),modal:c,children:r})};P.displayName=D;var T="DialogTrigger",O=i.forwardRef((t,o)=>{const{__scopeDialog:r,...n}=t,s=u(T,r),a=w(o,s.triggerRef);return e.jsx(x.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":k(s.open),...n,ref:a,onClick:g(t.onClick,s.onOpenToggle)})});O.displayName=T;var R="DialogPortal",[xe,I]=E(R,{forceMount:void 0}),M=t=>{const{__scopeDialog:o,forceMount:r,children:n,container:s}=t,a=u(R,o);return e.jsx(xe,{scope:o,forceMount:r,children:i.Children.map(n,c=>e.jsx(C,{present:r||a.open,children:e.jsx(oe,{asChild:!0,container:s,children:c})}))})};M.displayName=R;var p="DialogOverlay",S=i.forwardRef((t,o)=>{const r=I(p,t.__scopeDialog),{forceMount:n=r.forceMount,...s}=t,a=u(p,t.__scopeDialog);return a.modal?e.jsx(C,{present:n||a.open,children:e.jsx(pe,{...s,ref:o})}):null});S.displayName=p;var pe=i.forwardRef((t,o)=>{const{__scopeDialog:r,...n}=t,s=u(p,r);return e.jsx(ie,{as:Q,allowPinchZoom:!0,shards:[s.contentRef],children:e.jsx(x.div,{"data-state":k(s.open),...n,ref:o,style:{pointerEvents:"auto",...n.style}})})}),f="DialogContent",A=i.forwardRef((t,o)=>{const r=I(f,t.__scopeDialog),{forceMount:n=r.forceMount,...s}=t,a=u(f,t.__scopeDialog);return e.jsx(C,{present:n||a.open,children:a.modal?e.jsx(be,{...s,ref:o}):e.jsx(ve,{...s,ref:o})})});A.displayName=f;var be=i.forwardRef((t,o)=>{const r=u(f,t.__scopeDialog),n=i.useRef(null),s=w(o,r.contentRef,n);return i.useEffect(()=>{const a=n.current;if(a)return le(a)},[]),e.jsx(F,{...t,ref:s,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:g(t.onCloseAutoFocus,a=>{var c;a.preventDefault(),(c=r.triggerRef.current)==null||c.focus()}),onPointerDownOutside:g(t.onPointerDownOutside,a=>{const c=a.detail.originalEvent,d=c.button===0&&c.ctrlKey===!0;(c.button===2||d)&&a.preventDefault()}),onFocusOutside:g(t.onFocusOutside,a=>a.preventDefault())})}),ve=i.forwardRef((t,o)=>{const r=u(f,t.__scopeDialog),n=i.useRef(!1),s=i.useRef(!1);return e.jsx(F,{...t,ref:o,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{var c,d;(c=t.onCloseAutoFocus)==null||c.call(t,a),a.defaultPrevented||(n.current||(d=r.triggerRef.current)==null||d.focus(),a.preventDefault()),n.current=!1,s.current=!1},onInteractOutside:a=>{var l,h;(l=t.onInteractOutside)==null||l.call(t,a),a.defaultPrevented||(n.current=!0,a.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const c=a.target;((h=r.triggerRef.current)==null?void 0:h.contains(c))&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&s.current&&a.preventDefault()}})}),F=i.forwardRef((t,o)=>{const{__scopeDialog:r,trapFocus:n,onOpenAutoFocus:s,onCloseAutoFocus:a,...c}=t,d=u(f,r),l=i.useRef(null),h=w(o,l);return ce(),e.jsxs(e.Fragment,{children:[e.jsx(de,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:s,onUnmountAutoFocus:a,children:e.jsx(ee,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":k(d.open),...c,ref:h,onDismiss:()=>d.onOpenChange(!1)})}),e.jsxs(e.Fragment,{children:[e.jsx(je,{titleId:d.titleId}),e.jsx(Ne,{contentRef:l,descriptionId:d.descriptionId})]})]})}),_="DialogTitle",L=i.forwardRef((t,o)=>{const{__scopeDialog:r,...n}=t,s=u(_,r);return e.jsx(x.h2,{id:s.titleId,...n,ref:o})});L.displayName=_;var W="DialogDescription",z=i.forwardRef((t,o)=>{const{__scopeDialog:r,...n}=t,s=u(W,r);return e.jsx(x.p,{id:s.descriptionId,...n,ref:o})});z.displayName=W;var B="DialogClose",G=i.forwardRef((t,o)=>{const{__scopeDialog:r,...n}=t,s=u(B,r);return e.jsx(x.button,{type:"button",...n,ref:o,onClick:g(t.onClick,()=>s.onOpenChange(!1))})});G.displayName=B;function k(t){return t?"open":"closed"}var $="DialogTitleWarning",[Fe,H]=te($,{contentName:f,titleName:_,docsSlug:"dialog"}),je=({titleId:t})=>{const o=H($),r=`\`${o.contentName}\` requires a \`${o.titleName}\` for the component to be accessible for screen reader users.
22
23If you want to hide the \`${o.titleName}\`, you can wrap it with our VisuallyHidden component.
24
25For more information, see https://radix-ui.com/primitives/docs/components/${o.docsSlug}`;return i.useEffect(()=>{t&&(document.getElementById(t)||console.error(r))},[r,t]),null},ye="DialogDescriptionWarning",Ne=({contentRef:t,descriptionId:o})=>{const n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${H(ye).contentName}}.`;return i.useEffect(()=>{var a;const s=(a=t.current)==null?void 0:a.getAttribute("aria-describedby");o&&s&&(document.getElementById(o)||console.warn(n))},[n,t,o]),null},we=P,Ce=O,De=M,V=S,Y=A,X=L,q=z,Re=G;const _e=we,ke=Ce,Ee=De,K=i.forwardRef(({className:t,...o},r)=>e.jsx(V,{className:v("fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...o,ref:r}));K.displayName=V.displayName;const Pe=se("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4  border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),U=i.forwardRef(({side:t="right",className:o,children:r,...n},s)=>e.jsxs(Ee,{children:[e.jsx(K,{}),e.jsxs(Y,{ref:s,className:v(Pe({side:t}),o),...n,children:[r,e.jsxs(Re,{className:"absolute right-4 top-4 roun
25ded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[e.jsx(ae,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));U.displayName=Y.displayName;const Te=i.forwardRef(({className:t,...o},r)=>e.jsx(X,{ref:r,className:v("text-lg font-semibold text-foreground",t),...o}));Te.displayName=X.displayName;const Oe=i.forwardRef(({className:t,...o},r)=>e.jsx(q,{ref:r,className:v("text-sm text-muted-foreground",t),...o}));Oe.displayName=q.displayName;const Ie=[{label:"Platform",href:"/#platform"},{label:"How it works",href:"/#how-it-works"},{label:"Who it is for",href:"/#who-for"},{label:"Career development",href:"https://jobs.thechaincademy.com/auth",external:!0},{label:"Recruitment",href:"/"}],Le=({onDemoRequest:t})=>{const[o,r]=i.useState(!1),[n,s]=i.useState(!1),a=ne(),c=Ie.filter(l=>!(l.href==="/"&&a.pathname==="/"));i.useEffect(()=>{const l=()=>r(window.scrollY>10);return window.addEventListener("scroll",l,{passive:!0}),()=>window.removeEventListener("scroll",l)},[]);const d=()=>{s(!1),t?t():window.location.assign("/#demo")};return e.jsx("header",{className:`fixed inset-x-0 top-0 z-50 h-20 border-b transition-colors ${o?"border-border bg-background/90 backdrop-blur-xl":"border-transparent bg-background/40"}`,children:e.jsxs("div",{className:"container mx-auto flex h-full items-center justify-between px-4 md:px-8",children:[e.jsx(m,{to:"/","aria-label":"The Chaincademy homepage",children:e.jsx("img",{src:"/lovable-uploads/chaincademy-light-logo.webp",alt:"The Chaincademy",className:"h-9 w-auto",width:155,height:36})}),e.jsx("nav",{className:"hidden items-center gap-6 xl:flex","aria-label":"Main navigation",children:c.map(l=>l.external?e.jsx("a",{href:l.href,target:"_blank",rel:"noopener noreferrer",className:"text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",children:l.label},l.href):e.jsx("a",{href:l.href,className:"text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",children:l.label},l.href))}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{className:"hidden sm:inline-flex",onClick:d,children:"Book a demo"}),e.jsxs(_e,{open:n,onOpenChange:s,children:[e.jsx(ke,{asChild:!0,children:e.jsx(y,{variant:"ghost",size:"icon",className:"xl:hidden","aria-label":"Open menu",children:e.jsx(he,{})})}),e.jsxs(U,{className:"border-border bg-background",children:[e.jsx("nav",{className:"mt-12 flex flex-col gap-6","aria-label":"Mobile navigation",children:c.map(l=>e.jsx("a",{href:l.href,onClick:()=>s(!1),className:"font-display text-xl font-bold text-foreground",children:l.label},l.href))}),e.jsx(y,{className:"mt-10 w-full",onClick:d,children:"Book a demo"})]})]})]})]})})},We=()=>e.jsx("footer",{className:"border-t border-border bg-background py-14",children:e.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[e.jsxs("div",{className:"grid gap-10 md:grid-cols-[1.5fr_1fr_1fr]",children:[e.jsxs("div",{children:[e.jsx(m,{to:"/","aria-label":"The Chaincademy homepage",children:e.jsx("img",{src:"/lovable-uploads/chaincademy-light-logo.webp",alt:"The Chaincademy",className:"h-8 w-auto",width:137,height:32,loading:"lazy"})}),e.jsx("p",{className:"mt-5 max-w-sm text-sm leading-relaxed text-muted-foreground",children:"White-label recruitment, skills development and career progression infrastructure for modern organisations."}),e.jsxs("div",{className:"mt-6 flex gap-3",children:[e.jsx("a",{href:"https://www.linkedin.com/company/thechaincademy",target:"_blank",rel:"noopener noreferrer","aria-label":"The Chaincademy on LinkedIn",className:"rounded-md border border-border p-2 text-muted-foreground hover:text-foreground",children:e.jsx(ue,{className:"h-4 w-4"})}),e.jsx("a",{href:"https://x.com/thechaincademy",target:"_blank",rel:"noopener noreferrer","aria-label":"The Chaincademy on X",className:"rounded-md border border-border p-2 text-muted-foreground hover:text-foreground",children:e.jsx(me,{className:"h-4 w-4"})}),e.jsx("a",{href:"mailto:[email protected]","aria-label":"Email The Chaincademy",className:"rounded-md border border-border p-2 text-muted-foreground hover:text-foreground",children:e.jsx(fe,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-display font-bold",children:"Platform"}),e.jsxs("ul",{className:"mt-5 space-y-3 text-sm text-muted-foreground",children:[e.jsx("li",{children:e.jsx("a",{href:"/#platform",className:"hover:text-foreground",children:"Features"})}),e.jsx("li",{children:e.jsx("a",{href:"/#how-it-works",className:"hover:text-foreground",children:"How it works"})}),e.jsx("li",{children:e.jsx("a",{href:"/#who-for",className:"hover:text-foreground",children:"Who it is for"})}),e.jsx("li",{children:e.jsx("a",{href:"/#pricing",className:"hover:text-foreground",children:"Pricing"})})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-display font-bold",children:"Company"}),e.jsxs("ul",{className:"mt-5 space-y-3 text-sm text-muted-foreground",children:[e.jsx("li",{children:e.jsx(m,{to:"/blog",className:"hover:text-foreground",children:"Insights"})}),e.jsx("li",{children:e.jsx("a",{href:"mailto:[email protected]",className:"hover:text-foreground",children:"Contact"})}),e.jsx("li",{children:e.jsx(m,{to:"/privacy-policy",className:"hover:text-foreground",children:"Privacy Policy"})}),e.jsx("li",{children:e.jsx(m,{to:"/terms",className:"hover:text-foreground",children:"Terms"})}),e.jsx("li",{children:e.jsx(m,{to:"/cookies",className:"hover:text-foreground",children:"Cookies"})})]})]})]}),e.jsxs("div",{className:"mt-12 flex flex-col gap-3 border-t border-border pt-7 text-xs text-muted-foreground sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("p",{children:["© ",new Date().getFullYear()," The Chaincademy. All rights reserved."]}),e.jsx("p",{children:"Built for better hiring and stronger internal progression."})]})]})});export{We as F,ue as L,fe as M,Le as N,me as T};

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.