{"version":3,"file":"js/293-101e6690d6be276e1987.js","mappings":"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","sources":["webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/Container.jsx","webpack://daocloud/./app/javascript/hooks/useIsClient.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/NextAvailable.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/BookDemoSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/Buttons.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/BottomCTA.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/CopySection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/CalendarSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/CustomWebsiteSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/FAQSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/TopNav.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/TrustpilotWidget.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/HeroSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/MarketplaceSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/NewPhotoshootSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/NewPricingSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/OneClickBookingSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/VideoTestimonialsSection.jsx","webpack://daocloud/./app/javascript/pages/PractitionerLandingPage/PractitionerLandingPage.jsx"],"sourcesContent":["import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport AnimatedSection from \"../ProProfileShared/AnimatedSection\"\n\nconst Container = ({ className, animate = true, children, ...rest }) => {\n if (!animate)\n return (\n <div className={twMerge(\"relative mx-auto max-w-[1216px] px-8 lg:max-w-[420px] lg:px-5\", className)} {...rest}>\n {children}\n </div>\n )\n else\n return (\n <AnimatedSection\n className={twMerge(\"relative mx-auto max-w-[1216px] px-8 lg:max-w-[420px] lg:px-5\", className)}\n {...rest}>\n {children}\n </AnimatedSection>\n )\n}\n\nexport default Container\n","import { useState, useEffect } from \"react\"\n\n// Use this if you want to ensure that the code only runs on the client side.\n// Useful for preventing errors when rendering on the server.\nconst useIsClient = () => {\n const [isClient, setIsClient] = useState(false)\n\n useEffect(() => {\n setIsClient(true)\n }, [])\n\n return isClient\n}\n\nexport default useIsClient\n","import { ArrowUpIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport timezone from \"dayjs/plugin/timezone\"\nimport utc from \"dayjs/plugin/utc\"\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport useIsClient from \"../../hooks/useIsClient\"\n\nimport { useNextAvailable } from \"./PractitionerLandingPage\"\n\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nexport const formatNextAvailableDate = (isoString) => {\n const userTimezone = dayjs.tz.guess()\n return dayjs(isoString).tz(userTimezone).format(\"dddd [at] h:mm A z\")\n}\n\nconst NextAvailable = ({ className }) => {\n const isClient = useIsClient()\n const { nextAvailableTime } = useNextAvailable()\n\n if (!isClient) return null\n if (!nextAvailableTime?.startTime) return null\n\n const readableTime = formatNextAvailableDate(nextAvailableTime.startTime)\n\n return (\n <div className={twMerge(\"inline-flex items-center justify-start gap-2 text-gray-dark\", className)}>\n <ArrowUpIcon className=\"h-6 w-6\" />\n <div className=\"text-center\">\n <span>Next available: </span>\n <span className=\"font-bold\">{readableTime}</span>\n </div>\n </div>\n )\n}\n\nexport default NextAvailable\n","import React from \"react\"\nimport { useCalendlyEventListener, InlineWidget } from \"react-calendly\"\n\nimport Container from \"./Container\"\nimport { formatNextAvailableDate } from \"./NextAvailable\"\nimport { useNextAvailable } from \"./PractitionerLandingPage\"\n\nconst BookDemoSection = () => {\n const [iframeHeight, setIframeHeight] = React.useState(750)\n const { nextAvailableTime } = useNextAvailable()\n const readableTime = nextAvailableTime?.startTime && formatNextAvailableDate(nextAvailableTime.startTime)\n\n useCalendlyEventListener({\n onPageHeightResize: (e) => {\n setIframeHeight(e.data.payload.height)\n }\n })\n\n return (\n <div id=\"book-demo\" className=\"py-8 pb-36 lg:pb-16\">\n <Container>\n <div className=\"text-center\">\n <div className=\"font-serif text-[32px] font-extrabold leading-[48px] lg:text-[22px] lg:leading-[32px]\">\n Schedule a Demo\n </div>\n {readableTime && (\n <div className=\"text-2xl leading-9 lg:text-base lg:leading-normal\">Next available {readableTime}</div>\n )}\n </div>\n <div className=\"mx-auto w-[1000px] lg:mt-10 lg:w-full\" style={{ height: iframeHeight }}>\n <InlineWidget url=\"https://calendly.com/healdotmepro/meet-heal-me-clone\" styles={{ height: iframeHeight }} />\n </div>\n </Container>\n </div>\n )\n}\n\nexport default BookDemoSection\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport const Button = ({ className, href = \"/book_demo\", text = \"Schedule a Demo Today!\" }) => (\n <a\n href={href}\n className={twMerge(\n \"flex h-12 w-fit items-center justify-center rounded bg-black px-6 text-center text-base font-bold text-white shadow hover:shadow-landingPageButtonHover active:shadow-landingPageButtonPressed lg:h-10 lg:px-4\",\n className\n )}>\n {text}\n </a>\n)\n\nexport const LargeButton = ({ className, text, href }) => (\n <Button\n className={twMerge(\n \"h-16 bg-teal px-16 py-2 text-xl hover:shadow-landingPageTealButtonHover active:shadow-landingPageTealButtonPressed lg:h-12\",\n className\n )}\n text={text}\n href={href}\n />\n)\n\nexport const OutlineButton = ({ className, text = \"Get Started Now!\", ...rest }) => (\n <LargeButton\n className={twMerge(\n \"border border-teal bg-white text-teal hover:border-2 hover:shadow-none active:border-[3px] active:shadow-none\",\n className\n )}\n text={text}\n {...rest}\n />\n)\n","import { ArrowUpIcon } from \"@heroicons/react/24/outline\"\nimport React from \"react\"\n\nimport { LargeButton } from \"./Buttons\"\nimport Container from \"./Container\"\nimport NextAvailable from \"./NextAvailable\"\n\nconst BottomCTA = () => (\n <div className=\"relative h-[1044px] overflow-hidden bg-cover bg-center pb-10 pt-20 lg:h-[1241px]\">\n <Container>\n <div className=\"text-center\">\n <div className=\"mb-10 lg:mb-4\">\n <div className=\"mb-4 font-serif text-[56px] font-extrabold leading-[72px] lg:text-center lg:text-[40px] lg:leading-[48px] md:px-10\">\n <span>Your</span> <span className=\"text-teal\">all-in-one</span> <span>growth platform</span>\n </div>\n <div className=\"text-2xl leading-9 lg:text-center lg:text-lg lg:leading-7\">\n Join Heal.me and level-up your holistic practice today\n </div>\n </div>\n <div className=\"mb-4 mt-[56px] flex justify-center lg:mt-10\">\n <LargeButton className=\"lg:w-full\" />\n </div>\n <NextAvailable className=\"lg:hidden\" />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/arrows-up.svg\"\n alt=\"Up arrow\"\n className=\"mx-auto mt-8 h-[166px] w-[314px] translate-x-2 text-center lg:mt-4\"\n />\n </div>\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/payments-large.png\"\n alt=\"Payments\"\n className=\"absolute left-[-100px] top-[172px] h-[233px] rounded-lg shadow-landingPage lg:hidden lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/rate-session.png\"\n alt=\"New rating notification\"\n className=\"absolute right-[-113px] top-[172px] w-[240px] rounded-lg shadow-landingPage lg:left-[13px] lg:right-unset lg:top-[758px] lg:w-[160px] lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/website-desktop-long.png\"\n alt=\"Desktop website\"\n className=\"absolute left-0 top-[475px] w-[211px] rounded-lg shadow-landingPage lg:left-unset lg:right-[-16px] lg:top-[950px] lg:w-[91px] lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/notification/new-booking-large.png\"\n alt=\"New booking notification\"\n className=\"absolute left-[-64px] top-[560px] z-10 w-[360px] rounded-lg bg-white shadow-landingPage lg:hidden lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/ps-5-1.jpg\"\n alt=\"Virtual practitioner\"\n className=\"absolute left-[392px] top-[411px] w-[404px] rounded-lg shadow-landingPage lg:static lg:mt-[-44px] lg:w-full lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/marketplace.png\"\n alt=\"Marketplace\"\n className=\"absolute right-[-106px] top-[408px] w-[325px] rounded-lg shadow-landingPage lg:hidden lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/calendar.png\"\n alt=\"Calendar\"\n className=\"absolute right-[80px] top-[703px] w-[240px] rounded-lg shadow-landingPage lg:right-[12px] lg:top-[733px] lg:w-[122px] lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/website-mobile-long.png\"\n alt=\"Mobile website\"\n className=\"absolute right-[-75px] top-[697px] w-[52px] rounded-lg shadow-landingPage lg:left-[30px] lg:right-unset lg:top-[922px] lg:w-[38px] lg:shadow-landingPageMobile\"\n />\n </Container>\n <div className=\"absolute bottom-[150px] flex w-full justify-center text-gray-dark\">\n <button\n className=\"flex flex-col items-center gap-4\"\n onClick={() => {\n window.scrollTo({\n top: 0,\n behavior: \"smooth\"\n })\n }}>\n <ArrowUpIcon className=\"h-6 w-6\" />\n <div>Go to top</div>\n </button>\n </div>\n <div className=\"absolute bottom-10 flex w-full justify-center text-gray-dark\">© 2024 Heal.me Inc.</div>\n </div>\n)\n\nexport default BottomCTA\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nconst CopySection = ({ title, subtitle, className, children }) => (\n <div\n className={twMerge(\n \"inline-flex h-[420px] w-[632px] flex-col items-start justify-center gap-4 lg:h-fit lg:w-full\",\n className\n )}>\n <div className=\"self-stretch font-serif text-[32px] font-extrabold leading-[48px] lg:text-[22px] lg:leading-[32px]\">\n {title}\n </div>\n {subtitle && <div className=\"self-stretch text-[22px] leading-[32px] lg:text-lg\">{subtitle}</div>}\n {children}\n </div>\n)\n\nexport default CopySection\n","import React from \"react\"\n\nimport Container from \"./Container\"\nimport CopySection from \"./CopySection\"\n\nconst CalendarSection = () => (\n <div className=\"lg:py-8\">\n <Container className=\"flex h-[735px] items-center justify-between px-8 lg:h-auto lg:max-w-[380px] lg:flex-col lg:items-center lg:gap-8\">\n <CopySection className=\"max-w-[480px]\" title=\"Manage your calendar, clients, payments, and more.\">\n <ul className=\"space-y-2\">\n <li className=\"flex items-center gap-2\">\n <span>🗓ï¸</span>\n <span>\n <span className=\"font-bold\">Calendar & CRM</span> for easy scheduling\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>📱</span>\n <span>\n <span className=\"font-bold\">Mobile app</span> for on-the-go management\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>📆</span>\n <span>\n <span className=\"font-bold\">Calendar sync</span> with Google, Outlook, & iCloud\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>ðŸ“</span>\n <span>\n <span className=\"font-bold\">Client notes & Intake forms</span> for documentation\n </span>\n </li>\n </ul>\n </CopySection>\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/calendar-large.png\"\n alt=\"Desktop website\"\n className=\"absolute left-[548px] top-0 w-[374px] shadow-landingPage lg:static lg:mx-auto lg:mt-10 lg:w-[320px] lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/payments-large.png\"\n alt=\"Desktop website\"\n className=\"absolute left-[687px] top-[393px] w-[374px] shadow-landingPage lg:static lg:mx-auto lg:hidden lg:w-[320px] lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/hipaa.png\"\n alt=\"HIPAA compliance\"\n className=\"absolute left-[948px] top-[210px] w-[160px] lg:static lg:mx-auto lg:hidden lg:w-[320px]\"\n />\n <div className=\"flex flex-col items-start gap-16 lg:flex-row lg:flex-wrap lg:items-center lg:justify-center lg:gap-8\">\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/icon/outlook.svg\"\n alt=\"Outlook logo\"\n className=\"h-16 bg-transparent opacity-50 shadow-landingPage lg:w-10 lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/icon/ical.svg\"\n alt=\"iCal logo\"\n className=\"h-16 bg-transparent opacity-50 shadow-landingPage lg:w-10 lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/icon/google-calendar.svg\"\n alt=\"Google calendar logo\"\n className=\"h-16 bg-transparent opacity-50 shadow-landingPage lg:w-10 lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/icon/exchange.svg\"\n alt=\"Exchange logo\"\n className=\"h-16 bg-transparent opacity-50 shadow-landingPage lg:w-10 lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/icon/365.svg\"\n alt=\"Office 365 logo\"\n className=\"h-16 bg-transparent opacity-50 shadow-landingPage lg:w-10 lg:shadow-landingPageMobile\"\n />\n </div>\n </Container>\n </div>\n)\n\nexport default CalendarSection\n","import React, { useState, useEffect } from \"react\"\n\nimport Container from \"./Container\"\nimport CopySection from \"./CopySection\"\n\nconst CustomWebsiteSection = () => {\n const [currentImage, setCurrentImage] = useState(0)\n const images = [\n \"/images/practitioner-landing/graphics/lp-elements/laptop-screen-1.png\",\n \"/images/practitioner-landing/graphics/lp-elements/laptop-screen-2.png\",\n \"/images/practitioner-landing/graphics/lp-elements/laptop-screen-3.png\",\n \"/images/practitioner-landing/graphics/lp-elements/laptop-screen-4.png\",\n \"/images/practitioner-landing/graphics/lp-elements/laptop-screen-5.png\",\n \"/images/practitioner-landing/graphics/lp-elements/laptop-screen-6.png\"\n ]\n\n useEffect(() => {\n const timer = setInterval(() => {\n setCurrentImage((prev) => (prev + 1) % images.length)\n }, 4000)\n\n return () => clearInterval(timer)\n }, [])\n\n return (\n <div className=\"pb-20 pt-10 lg:py-8\">\n <Container>\n <CopySection title=\"Upgrade to a beautiful, modern website that attracts & converts new clients.\">\n <ul className=\"space-y-2\">\n <li className=\"flex items-center gap-2\">\n <span>🌿</span>\n <span>\n <span className=\"font-bold\">Professionally designed</span> for holistic practices\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>✨</span>\n <span>\n <span className=\"font-bold\">Personalized and tailored</span> to your ideal client\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>🔎</span>\n <span>\n <span className=\"font-bold\">SEO-optimized</span> for more organic reach\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>💬</span>\n <span>\n <span className=\"font-bold\">24/7 Lead capture</span> to engage new clients\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>â˜ï¸</span>\n <span>\n <span className=\"font-bold\">Website hosting</span> included & fully managed\n </span>\n </li>\n </ul>\n </CopySection>\n <img\n src=\"/images/practitioner-landing/graphics/lp-elements/laptop.png\"\n alt=\"Laptop\"\n className=\"absolute left-[641px] top-0 h-[476px] overflow-hidden rounded-lg lg:static lg:mx-auto lg:mt-10 lg:h-auto lg:w-full\"\n />\n {images.map((img, index) => (\n <img\n key={img}\n src={img}\n alt={`Website example ${index + 1}`}\n loading=\"lazy\"\n className={`absolute left-[731px] top-[22px] h-[362px] w-[578px] transition-opacity duration-1000 lg:left-1/2 lg:right-auto lg:top-[320px] lg:hidden lg:aspect-[578/362] lg:w-[calc(100%-100px)] lg:-translate-x-1/2 ${\n currentImage === index ? \"opacity-100\" : \"opacity-0\"\n }`}\n />\n ))}\n </Container>\n </div>\n )\n}\n\nexport default CustomWebsiteSection\n","import { PlusIcon, MinusIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState, useRef, useEffect } from \"react\"\n\nimport Container from \"./Container\"\n\nconst faqItems = [\n {\n question: \"Is Heal.me HIPAA & PIPEDA Compliant?\",\n answer: \"Yes. We have industry leading security and are fully compliant.\"\n },\n {\n question: \"Does Heal.me work with group practices and wellness centers?\",\n answer:\n \"The platform is designed for solo practitioners, but some group practices are getting individual accounts for each practitioner - and that works too!\"\n },\n {\n question: \"In what countries does Heal.me operate?\",\n answer: \"Currently US & Canada only\"\n },\n {\n question: \"What type of practitioners does Heal.me work with?\",\n answer:\n \"We accept practitioners who are licensed or certified in a holistic healing therapy. Note: we do not accept life coaching, astrology, psychic medium, or tarot services.\"\n },\n {\n question: \"Is Heal.me built for accepting insurance?\",\n answer: \"No, we are focused on cash practices. We do however support HSA/FSA billing and reimbursements.\"\n },\n {\n question: \"Does Heal.me take any commission on bookings?\",\n answer:\n \"No. As a practitioner, you keep everything you earn. We have Stripe & Square integrations to accept credit card payments, and payments can also be handled offline with cash, venmo, zelle, etc.\"\n },\n {\n question: \"My practice is all virtual. Will Heal.me work for me?\",\n answer:\n \"Yes. We work with practitioners who work in-person, virtually, in their clients’ homes, and any combination of those.\"\n },\n {\n question: \"I offer group classes and I host retreats. Does Heal.me have this functionality?\",\n answer: \"Not yet, but group classes are coming very soon!\"\n },\n {\n question: \"I’m not very tech savvy. Is Heal.me for me?\",\n answer:\n \"Yes, Heal.me is extremely easy to use, both for you and for your clients. You’ll get an onboarding call when you join, and we also have a support team available to help with anything you need.\"\n },\n {\n question: \"I already have a website. Will Heal.me integrate with my existing site?\",\n answer:\n \"Heal.me will replace your current site. You’ll keep your web domain and switch it to your Heal.me site. Heal.me will now be your website, booking platform, and everything you need to manage and grow your practice.\"\n },\n {\n question: \"I work out of my home and I don’t want to advertise my address.\",\n answer:\n \"That’s ok. You can show a general area in the marketplace, and you can also choose to auto-accept new clients or require your approval first.\"\n }\n]\n\nconst FAQSection = () => {\n const [expanded, setExpanded] = useState({})\n const [animatingItems, setAnimatingItems] = useState({})\n const timeoutRefs = useRef({})\n\n useEffect(\n () => () => {\n Object.values(timeoutRefs.current).forEach(clearTimeout)\n },\n []\n )\n\n const handleToggle = (question) => {\n setExpanded((prev) => {\n const newExpanded = { ...prev, [question]: !prev[question] }\n if (!newExpanded[question]) {\n setAnimatingItems((prev) => ({ ...prev, [question]: true }))\n timeoutRefs.current[question] = setTimeout(() => {\n setAnimatingItems((prev) => ({ ...prev, [question]: false }))\n }, 300)\n }\n return newExpanded\n })\n }\n\n return (\n <div className=\"relative pb-36 pt-12\">\n {/* gradients */}\n <div className=\"absolute top-[-20px] aspect-square w-1/2 rounded-full bg-gradient-to-b from-[#8ab4ff] to-[#e0faff] opacity-20 blur-[200px] min_lg:left-[430px]\" />\n <div className=\"absolute top-[133px] aspect-square w-1/2 rounded-full bg-[#0093ff] opacity-20 blur-[200px] min_lg:left-[482px]\" />\n\n <Container>\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/faqs.jpg\"\n alt=\"FAQ\"\n className=\"absolute right-[-86px] top-[-130px] w-[505px] rounded-lg shadow-landingPage lg:static lg:mb-32 lg:w-full lg:shadow-landingPageMobile\"\n />\n <div className=\"flex flex-col gap-10 lg:gap-8\">\n <div className=\"text-[32px] font-extrabold\">FAQs</div>\n {faqItems.map((item) => (\n <div key={item.question}>\n <div\n className=\"flex cursor-pointer items-center gap-1 lg:items-start\"\n onClick={() => handleToggle(item.question)}>\n {expanded[item.question] || animatingItems[item.question] ? (\n <MinusIcon className=\"h-6 w-6 flex-none text-teal lg:mt-0.5\" />\n ) : (\n <PlusIcon className=\"h-6 w-6 flex-none text-teal lg:mt-0.5\" />\n )}\n <div className=\"text-[22px] hover:text-teal lg:text-lg\">{item.question}</div>\n </div>\n <div\n className={`mt-2 overflow-hidden transition-all duration-300 ease-in-out ${\n expanded[item.question] ? \"max-h-16 lg:max-h-28\" : \"max-h-0\"\n }`}>\n <p className=\"ml-[28px] text-gray-dark lg:text-sm\">{item.answer}</p>\n </div>\n </div>\n ))}\n </div>\n </Container>\n </div>\n )\n}\n\nexport default FAQSection\n","import { ArrowRightIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport timezone from \"dayjs/plugin/timezone\"\nimport utc from \"dayjs/plugin/utc\"\nimport React, { useEffect, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport useIsClient from \"../../hooks/useIsClient\"\n\nimport { Button } from \"./Buttons\"\nimport { formatNextAvailableDate } from \"./NextAvailable\"\nimport { useNextAvailable } from \"./PractitionerLandingPage\"\n\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nconst getVisibleTextInViewport = () => {\n // Helper function to check if an element is in the viewport\n function isElementInViewport(el) {\n const rect = el.getBoundingClientRect()\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n )\n }\n\n // Get all text nodes in the document\n function getTextNodesIn(node) {\n let textNodes = []\n if (node.nodeType === Node.TEXT_NODE) {\n textNodes.push(node)\n } else if (\n node.nodeType === Node.ELEMENT_NODE &&\n ![\"SCRIPT\", \"STYLE\", \"NOSCRIPT\", \"IFRAME\", \"OBJECT\"].includes(node.tagName)\n ) {\n for (let child of node.childNodes) {\n textNodes = textNodes.concat(getTextNodesIn(child))\n }\n }\n return textNodes\n }\n\n // Get all visible text nodes in the viewport\n const allTextNodes = getTextNodesIn(document.body)\n const visibleText = allTextNodes\n .filter((node) => isElementInViewport(node.parentElement)) // Filter by visibility in viewport\n .map((node) => node.textContent.trim()) // Get the text content\n .filter((text) => text.length > 0) // Remove empty strings\n\n return visibleText.join(\" \")\n}\n\nconst stripNextAvailable = (str) => {\n const prefix = \"Next available:\"\n if (str.startsWith(prefix)) {\n return str.slice(prefix.length).trim()\n }\n return str\n}\n\nconst NextAvailable = ({ isVisible }) => {\n const isClient = useIsClient()\n const { nextAvailableTime } = useNextAvailable()\n\n if (!isClient) return null\n if (!nextAvailableTime?.startTime) return null\n\n const readableTime = formatNextAvailableDate(nextAvailableTime.startTime)\n\n return (\n <div\n className={twMerge(\n \"inline-flex h-10 items-center justify-start gap-4 rounded bg-white/80 px-3 py-2 shadow backdrop-blur-sm transition-all duration-300 lg:hidden\",\n isVisible ? \"translate-x-0 opacity-100\" : \"-translate-x-4 opacity-0\"\n )}>\n <div className=\"text-center\">\n <span>Next available: </span>\n <span className=\"font-bold\">{readableTime}</span>\n </div>\n <ArrowRightIcon className=\"h-6 w-6\" />\n </div>\n )\n}\n\nconst TopNav = () => {\n const [visibleText, setVisibleText] = useState(\"\")\n const [showNextAvailable, setShowNextAvailable] = useState(false)\n\n useEffect(() => {\n const handleScroll = () => {\n setVisibleText(stripNextAvailable(getVisibleTextInViewport()))\n }\n\n window.addEventListener(\"scroll\", handleScroll)\n handleScroll() // Initial call\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll)\n }\n }, [])\n\n useEffect(() => {\n setShowNextAvailable(!visibleText.includes(\"Next available\"))\n }, [visibleText])\n\n return (\n <div className=\"fixed inset-x-0 top-0 z-50 flex items-center justify-center bg-gradient-to-b from-white/80 to-white/0 p-8 backdrop-blur-[2px] lg:px-5 lg:py-6\">\n <div className=\"flex w-full max-w-[1376px] items-center justify-between\">\n <a href=\"/\">\n <img src=\"/images/healme_logo.svg\" alt=\"Logo\" className=\"h-10 lg:h-8\" />\n </a>\n <div className=\"flex items-center gap-8\">\n <NextAvailable isVisible={showNextAvailable} />\n <Button href=\"#book-demo\">Join as a practitioner</Button>\n </div>\n </div>\n </div>\n )\n}\n\nexport default TopNav\n","import React, { useEffect, useState } from \"react\"\n\nconst TrustpilotWidget = () => {\n const [isClient, setIsClient] = useState(false)\n\n useEffect(() => {\n setIsClient(true)\n\n const script = document.createElement(\"script\")\n script.src = \"https://widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js\"\n script.async = true\n document.body.appendChild(script)\n\n return () => {\n document.body.removeChild(script)\n }\n }, [])\n\n if (!isClient) {\n return (\n <div className=\"h-60 bg-transparent\">\n <div className=\"mx-[50px] flex gap-8\">\n {Array.from({ length: 4 }).map((_, index) => (\n <div className=\"h-[160px] flex-1 animate-pulse rounded bg-gray-light\" key={index}></div>\n ))}\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"h-60\">\n <div\n className=\"trustpilot-widget\"\n data-locale=\"en-US\"\n data-template-id=\"54ad5defc6454f065c28af8b\"\n data-businessunit-id=\"61c4b68ac783ed407265cd10\"\n data-style-height=\"240px\"\n data-style-width=\"100%\"\n data-theme=\"light\"\n data-stars=\"5\"\n data-review-languages=\"en\">\n <a href=\"https://www.trustpilot.com/review/heal.me\" target=\"_blank\" rel=\"noopener noreferrer\">\n Trustpilot\n </a>\n </div>\n </div>\n )\n}\n\nexport default TrustpilotWidget\n","import React from \"react\"\n\nimport { LargeButton } from \"./Buttons\"\nimport Container from \"./Container\"\nimport NextAvailable from \"./NextAvailable\"\nimport TopNav from \"./TopNav\"\nimport TrustpilotWidget from \"./TrustpilotWidget\"\n\nconst HeroSection = () => (\n <div className=\"relative\">\n {/* gradients */}\n <div className=\"absolute top-0 aspect-square w-1/2 rounded-full bg-teal opacity-40 blur-[500px] lg:left-unset lg:right-0 lg:blur-[100px] min_lg:left-[536px]\" />\n <div className=\"absolute left-0 top-[92px] aspect-square w-1/2 rounded-full bg-orange opacity-40 blur-[500px] lg:blur-[100px]\" />\n\n <TopNav />\n <Container className=\"pt-[112px] lg:px-0 lg:pt-[128px]\" animate={false}>\n <div className=\"flex justify-between lg:flex-col lg:items-center\">\n <div className=\"flex-1\">\n <div className=\"mb-10 lg:mb-4\">\n <div className=\"mb-4 font-serif text-[56px] font-extrabold leading-[72px] lg:px-10 lg:text-center lg:text-[40px] lg:leading-[48px]\">\n <span>\n Streamline and <br className=\"min_lg:hidden\" />\n grow\n <br className=\"lg:hidden\" />\n <span className=\"min_lg:hidden\"> </span>\n your <br className=\"min_lg:hidden\" />\n </span>\n <span className=\"text-teal\">holistic practice</span>\n </div>\n <div className=\"text-2xl leading-9 lg:text-center lg:text-lg lg:leading-7\">\n From a professional website to integrated booking & payments, everything you need to attract and manage\n clients—all in one platform.\n </div>\n </div>\n <div className=\"my-4 lg:hidden\">\n <LargeButton href=\"#book-demo\" />\n </div>\n <NextAvailable className=\"lg:hidden\" />\n </div>\n <div className=\"relative h-[330px] w-[500px] flex-none overflow-hidden rounded-lg lg:mt-6 lg:h-[200px] lg:w-[calc(100%-40px)]\">\n <iframe\n src=\"https://www.loom.com/embed/43c52189479b42f49c4de584823c8b7d?sid=7e6b2827-5e3c-4bac-9b65-036c11ffa3b7&hideEmbedTopBar=true\"\n frameBorder=\"0\"\n webkitallowfullscreen=\"\"\n mozallowfullscreen=\"\"\n allowFullScreen=\"\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\"\n }}\n />\n </div>\n </div>\n </Container>\n <div className=\"mx-auto mt-[60px] max-w-[1250px] lg:mt-12 lg:w-[380px]\">\n <TrustpilotWidget />\n </div>\n </div>\n)\n\nexport default HeroSection\n","import React from \"react\"\n\nimport Container from \"./Container\"\nimport CopySection from \"./CopySection\"\n\nconst MarketplaceSection = () => (\n <div className=\"py-16 lg:py-8\">\n <Container className=\"flex flex-row-reverse items-center justify-between lg:flex-col-reverse lg:items-center lg:gap-8\">\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/new-marketplace.png\"\n alt=\"Marketplace\"\n className=\"absolute left-[-40px] top-[40px] w-[613px] rounded-lg shadow-landingPage lg:static lg:mx-auto lg:mt-10 lg:w-[320px] lg:shadow-landingPageMobile\"\n />\n <CopySection className=\"w-[500px]\" title=\"Get found on the largest marketplace of holistic practitioners.\">\n <ul className=\"space-y-2\">\n <li className=\"flex items-center gap-2\">\n <span>📢</span>\n <span>\n <span className=\"font-bold\">500,000+ annual visitors</span> and growing\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>🔎</span>\n <span>\n <span className=\"font-bold\">Clients search</span> by therapy & health issue\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>â</span>\n <span>\n <span className=\"font-bold\">Verified client reviews</span> to amplify word-of-mouth\n </span>\n </li>\n </ul>\n </CopySection>\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/notification/new-rating-large.png\"\n alt=\"New rating notification\"\n className=\"absolute left-[-72px] top-[-40px] w-[336px] rounded-lg shadow-landingPage lg:static lg:hidden lg:w-full lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/customer-review.png\"\n alt=\"Customer review\"\n className=\"absolute bottom-[-30px] left-[343px] w-[268px] rounded-lg shadow-landingPage lg:hidden lg:shadow-landingPageMobile\"\n />\n </Container>\n </div>\n)\n\nexport default MarketplaceSection\n","import React from \"react\"\n\nimport Container from \"./Container\"\nimport CopySection from \"./CopySection\"\n\nconst NewPhotoshootSection = () => (\n <div className=\"relative lg:py-8\">\n {/* gradient */}\n <div className=\"absolute top-0 aspect-square w-1/2 rounded-full bg-teal opacity-40 blur-[500px] lg:left-unset lg:right-0 lg:blur-[100px] min_lg:left-[536px]\" />\n <div className=\"absolute left-0 top-[92px] aspect-square w-1/2 rounded-full bg-orange opacity-40 blur-[500px] lg:blur-[100px]\" />\n\n <Container className=\"h-[440px] lg:h-[480px]\">\n <CopySection title=\"Elevate your website with a professional holistic practice photoshoot.\">\n <ul className=\"space-y-2\">\n <li className=\"flex items-center gap-2\">\n <span>📸</span>\n <span>\n <span className=\"font-bold\">1 hr professional photoshoot</span> included when you join\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>🌎</span>\n <span>\n <span className=\"font-bold\">Local photographers</span> across all 50 states and 10 provinces\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>ðŸ™</span>\n <span>\n <span className=\"font-bold\">Build more trust</span> with professional, high resolution images\n </span>\n </li>\n </ul>\n </CopySection>\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/ps-1-1.jpg\"\n alt=\"Photoshoot headshot\"\n className=\"absolute left-[761px] top-[42px] w-[234px] rounded-lg shadow-landingPage lg:left-[40px] lg:top-[300px] lg:w-[114px] lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/ps-1-2.jpg\"\n alt=\"Photoshoot headshot\"\n className=\"absolute left-[1036px] top-[54px] w-[138px] rounded-lg shadow-landingPage lg:left-[220px] lg:top-[320px] lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/ps-1-3.jpg\"\n alt=\"Photoshoot headshot\"\n className=\"absolute left-[933px] top-[217px] w-[261px] rounded-lg shadow-landingPage lg:left-[62px] lg:top-[435px] lg:w-[120px] lg:shadow-landingPageMobile\"\n />\n </Container>\n </div>\n)\n\nexport default NewPhotoshootSection\n","import { CheckIcon } from \"@heroicons/react/24/outline\"\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport Container from \"./Container\"\n\nconst Button = ({ className, text, ...rest }) => (\n <a\n className={twMerge(\n \"flex h-12 w-full items-center justify-center rounded bg-teal px-6 text-center font-bold text-white shadow hover:shadow-landingPageButtonHover active:shadow-landingPageButtonPressed lg:h-10 lg:px-4\",\n className\n )}\n {...rest}>\n {text}\n </a>\n)\n\nexport const OutlineButton = ({ className, text, ...rest }) => (\n <Button\n className={twMerge(\n \"border border-teal bg-white text-teal hover:border-2 hover:shadow-none active:border-[3px] active:shadow-none\",\n className\n )}\n text={text}\n {...rest}\n />\n)\n\nconst NewPricingSection = () => {\n const variation = 1\n const customPayment = 999\n const monthlyPayment = variation === 1 ? 79 : 99\n\n return (\n <div className=\"py-10 lg:py-8\">\n <Container>\n <div className=\"text-center\">\n <div className=\"font-serif text-[32px] font-extrabold leading-[48px] lg:text-[22px] lg:leading-[32px]\">\n Choose Your Membership\n </div>\n <div className=\"text-2xl leading-9 lg:text-base lg:leading-normal\">\n Accepting licensed and certified practitioners in the US & Canada\n </div>\n </div>\n <div className=\"mt-16 flex justify-center gap-24 lg:mt-8 lg:flex-col lg:items-center lg:gap-8\">\n <div className=\"w-[388px] gap-6 rounded-lg bg-white shadow-landingPage lg:mx-5 lg:w-full lg:border lg:border-gray-light\">\n <div className=\"rounded-t-lg border-b border-gray-light bg-[#f5fafc] p-6\">\n <div className=\"font-serif text-2xl font-extrabold\">Professional Membership</div>\n <div className=\"font-bold\">Personalized website</div>\n </div>\n\n <div className=\"p-6\">\n <div className=\"flex flex-col justify-center rounded-lg bg-green-light p-4\">\n <div className={variation === 1 ? \"\" : \"text-center\"}>\n {variation === 1 && <div>1 payment of</div>}\n {variation === 1 ? (\n <>\n <span className=\"font-serif text-[40px] font-extrabold leading-[56px]\"> $588</span>\n <span className=\"ml-2 text-[22px] leading-loose\">then</span>\n </>\n ) : (\n <span className=\"text-[22px] leading-loose\">Just</span>\n )}\n <span className=\"font-serif text-[40px] font-extrabold leading-[56px]\"> ${monthlyPayment}</span>\n <span className=\"text-[22px] leading-loose\">/mo</span>\n </div>\n </div>\n {variation === 2 && <div className=\"h-6\" />}\n\n <div className=\"my-6 ml-4 flex flex-col gap-4\">\n {variation === 1 && (\n <div className=\"flex gap-3\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-green-light\">\n <CheckIcon className=\"h-5 w-5 text-green\" />\n </div>\n <div>Includes professional photoshoot</div>\n </div>\n )}\n <div className=\"flex gap-3\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-green-light\">\n <CheckIcon className=\"h-5 w-5 text-green\" />\n </div>\n <div>Website and domain hosting</div>\n </div>\n <div className=\"flex gap-3\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-green-light\">\n <CheckIcon className=\"h-5 w-5 text-green\" />\n </div>\n <div>Integrated booking & payments</div>\n </div>\n <div className=\"flex gap-3\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-green-light\">\n <CheckIcon className=\"h-5 w-5 text-green\" />\n </div>\n <div>Promotion on Heal.me</div>\n </div>\n </div>\n\n <div className=\"flex flex-col gap-6\">\n <OutlineButton\n text=\"Sign up Now\"\n href={\n variation === 1\n ? \"https://buy.stripe.com/dR67vO3974u08hi29J\"\n : \"https://buy.stripe.com/eVa8zSaBz2lS0OQdSB\"\n }\n />\n <Button text=\"Schedule a Demo\" href=\"#book-demo\" />\n </div>\n </div>\n </div>\n\n <div className=\"w-[388px] gap-6 rounded-lg bg-white shadow-landingPage lg:mx-5 lg:w-full lg:border lg:border-gray-light\">\n <div className=\"rounded-t-lg border-b border-gray-light bg-[#f5fafc] p-6\">\n <div className=\"font-serif text-2xl font-extrabold\">Custom Membership</div>\n <div className=\"font-bold\">Fully custom-built website</div>\n </div>\n\n <div className=\"p-6\">\n <div className=\"flex flex-col justify-center rounded-lg bg-[#d5faf1] p-4\">\n <div>2 payments of</div>\n <div>\n <span className=\"font-serif text-[40px] font-extrabold leading-[56px]\"> ${customPayment}</span>\n <span className=\"ml-2 text-[22px] leading-loose\">then</span>\n <span className=\"font-serif text-[40px] font-extrabold leading-[56px]\"> ${monthlyPayment}</span>\n <span className=\"text-[22px] leading-loose\">/mo</span>\n </div>\n </div>\n\n <div className=\"my-6 ml-4 flex flex-col gap-4\">\n <div className=\"flex gap-3\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-green-light\">\n <CheckIcon className=\"h-5 w-5 text-green\" />\n </div>\n <div>Everything in Professional</div>\n </div>\n {variation === 1 && (\n <div className=\"flex gap-3\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-green-light\">\n <CheckIcon className=\"h-5 w-5 text-green\" />\n </div>\n <div>Professional photoshoot</div>\n </div>\n )}\n <div className=\"flex gap-3\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-green-light\">\n <CheckIcon className=\"h-5 w-5 text-green\" />\n </div>\n <div>Dedicated account manager</div>\n </div>\n <div className=\"flex gap-3\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-green-light\">\n <CheckIcon className=\"h-5 w-5 text-green\" />\n </div>\n <div>Custom web design & development</div>\n </div>\n </div>\n\n <div className=\"flex flex-col gap-6\">\n {variation === 1 ? (\n <OutlineButton text=\"Sign up Now\" href=\"https://go.heal.me/professional-membership-white-glove\" />\n ) : (\n <Button text=\"Sign up Now\" href=\"https://buy.stripe.com/7sI9DWdNL2lScxy8yi\" />\n )}\n {variation === 1 ? (\n <Button text=\"Schedule a Demo\" href=\"#book-demo\" />\n ) : (\n <OutlineButton text=\"Schedule a Demo\" href=\"#book-demo\" />\n )}\n </div>\n </div>\n </div>\n </div>\n </Container>\n </div>\n )\n}\n\nexport default NewPricingSection\n","import React from \"react\"\n\nimport Container from \"./Container\"\nimport CopySection from \"./CopySection\"\n\nconst OneClickBookingSection = () => (\n <div className=\"relative lg:py-8\">\n {/* gradient */}\n <div className=\"absolute left-[358px] top-[-40px] aspect-square w-1/2 rounded-full bg-gradient-to-b from-[#f9e4cc] to-[#ff6100] opacity-40 blur-[600px] lg:left-0 lg:blur-[100px]\" />\n\n <Container className=\"flex h-[631px] flex-row-reverse items-center justify-between lg:h-auto lg:flex-col-reverse lg:items-center lg:gap-8\">\n <div className=\"absolute left-[-102px] top-[13px] flex flex-col items-start gap-12 lg:static lg:flex-row lg:flex-wrap lg:items-center lg:justify-center lg:gap-8\">\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/square.svg\"\n alt=\"Square logo\"\n className=\"max-w-[94px] opacity-50 shadow-landingPage lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/stripe.svg\"\n alt=\"Stripe logo\"\n className=\"max-w-[94px] opacity-50 shadow-landingPage lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/venmo.svg\"\n alt=\"Venmo logo\"\n className=\"max-w-[94px] opacity-50 shadow-landingPage lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/paypal.svg\"\n alt=\"PayPal logo\"\n className=\"max-w-[94px] opacity-50 shadow-landingPage lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/cash.svg\"\n alt=\"Cash App logo\"\n className=\"max-w-[94px] opacity-50 shadow-landingPage lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/logos/zelle.svg\"\n alt=\"Zelle logo\"\n className=\"max-w-[94px] opacity-50 shadow-landingPage lg:hidden lg:shadow-landingPageMobile\"\n />\n </div>\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/booking-large.png\"\n alt=\"Booking form\"\n className=\"absolute left-[45px] top-0 w-[375px] shadow-landingPage lg:static lg:mx-auto lg:mt-10 lg:w-[240px] lg:shadow-landingPageMobile\"\n />\n <img\n loading=\"lazy\"\n src=\"/images/practitioner-landing/graphics/lp-elements/notification/booked-confirmation.png\"\n alt=\"Booking confirmation\"\n className=\"absolute left-[138px] top-[251px] w-[375px] rounded-lg shadow-landingPage lg:static lg:mx-auto lg:mt-[-250px] lg:hidden lg:w-[320px] lg:shadow-landingPageMobile\"\n />\n <CopySection\n title=\"Turn one-time clients into regulars with integrated 1-click booking.\"\n className=\"max-w-[527px]\">\n <ul className=\"space-y-2\">\n <li className=\"flex items-center gap-2\">\n <span>👉</span>\n <span>\n <span className=\"font-bold\">1-click booking</span> boosts repeat business 30-50%\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>💸</span>\n <span>\n <span className=\"font-bold\">Accept payments</span> via credit card, Venmo, or PayPal\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>🔔</span>\n <span>\n <span className=\"font-bold\">Automated appointment reminders</span>\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>🔃</span>\n <span>\n <span className=\"font-bold\">Recurring bookings</span> for loyal clients\n </span>\n </li>\n <li className=\"flex items-center gap-2\">\n <span>📱</span>\n <span>\n <span className=\"font-bold\">Client mobile app</span> for instant booking\n </span>\n </li>\n </ul>\n </CopySection>\n </Container>\n </div>\n)\n\nexport default OneClickBookingSection\n","import React from \"react\"\n\nimport Container from \"./Container\"\n\nconst videos = [\n { id: \"947584250\", title: \"Holistic Body Shop Testimonial\" },\n { id: \"969262510\", title: \"Hanes Testimonial\" },\n { id: \"947583988\", title: \"Roberta Devers Testimonial\" },\n { id: \"947584007\", title: \"Pam Testimonial\" }\n]\n\nconst VideoTestimonialsSection = () => (\n <div className=\"relative pb-36\">\n {/* gradients */}\n <div className=\"absolute top-0 aspect-square w-1/2 rounded-full bg-teal opacity-40 blur-[500px] min_lg:left-[536px]\" />\n <div className=\"absolute left-0 top-[92px] aspect-square w-1/2 rounded-full bg-orange opacity-40 blur-[500px]\" />\n\n <script src=\"https://player.vimeo.com/api/player.js\"></script>\n <Container>\n <div className=\"mb-16 font-serif text-[40px] font-extrabold leading-[56px]\">\n <span className=\"text-teal\">Hear</span>\n <span> what our practitioners are saying</span>\n </div>\n <div className=\"grid grid-cols-3 justify-between gap-x-[117px] gap-y-[83px] lg:grid-cols-1 lg:gap-20\">\n {videos.map((video) => (\n <div key={video.id} style={{ padding: \"178.22% 0 0 0\", position: \"relative\" }}>\n <iframe\n loading=\"lazy\"\n src={`https://player.vimeo.com/video/${video.id}?badge=0&autopause=0&player_id=0&app_id=58479`}\n frameBorder=\"0\"\n allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\"\n }}\n title={video.title}\n />\n </div>\n ))}\n </div>\n </Container>\n </div>\n)\n\nexport default VideoTestimonialsSection\n","import React from \"react\"\n\nimport BookDemoSection from \"./BookDemoSection\"\nimport BottomCTA from \"./BottomCTA\"\nimport CalendarSection from \"./CalendarSection\"\nimport CustomWebsiteSection from \"./CustomWebsiteSection\"\nimport FAQSection from \"./FAQSection\"\nimport HeroSection from \"./HeroSection\"\nimport MarketplaceSection from \"./MarketplaceSection\"\nimport NewPhotoshootSection from \"./NewPhotoshootSection\"\nimport NewPricingSection from \"./NewPricingSection\"\nimport OneClickBookingSection from \"./OneClickBookingSection\"\nimport VideoTestimonialsSection from \"./VideoTestimonialsSection\"\n\nconst NextAvailableContext = React.createContext()\n\nexport const NextAvailableProvider = ({ children, initialNextAvailableTime }) => {\n const [nextAvailableTime, setNextAvailableTime] = React.useState(initialNextAvailableTime)\n\n return (\n <NextAvailableContext.Provider value={{ nextAvailableTime, setNextAvailableTime }}>\n {children}\n </NextAvailableContext.Provider>\n )\n}\n\nexport const useNextAvailable = () => React.useContext(NextAvailableContext)\n\nconst PractitionerLandingPage = (props) => (\n <NextAvailableProvider initialNextAvailableTime={props.nextAvailableTime}>\n <div>\n <HeroSection />\n <CustomWebsiteSection />\n <OneClickBookingSection />\n <CalendarSection />\n <MarketplaceSection />\n <NewPhotoshootSection />\n <NewPricingSection />\n <BookDemoSection />\n <FAQSection />\n <VideoTestimonialsSection />\n <BottomCTA />\n </div>\n </NextAvailableProvider>\n)\n\nexport default PractitionerLandingPage\n"],"names":["Container","className","animate","children","rest","React","AnimatedSection","Object","assign","twMerge","useIsClient","isClient","setIsClient","useState","useEffect","dayjs","utc","timezone","formatNextAvailableDate","isoString","userTimezone","guess","tz","format","NextAvailable","nextAvailableTime","useNextAvailable","startTime","readableTime","ArrowUpIcon","BookDemoSection","iframeHeight","setIframeHeight","useCalendlyEventListener","onPageHeightResize","e","data","payload","height","id","style","InlineWidget","url","styles","Button","href","text","LargeButton","BottomCTA","loading","src","alt","onClick","window","scrollTo","top","behavior","CopySection","title","subtitle","CalendarSection","CustomWebsiteSection","currentImage","setCurrentImage","images","timer","setInterval","prev","length","clearInterval","map","img","index","key","faqItems","question","answer","FAQSection","expanded","setExpanded","animatingItems","setAnimatingItems","timeoutRefs","useRef","values","current","forEach","clearTimeout","item","handleToggle","newExpanded","setTimeout","MinusIcon","PlusIcon","getVisibleTextInViewport","allTextNodes","getTextNodesIn","node","textNodes","nodeType","Node","TEXT_NODE","push","ELEMENT_NODE","includes","tagName","child","childNodes","concat","document","body","filter","el","rect","getBoundingClientRect","left","bottom","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","isElementInViewport","parentElement","textContent","trim","join","isVisible","ArrowRightIcon","TopNav","visibleText","setVisibleText","showNextAvailable","setShowNextAvailable","handleScroll","str","prefix","startsWith","slice","stripNextAvailable","addEventListener","removeEventListener","TrustpilotWidget","script","createElement","async","appendChild","removeChild","target","rel","Array","from","_","HeroSection","frameBorder","webkitallowfullscreen","mozallowfullscreen","allowFullScreen","position","width","MarketplaceSection","NewPhotoshootSection","OutlineButton","NewPricingSection","variation","CheckIcon","OneClickBookingSection","videos","VideoTestimonialsSection","video","padding","allow","NextAvailableContext","NextAvailableProvider","initialNextAvailableTime","setNextAvailableTime","Provider","value","props"],"sourceRoot":""}