feat: add calendly booking links
This commit is contained in:
parent
2757e36bdd
commit
614eded6b4
@ -2,6 +2,11 @@ export const publicCoachSite = {
|
||||
workspaceName: 'Coaching SaaS Workspace',
|
||||
footerLine: 'Coaching beyond the session.',
|
||||
assessmentPath: '/intake/?package=leadership-assessment',
|
||||
calendly: {
|
||||
assessmentUrl: 'https://calendly.com/your-coach/coaching-assessment',
|
||||
oneOnOneUrl: 'https://calendly.com/your-coach/one-on-one-coaching-session',
|
||||
packageConsultUrl: 'https://calendly.com/your-coach/package-consult',
|
||||
},
|
||||
socialLinks: [
|
||||
{
|
||||
label: 'LinkedIn',
|
||||
@ -46,7 +51,8 @@ export const publicCoachSite = {
|
||||
name: 'Leadership Assessment',
|
||||
price: 'Intro',
|
||||
bookingLabel: 'Book assessment',
|
||||
bookingPath: '/intake/?package=leadership-assessment',
|
||||
bookingPath: 'https://calendly.com/your-coach/coaching-assessment',
|
||||
intakePath: '/intake/?package=leadership-assessment',
|
||||
copy: 'A focused first step for founders and senior leaders who want to clarify the coaching agenda.',
|
||||
items: [
|
||||
'intake review',
|
||||
@ -59,7 +65,8 @@ export const publicCoachSite = {
|
||||
name: 'Founder Coaching',
|
||||
price: 'Monthly',
|
||||
bookingLabel: 'Book monthly coaching',
|
||||
bookingPath: '/intake/?package=founder-coaching',
|
||||
bookingPath: 'https://calendly.com/your-coach/one-on-one-coaching-session',
|
||||
intakePath: '/intake/?package=founder-coaching',
|
||||
copy: 'Ongoing 1:1 coaching with session memory, commitments, resources, and between-session accountability.',
|
||||
items: [
|
||||
'two sessions per month',
|
||||
@ -72,7 +79,8 @@ export const publicCoachSite = {
|
||||
name: 'Executive Operating Rhythm',
|
||||
price: 'Custom',
|
||||
bookingLabel: 'Book package consult',
|
||||
bookingPath: '/intake/?package=executive-operating-rhythm',
|
||||
bookingPath: 'https://calendly.com/your-coach/package-consult',
|
||||
intakePath: '/intake/?package=executive-operating-rhythm',
|
||||
copy: 'A deeper engagement for leaders navigating delegation, decision rights, and team operating cadence.',
|
||||
items: [
|
||||
'leadership themes',
|
||||
|
||||
30
frontend/src/components/BookingLink.tsx
Normal file
30
frontend/src/components/BookingLink.tsx
Normal file
@ -0,0 +1,30 @@
|
||||
import Link from 'next/link';
|
||||
import React from 'react';
|
||||
|
||||
type BookingLinkProps = {
|
||||
href: string;
|
||||
children: React.ReactNode;
|
||||
className?: string;
|
||||
};
|
||||
|
||||
export default function BookingLink({
|
||||
href,
|
||||
children,
|
||||
className,
|
||||
}: BookingLinkProps) {
|
||||
const isExternal = /^https?:\/\//.test(href);
|
||||
|
||||
if (isExternal) {
|
||||
return (
|
||||
<a href={href} className={className} target='_blank' rel='noreferrer'>
|
||||
{children}
|
||||
</a>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Link href={href} className={className}>
|
||||
{children}
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
import Link from 'next/link';
|
||||
import BookingLink from './BookingLink';
|
||||
import { publicCoachSite } from '../coachingSite';
|
||||
|
||||
const links = [
|
||||
@ -30,12 +31,12 @@ export default function PublicSiteNav() {
|
||||
))}
|
||||
</nav>
|
||||
|
||||
<Link
|
||||
href={publicCoachSite.assessmentPath}
|
||||
<BookingLink
|
||||
href={publicCoachSite.calendly.assessmentUrl}
|
||||
className='rounded-none bg-[#35b7a5] px-5 py-2.5 text-sm font-semibold text-white transition hover:brightness-105'
|
||||
>
|
||||
Start assessment
|
||||
</Link>
|
||||
Schedule assessment
|
||||
</BookingLink>
|
||||
</div>
|
||||
|
||||
<nav className='mx-auto mt-2 flex max-w-6xl gap-4 overflow-x-auto border border-[#19192d]/10 bg-white px-4 py-3 text-sm font-semibold text-[#19192d] md:hidden'>
|
||||
|
||||
@ -3,6 +3,7 @@ import type { ReactElement } from 'react';
|
||||
import Head from 'next/head';
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import BookingLink from '../components/BookingLink';
|
||||
import PublicSiteNav from '../components/PublicSiteNav';
|
||||
import LayoutGuest from '../layouts/Guest';
|
||||
import { getPageTitle } from '../config';
|
||||
@ -55,8 +56,11 @@ export default function AboutCoach() {
|
||||
{publicCoachSite.coach.aboutIntro}
|
||||
</p>
|
||||
<div className='mt-9 flex flex-wrap gap-3'>
|
||||
<Link href={publicCoachSite.assessmentPath} className={`rounded-none px-7 py-4 font-semibold ${ui.button}`}>
|
||||
Book assessment
|
||||
<BookingLink href={publicCoachSite.calendly.assessmentUrl} className={`rounded-none px-7 py-4 font-semibold ${ui.button}`}>
|
||||
Schedule assessment
|
||||
</BookingLink>
|
||||
<Link href={publicCoachSite.assessmentPath} className='rounded-none border border-[#19192d]/10 bg-white px-7 py-4 font-semibold text-[#19192d]'>
|
||||
Send intake
|
||||
</Link>
|
||||
<Link
|
||||
href='/services/'
|
||||
@ -140,9 +144,9 @@ export default function AboutCoach() {
|
||||
Start with an assessment and bring context into the first call.
|
||||
</h2>
|
||||
<div className='mt-8 flex justify-center'>
|
||||
<Link href={publicCoachSite.assessmentPath} className={`rounded-none px-8 py-4 font-semibold ${ui.button}`}>
|
||||
Book assessment
|
||||
</Link>
|
||||
<BookingLink href={publicCoachSite.calendly.assessmentUrl} className={`rounded-none px-8 py-4 font-semibold ${ui.button}`}>
|
||||
Schedule assessment
|
||||
</BookingLink>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ import type { ReactElement } from 'react';
|
||||
import Head from 'next/head';
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import BookingLink from '../components/BookingLink';
|
||||
import PublicSiteNav from '../components/PublicSiteNav';
|
||||
import { publicCoachSite } from '../coachingSite';
|
||||
import LayoutGuest from '../layouts/Guest';
|
||||
@ -180,12 +181,18 @@ export default function Starter() {
|
||||
captures what makes your coaching yours, so clients stay connected
|
||||
to the work between sessions.
|
||||
</p>
|
||||
<div className='mt-9 flex justify-center'>
|
||||
<Link
|
||||
href={publicCoachSite.assessmentPath}
|
||||
<div className='mt-9 flex flex-wrap justify-center gap-3'>
|
||||
<BookingLink
|
||||
href={publicCoachSite.calendly.assessmentUrl}
|
||||
className={`rounded-none px-10 py-5 text-lg font-semibold ${ui.button}`}
|
||||
>
|
||||
Book assessment
|
||||
Schedule assessment
|
||||
</BookingLink>
|
||||
<Link
|
||||
href={publicCoachSite.assessmentPath}
|
||||
className='rounded-none border border-[#19192d]/10 bg-white px-10 py-5 text-lg font-semibold text-[#19192d]'
|
||||
>
|
||||
Send intake
|
||||
</Link>
|
||||
</div>
|
||||
<p className={`mt-5 text-lg ${ui.muted}`}>
|
||||
@ -525,12 +532,12 @@ export default function Starter() {
|
||||
Designed for real client work.
|
||||
</h2>
|
||||
</div>
|
||||
<Link
|
||||
href={publicCoachSite.assessmentPath}
|
||||
<BookingLink
|
||||
href={publicCoachSite.calendly.assessmentUrl}
|
||||
className={`rounded-none px-6 py-3 text-center font-semibold ${ui.button}`}
|
||||
>
|
||||
Book assessment
|
||||
</Link>
|
||||
Schedule assessment
|
||||
</BookingLink>
|
||||
</div>
|
||||
<div className='grid grid-cols-1 gap-4 md:grid-cols-3'>
|
||||
{publicCoachSite.testimonials.map((item) => (
|
||||
@ -581,12 +588,12 @@ export default function Starter() {
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<Link
|
||||
href={publicCoachSite.assessmentPath}
|
||||
<BookingLink
|
||||
href={publicCoachSite.calendly.assessmentUrl}
|
||||
className={`mt-8 inline-flex rounded-none px-7 py-4 font-semibold ${ui.button}`}
|
||||
>
|
||||
Book assessment
|
||||
</Link>
|
||||
Schedule assessment
|
||||
</BookingLink>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@ -4,6 +4,7 @@ import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import { useRouter } from 'next/router';
|
||||
import React from 'react';
|
||||
import BookingLink from '../components/BookingLink';
|
||||
import { publicCoachSite } from '../coachingSite';
|
||||
import LayoutGuest from '../layouts/Guest';
|
||||
import { getPageTitle } from '../config';
|
||||
@ -139,6 +140,21 @@ export default function Intake() {
|
||||
Share what you want to work on. Your coach can review this, create
|
||||
a client record, and prepare the first session around your goals.
|
||||
</p>
|
||||
<div className='mt-7 border border-[#19192d]/10 bg-white p-5'>
|
||||
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#35b7a5]'>
|
||||
Prefer to book first?
|
||||
</p>
|
||||
<p className='mt-2 text-sm leading-6 text-[#72798a]'>
|
||||
Use Calendly to schedule the first assessment, then send intake
|
||||
context when you are ready.
|
||||
</p>
|
||||
<BookingLink
|
||||
href={publicCoachSite.calendly.assessmentUrl}
|
||||
className='mt-4 inline-flex rounded-none bg-[#35b7a5] px-5 py-3 text-sm font-semibold text-white transition hover:brightness-105'
|
||||
>
|
||||
Schedule on Calendly
|
||||
</BookingLink>
|
||||
</div>
|
||||
<div className='mt-8 overflow-hidden border border-[#19192d]/10 bg-white'>
|
||||
<Image
|
||||
src='/images/coaching/coaching-intake.jpg'
|
||||
|
||||
@ -3,6 +3,7 @@ import type { ReactElement } from 'react';
|
||||
import Head from 'next/head';
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import BookingLink from '../components/BookingLink';
|
||||
import PublicSiteNav from '../components/PublicSiteNav';
|
||||
import LayoutGuest from '../layouts/Guest';
|
||||
import { getPageTitle } from '../config';
|
||||
@ -76,8 +77,11 @@ export default function Services() {
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<Link href={item.bookingPath} className={`mt-7 inline-flex justify-center rounded-none px-6 py-4 font-semibold ${ui.button}`}>
|
||||
<BookingLink href={item.bookingPath} className={`mt-7 inline-flex justify-center rounded-none px-6 py-4 font-semibold ${ui.button}`}>
|
||||
{item.bookingLabel}
|
||||
</BookingLink>
|
||||
<Link href={item.intakePath} className='mt-3 inline-flex justify-center rounded-none border border-[#19192d]/10 bg-white px-6 py-3 text-sm font-semibold text-[#19192d]'>
|
||||
Send intake first
|
||||
</Link>
|
||||
</div>
|
||||
))}
|
||||
@ -125,9 +129,9 @@ export default function Services() {
|
||||
Start with intake, then convert the lead into a client workspace.
|
||||
</h2>
|
||||
<div className='mt-8 flex justify-center'>
|
||||
<Link href={publicCoachSite.assessmentPath} className={`rounded-none px-8 py-4 font-semibold ${ui.button}`}>
|
||||
Book assessment
|
||||
</Link>
|
||||
<BookingLink href={publicCoachSite.calendly.assessmentUrl} className={`rounded-none px-8 py-4 font-semibold ${ui.button}`}>
|
||||
Schedule assessment
|
||||
</BookingLink>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user