{"version":3,"file":"static/chunks/app/[locale]/solutions/[slug]/page-33d629955cb6fc6f.js","mappings":"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","sources":["webpack://_N_E/?6f53","webpack://_N_E/./app/[locale]/solutions/_components/constants.ts","webpack://_N_E/./app/[locale]/solutions/_components/SolutionPage.tsx","webpack://_N_E/./components/buttons/Button.tsx","webpack://_N_E/./components/cards/DetailedProductCard.tsx","webpack://_N_E/./components/modules/BasicCardListModule/BasicCardListModule.tsx","webpack://_N_E/./components/cards/BlogPostCard.tsx","webpack://_N_E/./components/modules/BlogPostsModule/BlogPostsModule.tsx","webpack://_N_E/./components/modules/shared/RightImageLayout.tsx","webpack://_N_E/./components/modules/HeroWithRightImageModule/HeroWithRightImageModule.tsx","webpack://_N_E/./components/modules/ProductCardListModule/ProductCardListModule.tsx","webpack://_N_E/./components/modules/shared/Description.tsx","webpack://_N_E/./components/modules/shared/SectionModuleWrapper.tsx","webpack://_N_E/./components/typography/PrimaryHeading.tsx","webpack://_N_E/./components/typography/SecondaryHeading.tsx","webpack://_N_E/./components/typography/BodyBoldUppercase.tsx","webpack://_N_E/./components/typography/index.ts","webpack://_N_E/./hooks/useUserLocalization.tsx","webpack://_N_E/./lib/geolocation.ts","webpack://_N_E/./lib/marketing-page/utils.ts","webpack://_N_E/./lib/promises.ts","webpack://_N_E/./lib/types.ts","webpack://_N_E/./utils/date-utils.ts","webpack://_N_E/./utils/http-request.ts","webpack://_N_E/./utils/sentry.ts","webpack://_N_E/./public/icons/checkmarkIcon.svg"],"sourcesContent":["import(/* webpackMode: \"eager\", webpackExports: [\"SolutionPage\"] */ \"/codebuild/output/src4237242273/src/website/app/[locale]/solutions/_components/SolutionPage.tsx\");\n","import { ImageProps } from '@/components/modules/types';\nimport { CA, UK, US } from '@/lib/countries';\nimport { LocationProductName } from '@/lib/locations/dto';\nimport { PageActions } from '@/lib/types';\n\nconst GALLERY_AMENITIES_IMG =\n '/public-s3/images/solutions-pages/gallery/amenities.webp';\nconst GALLERY_CAFE_IMG = '/public-s3/images/solutions-pages/gallery/cafe.webp';\nconst GALLERY_COMMON_AREA_1_IMG =\n '/public-s3/images/solutions-pages/gallery/common-area-1.webp';\nconst GALLERY_COMMON_AREA_2_IMG =\n '/public-s3/images/solutions-pages/gallery/common-area-2.webp';\nconst GALLERY_COMMON_AREA_3_IMG =\n '/public-s3/images/solutions-pages/gallery/common-area-3.webp';\nconst GALLERY_ENTRANCE_IMG =\n '/public-s3/images/solutions-pages/gallery/entrance.webp';\nconst GALLERY_EXTERIOR_IMG =\n '/public-s3/images/solutions-pages/gallery/exterior.webp';\nconst GALLERY_MEETING_ROOM_IMG =\n '/public-s3/images/solutions-pages/gallery/meeting-room.webp';\nconst GALLERY_MEETING_ROOM_2_IMG =\n '/public-s3/images/solutions-pages/gallery/meeting-room-2.webp';\nconst GALLERY_MEETING_ROOM_3_IMG =\n '/public-s3/images/solutions-pages/gallery/meeting-room-3.webp';\nconst GALLERY_MEETING_ROOM_4_IMG =\n '/public-s3/images/solutions-pages/gallery/meeting-room-4.webp';\nconst GALLERY_MEETING_ROOM_5_IMG =\n '/public-s3/images/solutions-pages/gallery/meeting-room-5.webp';\nconst GALLERY_MEETING_ROOM_6_IMG =\n '/public-s3/images/solutions-pages/gallery/meeting-room-6.webp';\nconst GALLERY_MEETING_ROOM_7_IMG =\n '/public-s3/images/solutions-pages/gallery/meeting-room-7.webp';\n\nconst GALLERY_OFFICE_IMG =\n '/public-s3/images/solutions-pages/gallery/office.webp';\nconst GALLERY_OFFICE_2_IMG =\n '/public-s3/images/solutions-pages/gallery/office-2.webp';\nconst GALLERY_PHONE_BOOTH_IMG =\n '/public-s3/images/solutions-pages/gallery/phone-booths.webp';\nconst GALLERY_RECEPTION_IMG =\n '/public-s3/images/solutions-pages/gallery/reception.webp';\nconst GALLERY_SUITE_1_IMG =\n '/public-s3/images/solutions-pages/gallery/suite-1.webp';\nconst GALLERY_SUITE_2_IMG =\n '/public-s3/images/solutions-pages/gallery/suite-2.webp';\nconst GALLERY_TABLE_COFFEE_IMG =\n '/public-s3/images/solutions-pages/gallery/table-coffee.webp';\nconst GALLERY_WELLNESS_ROOM_IMG =\n '/public-s3/images/solutions-pages/gallery/wellness-room.webp';\n\nexport type ProductData = {\n galleryImages: ImageProps[];\n hero: {\n nbItems: number;\n ctasActions: PageActions[];\n };\n valueCardsKeys: string[];\n valueCardsData?: Record<\n string,\n Record\n >;\n otherProductsToDisplay: LocationProductName[];\n hideNumberedCard?: boolean;\n howItWorks?: { link: string }[];\n blogPostsKey: string[];\n hasDescription?: boolean;\n hasDescriptionNote?: boolean;\n};\n\nexport function getProductsPageData(params: {\n productName: LocationProductName;\n country?: string;\n}): ProductData {\n const { productName, country } = params;\n\n return {\n access: {\n galleryImages: [\n {\n src: GALLERY_COMMON_AREA_1_IMG,\n alt: 'common-area-1',\n },\n {\n src: GALLERY_CAFE_IMG,\n alt: 'cafe',\n },\n {\n src: GALLERY_MEETING_ROOM_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_OFFICE_IMG,\n alt: 'office',\n },\n {\n src: GALLERY_PHONE_BOOTH_IMG,\n alt: 'phone-booths',\n },\n {\n src: GALLERY_WELLNESS_ROOM_IMG,\n alt: 'wellness-room',\n },\n {\n src: GALLERY_COMMON_AREA_2_IMG,\n alt: 'common-area-2',\n },\n {\n src: GALLERY_AMENITIES_IMG,\n alt: 'amenities',\n },\n ],\n hero: {\n nbItems: 3,\n ctasActions: [PageActions.CHECKOUT, PageActions.BOOK_TOUR],\n },\n howItWorks: [{ link: '/checkout' }],\n valueCardsKeys: ['value-cards-1', 'value-cards-2'],\n valueCardsData: {\n 'value-cards-2': {\n 0: {\n isHidden: country !== US && country !== CA,\n },\n 1: {\n description: country === UK ? 'description-uk' : 'description',\n },\n 2: {\n description: country === UK ? 'description-uk' : 'description',\n },\n },\n },\n otherProductsToDisplay: ['dedicatedOffice', 'virtual', 'meetingRoom'],\n blogPostsKey: ['4-visions', '5-employees', 'willis-tower'],\n },\n suites: {\n galleryImages: [\n {\n src: GALLERY_SUITE_1_IMG,\n alt: 'suite-1',\n },\n {\n src: GALLERY_SUITE_2_IMG,\n alt: 'suite-2',\n },\n {\n src: GALLERY_COMMON_AREA_1_IMG,\n alt: 'common-area-1',\n },\n {\n src: GALLERY_CAFE_IMG,\n alt: 'cafe',\n },\n {\n src: GALLERY_MEETING_ROOM_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_WELLNESS_ROOM_IMG,\n alt: 'wellness-room',\n },\n {\n src: GALLERY_AMENITIES_IMG,\n alt: 'amenities',\n },\n ],\n hero: {\n nbItems: 3,\n ctasActions: [PageActions.BOOK_TOUR],\n },\n valueCardsKeys: ['value-cards'],\n otherProductsToDisplay: ['dedicatedOffice', 'access', 'meetingRoom'],\n blogPostsKey: ['hot-desking', 'what-coworking', 'south-florida'],\n },\n dedicatedOffice: {\n galleryImages: [\n {\n src: GALLERY_OFFICE_IMG,\n alt: 'office',\n },\n {\n src: GALLERY_OFFICE_2_IMG,\n alt: 'office',\n },\n {\n src: GALLERY_COMMON_AREA_1_IMG,\n alt: 'common-area-1',\n },\n {\n src: GALLERY_CAFE_IMG,\n alt: 'cafe',\n },\n {\n src: GALLERY_MEETING_ROOM_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_PHONE_BOOTH_IMG,\n alt: 'phone-booths',\n },\n {\n src: GALLERY_WELLNESS_ROOM_IMG,\n alt: 'wellness-room',\n },\n {\n src: GALLERY_AMENITIES_IMG,\n alt: 'amenities',\n },\n ],\n hero: {\n nbItems: 3,\n ctasActions: [PageActions.BOOK_TOUR],\n },\n valueCardsKeys: ['value-cards'],\n otherProductsToDisplay: ['suites', 'access', 'virtual'],\n blogPostsKey: ['4-visions', '5-employees', 'willis-tower'],\n },\n virtual: {\n galleryImages: [\n {\n src: GALLERY_EXTERIOR_IMG,\n alt: 'exterior',\n },\n {\n src: GALLERY_TABLE_COFFEE_IMG,\n alt: 'table-coffee',\n },\n {\n src: GALLERY_COMMON_AREA_3_IMG,\n alt: 'common-area-3',\n },\n {\n src: GALLERY_ENTRANCE_IMG,\n alt: 'entrance',\n },\n {\n src: GALLERY_PHONE_BOOTH_IMG,\n alt: 'phone-booths',\n },\n {\n src: GALLERY_RECEPTION_IMG,\n alt: 'reception',\n },\n ],\n hero: {\n nbItems: 2,\n ctasActions: [PageActions.BOOK_TOUR],\n },\n valueCardsKeys: ['value-cards'],\n otherProductsToDisplay: ['access', 'dedicatedOffice', 'meetingRoom'],\n blogPostsKey: ['4-visions', '5-employees', 'willis-tower'],\n },\n meetingRoom: {\n galleryImages: [\n {\n src: GALLERY_MEETING_ROOM_2_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_MEETING_ROOM_3_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_MEETING_ROOM_4_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_MEETING_ROOM_5_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_MEETING_ROOM_6_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_MEETING_ROOM_7_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_MEETING_ROOM_IMG,\n alt: 'meeting-room',\n },\n ],\n hero: {\n nbItems: 3,\n ctasActions: [\n PageActions.BOOK_MEETING_ROOM,\n PageActions.MEETING_ROOM_SPECIAL_REQUEST,\n ],\n },\n valueCardsKeys: ['value-cards'],\n otherProductsToDisplay: ['access', 'dedicatedOffice', 'virtual'],\n hideNumberedCard: true,\n blogPostsKey: ['4-visions', '5-employees', 'willis-tower'],\n },\n coworkingDayPass: {\n galleryImages: [\n {\n src: GALLERY_COMMON_AREA_1_IMG,\n alt: 'common-area-1',\n },\n {\n src: GALLERY_CAFE_IMG,\n alt: 'cafe',\n },\n {\n src: GALLERY_MEETING_ROOM_IMG,\n alt: 'meeting-room',\n },\n {\n src: GALLERY_OFFICE_IMG,\n alt: 'office',\n },\n {\n src: GALLERY_PHONE_BOOTH_IMG,\n alt: 'phone-booths',\n },\n {\n src: GALLERY_WELLNESS_ROOM_IMG,\n alt: 'wellness-room',\n },\n {\n src: GALLERY_COMMON_AREA_2_IMG,\n alt: 'common-area-2',\n },\n {\n src: GALLERY_AMENITIES_IMG,\n alt: 'amenities',\n },\n ],\n hasDescription: true,\n hasDescriptionNote: true,\n hero: {\n nbItems: 0,\n ctasActions: [PageActions.PURCHASE_COWORKING_DAY_PASS],\n },\n valueCardsKeys: ['value-cards-1', 'value-cards-2'],\n valueCardsData: {\n 'value-cards-2': {\n 0: {\n isHidden: country !== US && country !== CA,\n },\n 1: {\n description: country === UK ? 'description-uk' : 'description',\n },\n 2: {\n description: country === UK ? 'description-uk' : 'description',\n },\n },\n },\n otherProductsToDisplay: ['access', 'virtual', 'meetingRoom'],\n hideNumberedCard: true,\n blogPostsKey: ['hot-desking', 'what-coworking', 'south-florida'],\n },\n }[productName] as ProductData;\n}\n\ntype BlogPostData = {\n imageSrc: string;\n date: string;\n url: string;\n};\n\nexport const BLOG_POSTS_BY_KEY: { [key: string]: BlogPostData } = {\n '4-visions': {\n imageSrc: '/public-s3/images/blog/4-visions.webp',\n date: '2021-06-21',\n url: '/blog/research/4-visions-of-the-future-of-the-workplace',\n },\n '5-employees': {\n imageSrc: '/public-s3/images/blog/5-employees.webp',\n date: '2021-03-10',\n url: '/blog/productivity/what-5-employees-want-from-the-workplace-after-covid-19',\n },\n 'willis-tower': {\n imageSrc: '/public-s3/images/blog/willis-tower.webp',\n date: '2021-03-18',\n url: '/blog/industrious/what-its-like-to-work-from-industrious-willis-tower-for-a-day',\n },\n 'hot-desking': {\n imageSrc: '/public-s3/images/blog/hot-desking.webp',\n date: '2023-03-08',\n url: '/blog/research/what-is-hot-desking',\n },\n 'what-coworking': {\n imageSrc: '/public-s3/images/blog/what-coworking.webp',\n date: '2023-10-23',\n url: '/blog/research/what-is-coworking',\n },\n 'south-florida': {\n imageSrc: '/public-s3/images/blog/florida.webp',\n date: '2022-09-20',\n url: '/blog/industrious/south-florida-flex-office-space',\n },\n};\n","'use client';\n\nimport { useTranslations } from 'next-intl';\nimport dynamic from 'next/dynamic';\n\nimport HorizontalGallery from '@/components/HorizontalGallery';\nimport { Link } from '@/components/Link';\nimport BasicCardListModule from '@/components/modules/BasicCardListModule/BasicCardListModule';\nimport BlogPostsModule from '@/components/modules/BlogPostsModule/BlogPostsModule';\nimport HeroWithRightImageModule from '@/components/modules/HeroWithRightImageModule/HeroWithRightImageModule';\nimport ProductCardListModule from '@/components/modules/ProductCardListModule/ProductCardListModule';\nimport {\n BackgroundColors,\n BackgroundType,\n EyebrowType,\n ImageProps,\n} from '@/components/modules/types';\nimport { useRouter } from '@/hooks/useRouter';\nimport { useUserLocalization } from '@/hooks/useUserLocalization';\nimport { LocationProductName } from '@/lib/locations/dto';\nimport { Orientations, PageActions } from '@/lib/types';\nimport { getProductPageImage } from '@/models/solutions-pages-utils';\n\nimport {\n BLOG_POSTS_BY_KEY,\n ProductData,\n getProductsPageData,\n} from './constants';\n\nconst NearbyLocationsModule = dynamic(\n import('@/components/modules/NearbyLocationsModule/NearbyLocationsModule')\n);\n\nexport type SolutionPageProps = {\n productName: LocationProductName;\n mapboxAccessToken: string;\n};\n\nexport function SolutionPage({\n productName,\n mapboxAccessToken,\n}: SolutionPageProps) {\n const t = useTranslations('solutions-page');\n const router = useRouter();\n const { country } = useUserLocalization();\n\n const productData = getProductsPageData({\n productName,\n country,\n });\n\n if (!productData) return null;\n\n const images = productData.galleryImages.map(({ src, alt }: ImageProps) => ({\n src,\n alt: t(`alt-images-gallery.${alt}`),\n }));\n const itemsList = [...Array(productData.hero.nbItems)].map((n, index) =>\n t(`${productName}.hero-bullet-points.item-${index}`)\n );\n const blogPosts = productData.blogPostsKey.map((key: string) => ({\n ...BLOG_POSTS_BY_KEY[key],\n title: t(`blog-post-cards.${key}.title`),\n image: {\n src: BLOG_POSTS_BY_KEY[key].imageSrc,\n alt: t(`blog-post-cards.${key}.alt-img`),\n },\n }));\n const description = productData.hasDescription\n ? t(`${productName}.description`)\n : undefined;\n const descriptionNote = productData.hasDescriptionNote\n ? t(`${productName}.descriptionNote`)\n : undefined;\n\n const handleCtaClicked = (action: PageActions) => {\n const url = getUrlFromAction(action);\n\n if (url == null) return;\n\n router.push(url);\n };\n\n return (\n
\n \n\n {productData.valueCardsKeys.map((key: string) => (\n \n ))}\n\n
\n \n
\n {!productData.hideNumberedCard && (\n \n )}\n \n \n \n
\n );\n}\n\nfunction getUrlFromAction(action: PageActions) {\n switch (action) {\n case PageActions.CHECKOUT:\n return '/checkout';\n case PageActions.BOOK_TOUR:\n return '/location-form';\n case PageActions.BOOK_SPACE:\n case PageActions.MEETING_ROOM_SPECIAL_REQUEST:\n return '/meeting-event-space-inquiry';\n case PageActions.BOOK_MEETING_ROOM:\n return '/meeting-rooms';\n case PageActions.PURCHASE_COWORKING_DAY_PASS:\n return '/coworking';\n }\n}\n\nfunction getHowItWorksTitle(params: {\n productData: ProductData;\n t: ReturnType>;\n productName: string;\n index: number;\n}) {\n const { productData, t, productName, index } = params;\n return productData?.howItWorks?.[index].link != null\n ? t.rich(`${productName}.how-it-works.item-0.title`, {\n link: (chunks) => (\n \n {chunks}\n \n ),\n })\n : t(`${productName}.how-it-works.item-0.title`);\n}\n\nfunction getValueCardDescription(params: {\n productData: ProductData;\n key: string;\n t: ReturnType>;\n productName: string;\n index: number;\n}) {\n const { productData, t, productName, key, index } = params;\n return t(\n `${productName}.${key}.item-${index}.${\n productData.valueCardsData?.[key]?.[index]?.description ?? 'description'\n }`\n );\n}\n","import {\n ComponentPropsWithoutRef,\n ElementType,\n PropsWithChildren,\n} from 'react';\n\nimport { CircleLoader } from '../CircleLoader';\n\nimport clsx from 'clsx';\n\nexport enum ButtonAction {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n}\n\nexport enum ButtonSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n}\n\ntype AsProp = {\n as?: E;\n};\n\ntype ComponentProps = PropsWithChildren<\n ComponentPropsWithoutRef & AsProp\n>;\n\ntype ButtonProps = React.ComponentPropsWithoutRef<'button'> & {\n action?: ButtonAction;\n size?: ButtonSize;\n isLoading?: boolean;\n};\n\nconst defaultElement = 'button';\n\nexport function Button({\n as,\n action = ButtonAction.PRIMARY,\n size = ButtonSize.MEDIUM,\n isLoading,\n children,\n disabled,\n className,\n ...otherProps\n}: ButtonProps & ComponentProps) {\n const baseClasses =\n 'inline-flex items-center justify-center rounded-full font-medium border group text-center cursor-pointer disabled:cursor-default';\n const Component = as ?? defaultElement;\n\n const getSizeClasses = () => {\n switch (size) {\n case ButtonSize.SMALL:\n return 'text-sm leading-none py-1 px-5';\n case ButtonSize.LARGE:\n return 'text-lg py-2 px-5';\n default:\n return 'text-base py-2 px-5';\n }\n };\n\n const getActionClasses = () => {\n switch (action) {\n case ButtonAction.SECONDARY:\n return 'bg-white border-teal-40 text-teal-40 hover:bg-teal-40 hover:text-white disabled:pointer-events-none disabled:text-grey-60 disabled:border-grey-60';\n case ButtonAction.TERTIARY:\n return 'bg-white border-[2px] border-[#013E3F1A] text-teal-40 hover:bg-[#013E3F0A]';\n default:\n return 'bg-teal-40 border-teal-40 text-white';\n }\n };\n\n const getCircleLoaderClasses = () => {\n switch (action) {\n case ButtonAction.SECONDARY:\n return 'fill-teal-40 group-hover:fill-white';\n default:\n return 'fill-white';\n }\n };\n\n return (\n \n {isLoading && (\n \n )}\n {children}\n \n );\n}\n","import { useTranslations } from 'next-intl';\nimport Image from 'next/image';\n\nimport { LocationProductName } from '@/lib/locations/dto';\nimport { getProductPageLink } from '@/models/location-utils';\nimport {\n getProductPageImage,\n getProductPerksTranslationsKey,\n} from '@/models/solutions-pages-utils';\nimport checkmarkIcon from '@/public/icons/checkmarkIcon.svg';\n\nimport { CardContent, CardFooter, CardWrapper } from './shared';\n\nimport clsx from 'clsx';\n\ntype DetailedProductCardProps = {\n name: LocationProductName;\n imgAttributes?: {\n className?: string;\n sizes?: string;\n };\n translationKey?: string;\n showTag?: boolean;\n};\n\nconst defaultImgSizes =\n '(min-width: 960px) 478px, (min-width: 600px) calc(50vw - 92px), (min-width: 500px) calc(100vw - 162px), calc(100vw - 82px)';\n\nexport default function DetailedProductCard({\n name,\n imgAttributes,\n showTag = true,\n translationKey = 'detailed-product-cards',\n}: DetailedProductCardProps) {\n const t = useTranslations(translationKey);\n const link = getProductPageLink(name);\n const bulletPoints = getProductPerksTranslationsKey(\n name,\n translationKey.includes('location-product-page')\n );\n\n return (\n \n \n {showTag && (\n
\n {t(`${name}.tag`)}\n
\n )}\n

{t(`${name}.description`)}

\n
    \n {bulletPoints.map((perk) => (\n
  • \n \n {t(`${name}.${perk}`)}\n
  • \n ))}\n
\n
\n \n \n );\n}\n","import { BodyBoldUppercase, SecondaryHeading } from '@/components/typography';\nimport { replaceKeysFromString } from '@/lib/marketing-page/utils';\nimport { Orientations } from '@/lib/types';\nimport { tiemposFont } from '@/theme/tiemposFont';\nimport { WithDataTestId } from '@/types/with-data-testid';\nimport { getBackgroundSectionClassName } from '@/utils/marketing-landing-page';\n\nimport { BackgroundColorProps } from '../types';\n\nimport clsx from 'clsx';\n\ntype BasicCard = {\n title?: string | React.ReactNode;\n description: string;\n isHidden?: boolean;\n};\n\nexport enum TitleVariant {\n DEFAULT = 'default',\n TIEMPOS = 'tiempos',\n}\n\nexport type BasicCardListModuleProps = {\n title?: string;\n description?: string;\n items: BasicCard[];\n itemsTitleFontFamily?: string;\n orientation?: Orientations;\n isNumbered?: boolean;\n background?: BackgroundColorProps;\n containerClassName?: string;\n titleVariant?: TitleVariant;\n valueToBeReplacedObj?: Record;\n} & WithDataTestId;\n\nexport default function BasicCardListModule({\n title,\n description,\n items,\n itemsTitleFontFamily,\n orientation,\n isNumbered,\n containerClassName,\n background,\n titleVariant = TitleVariant.DEFAULT,\n dataTestId,\n valueToBeReplacedObj,\n}: BasicCardListModuleProps) {\n const TitleComponent =\n titleVariant === TitleVariant.DEFAULT\n ? BodyBoldUppercase\n : SecondaryHeading;\n\n const itemCards = items\n ?.filter((i) => !i.isHidden)\n .map((item, index) => {\n return (\n \n \n {isNumbered && (\n \n {!item.title && '0'}\n {index + 1}\n {item.title && '.'}\n \n )}\n {item.title}\n \n\n {item.description && (\n \n )}\n \n );\n });\n\n return (\n \n \n {title && (\n \n {title}\n \n )}\n\n {description && (\n \n )}\n\n \n {itemCards}\n \n \n \n );\n}\n","import { useTranslations } from 'next-intl';\n\nimport { ImageProps } from '../modules/types';\nimport TertiaryHeading from '../typography/TertiaryHeading';\nimport { CardFooter, CardWrapper } from './shared';\n\ntype BlogPostCardProps = {\n image: ImageProps;\n date: string;\n title: string;\n url: string;\n};\n\nexport default function BlogPostCard({\n image,\n date,\n title,\n url,\n}: BlogPostCardProps) {\n const t = useTranslations('general');\n\n const formattedDate = t('blog-post-date', {\n date: new Date(date),\n })\n .split('/')\n .join('.');\n\n return (\n \n
\n
{formattedDate}
\n {title}\n
\n\n \n \n );\n}\n","import BlogPostCard from '@/components/cards/BlogPostCard';\nimport { WithDataTestId } from '@/types/with-data-testid';\n\nimport { SectionModuleWrapper } from '../shared/SectionModuleWrapper';\nimport { BackgroundColorProps, ImageProps } from '../types';\n\nexport type BlogPostsModuleProps = {\n title?: string;\n posts: BlogPost[];\n background?: BackgroundColorProps;\n containerClassName?: string;\n} & WithDataTestId;\n\nexport type BlogPost = {\n image: ImageProps;\n date: string;\n title: string;\n url: string;\n};\n\nexport default function BlogPostsModule({\n title,\n posts,\n background,\n containerClassName,\n dataTestId,\n}: BlogPostsModuleProps) {\n return (\n \n

{title}

\n\n
    \n {posts.map((post) => (\n
  • \n \n
  • \n ))}\n
\n \n );\n}\n","import { StaticImageData } from 'next/image';\nimport { ReactNode } from 'react';\n\nimport { ImageWithPlaceholder } from '@/components/ImageWithPlaceholder';\nimport { WithDataTestId } from '@/types/with-data-testid';\nimport { getBackgroundSectionClassName } from '@/utils/marketing-landing-page';\n\nimport { BackgroundColors } from '../types';\n\nimport clsx from 'clsx';\n\ntype RightImageLayoutProps = {\n backgroundColor?: BackgroundColors;\n imageSrc: string | StaticImageData;\n imageAlt: string;\n imageSizes?: string;\n children: ReactNode;\n containerClassName?: string;\n} & WithDataTestId;\n\nconst defaultImageSizes = '(min-width: 780px) 50vw, 100vw';\n\nexport function RightImageLayout({\n backgroundColor,\n imageAlt,\n imageSrc,\n imageSizes,\n children,\n containerClassName,\n dataTestId,\n}: RightImageLayoutProps) {\n return (\n \n \n\n \n {children}\n \n \n );\n}\n","import { useTranslations } from 'next-intl';\nimport Image from 'next/image';\n\nimport { PrimaryButton, SecondaryButton } from '@/components/buttons';\nimport { Button } from '@/components/buttons/Button';\nimport { Link } from '@/i18n/navigation';\nimport { LinkDto } from '@/lib/marketing-page/dto/modules/shared';\nimport { PageActions } from '@/lib/types';\nimport checkmarkIcon from '@/public/icons/checkmarkIcon.svg';\nimport { WithDataTestId } from '@/types/with-data-testid';\n\nimport { Description } from '../shared/Description';\nimport { Eyebrow } from '../shared/Eyebrow';\nimport { RightImageLayout } from '../shared/RightImageLayout';\nimport { Title } from '../shared/Title';\nimport {\n BackgroundColorProps,\n ImageEyebrowProps,\n ImageProps,\n TextEyebrowProps,\n} from '../types';\n\ntype HeroWithRightImageModuleProps = {\n title?: string;\n titleClassName?: string;\n description?: string;\n eyebrow?: TextEyebrowProps | ImageEyebrowProps;\n background?: BackgroundColorProps;\n image: ImageProps;\n containerClassName?: string;\n ctaActions?: PageActions[];\n ctaLabels?: string[];\n onCTAClicked?: (action: PageActions) => void;\n itemsList?: string[];\n note?: string;\n descriptionClassName?: string;\n breadcrumb?: JSX.Element | null;\n ctaLink?: LinkDto;\n} & WithDataTestId;\n\nexport default function HeroWithRightImageModule({\n title,\n titleClassName,\n description,\n eyebrow,\n image,\n background,\n ctaActions,\n ctaLabels,\n onCTAClicked,\n itemsList,\n containerClassName,\n dataTestId,\n note,\n descriptionClassName,\n breadcrumb,\n ctaLink,\n}: HeroWithRightImageModuleProps) {\n const t = useTranslations('general');\n const showCta = ctaActions && ctaActions.length > 0 && onCTAClicked;\n\n return (\n \n {breadcrumb}\n \n {eyebrow && (\n \n )}\n\n {title && }\n\n {description && (\n <Description\n description={description}\n className={descriptionClassName}\n />\n )}\n\n {itemsList && (\n <ul>\n {itemsList.map((point) => (\n <li key={point} className=\"flex items-start my-2\">\n <Image\n className=\"mt-[5px] mr-4\"\n src={checkmarkIcon}\n alt={t('checkmark-icon-alt')}\n aria-hidden=\"true\"\n />\n {point}\n </li>\n ))}\n </ul>\n )}\n\n {ctaLink && (\n <div className=\"flex flex-col items-center justify-center gap-5 md:flex-row md:justify-start\">\n <Button\n as={Link}\n key={ctaLink?.label}\n href={ctaLink?.url}\n className=\"min-w-[200px]\"\n data-testid=\"primary-btn\"\n >\n {ctaLink?.label}\n </Button>\n </div>\n )}\n\n {showCta && (\n <div className=\"flex flex-col items-center justify-center gap-5 lg:flex-row md:justify-start\">\n {ctaActions.map((action, index) =>\n index === 0 ? (\n <PrimaryButton\n key={action}\n onClick={() => onCTAClicked(action)}\n className=\"min-w-[200px]\"\n data-testid=\"primary-btn\"\n >\n {ctaLabels?.[index] ?? t(`cta-${action}`)}\n </PrimaryButton>\n ) : (\n <SecondaryButton\n key={action}\n onClick={() => onCTAClicked(action)}\n className=\"min-w-[200px]\"\n data-testid=\"secondary-btn\"\n >\n {ctaLabels?.[index] ?? t(`cta-${action}`)}\n </SecondaryButton>\n )\n )}\n </div>\n )}\n\n {note && <p className=\"mt-5 italic\">{note}</p>}\n </div>\n </RightImageLayout>\n );\n}\n","import DetailedProductCard from '@/components/cards/DetailedProductCard';\nimport { LocationProductName } from '@/lib/locations/dto';\n\nimport { SectionModuleWrapper } from '../shared/SectionModuleWrapper';\nimport { BackgroundColors } from '../types';\n\ntype ProductCardListModuleProps = {\n title?: string;\n products: LocationProductName[];\n backgroundColor?: BackgroundColors;\n containerClassName?: string;\n translationKey?: string;\n showTag?: boolean;\n};\n\nexport default function ProductCardListModule({\n title,\n products,\n backgroundColor,\n containerClassName,\n translationKey,\n showTag,\n}: ProductCardListModuleProps) {\n return (\n <SectionModuleWrapper\n title={title}\n backgroundColor={backgroundColor}\n containerClassName={containerClassName}\n >\n <ul className=\"flex flex-col gap-6 md:flex-row\">\n {products.map((productName) => (\n <li className=\"flex-1 hover:shadow-md\" key={productName}>\n <DetailedProductCard\n translationKey={translationKey}\n name={productName}\n showTag={showTag}\n imgAttributes={{\n className: 'h-[225px]',\n sizes:\n '(min-width: 1140px) 384px, (min-width: 780px) calc(33.53vw - 47px), (min-width: 600px) calc(100vw - 82px), calc(100vw - 42px)',\n }}\n />\n </li>\n ))}\n </ul>\n </SectionModuleWrapper>\n );\n}\n","import clsx from 'clsx';\n\ntype DescriptionProps = {\n description: string;\n className?: string;\n};\n\nexport function Description({ description, className }: DescriptionProps) {\n return (\n <div\n className={clsx(`whitespace-normal lg:text-xl`, className)}\n dangerouslySetInnerHTML={{ __html: description }}\n data-testid=\"description\"\n />\n );\n}\n","import dynamic from 'next/dynamic';\n\nimport { WithDataTestId } from '@/types/with-data-testid';\nimport { getBackgroundSectionClassName } from '@/utils/marketing-landing-page';\n\nimport { BackgroundColors } from '../types';\n\nimport clsx from 'clsx';\n\nconst SecondaryHeading = dynamic(\n () => import('@/components/typography').then((mod) => mod.SecondaryHeading),\n { ssr: false }\n);\n\ntype SectionModuleWrapperProps = {\n title?: string;\n backgroundColor?: BackgroundColors;\n children: React.ReactNode;\n className?: string;\n id?: string;\n containerClassName?: string;\n} & WithDataTestId;\n\nexport function SectionModuleWrapper({\n title,\n backgroundColor,\n children,\n className,\n containerClassName,\n dataTestId,\n id,\n}: SectionModuleWrapperProps) {\n return (\n <section\n className={clsx(\n 'py-12 overflow-hidden',\n getBackgroundSectionClassName(backgroundColor),\n className\n )}\n id={id}\n data-testid={dataTestId}\n >\n <div className={clsx(containerClassName ?? 'medium-container')}>\n {title && <SecondaryHeading className=\"mb-6\">{title}</SecondaryHeading>}\n {children}\n </div>\n </section>\n );\n}\n","import { tiemposFont } from '@/theme/tiemposFont';\n\nimport clsx from 'clsx';\n\nexport default function PrimaryHeading({\n children,\n className,\n ...divProps\n}: React.ComponentPropsWithoutRef<'h1'>) {\n return (\n <h1\n className={clsx(\n tiemposFont.className,\n 'text-4xl font-medium tracking-[0.35px]',\n className\n )}\n {...divProps}\n >\n {children}\n </h1>\n );\n}\n","import { tiemposFont } from '@/theme/tiemposFont';\n\nimport clsx from 'clsx';\n\ntype SecondaryHeadingProps = React.ComponentPropsWithoutRef<'h2'> & {\n fontFamilyClassName?: string;\n isBigger?: boolean;\n};\n\nexport default function SecondaryHeading({\n fontFamilyClassName,\n children,\n className,\n isBigger = false,\n ...divProps\n}: SecondaryHeadingProps) {\n return (\n <h2\n className={clsx(\n 'font-medium leading-9',\n isBigger ? 'text-[28px] md:text-5xl' : 'text-[24px] md:text-[28px]',\n fontFamilyClassName ?? tiemposFont.className,\n className\n )}\n {...divProps}\n >\n {children}\n </h2>\n );\n}\n","import type {\n ComponentPropsWithoutRef,\n ElementType,\n PropsWithChildren,\n} from 'react';\n\nimport clsx from 'clsx';\n\ntype AsProp<E extends ElementType> = {\n as?: E;\n};\n\ntype ComponentProps<E extends ElementType> = PropsWithChildren<\n ComponentPropsWithoutRef<E> & AsProp<E>\n>;\n\nconst defaultElement = 'p';\n\nexport default function BodyBoldUppercase<\n E extends ElementType = typeof defaultElement\n>({ as, children, className, ...divProps }: ComponentProps<E>) {\n const Component = as ?? defaultElement;\n\n return (\n <Component\n className={clsx('text-base font-bold leading-6 uppercase', className)}\n {...divProps}\n >\n {children}\n </Component>\n );\n}\n","export { default as PrimaryHeading } from './PrimaryHeading';\nexport { default as SecondaryHeading } from './SecondaryHeading';\nexport { default as TertiaryHeading } from './TertiaryHeading';\nexport { default as BodyBoldUppercase } from './BodyBoldUppercase';\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport {\n DEFAULT_USER_GEOLOCALIZATION,\n getDefaultLatLng,\n getLocalizationFromIPAddress,\n} from '@/lib/geolocation';\nimport { LatLng } from '@/models/LatLng';\nimport { DEFAULT_COUNTRY } from '@/utils/constants';\n\nconst USER_GEOLOC_STORAGE_KEY = 'user-geoloc';\n\nexport type UserGeoLoc = {\n city: string;\n region: string;\n country: string;\n lnglat: LatLng;\n};\n\nexport function useUserLocalization({\n onUserLocalizationChange,\n}: {\n onUserLocalizationChange?: (userGeoLoc: UserGeoLoc) => void;\n} = {}) {\n const [userLocalization, setUserLocalization] = useState<UserGeoLoc>(\n DEFAULT_USER_GEOLOCALIZATION\n );\n const [isLocalizationFromDevice, setIsLocalizationFromDevice] =\n useState(false);\n const [isDeviceLocalizationDenied, setIsDeviceLocalizationDenied] =\n useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const userGeoLocStorage = window.sessionStorage.getItem(\n USER_GEOLOC_STORAGE_KEY\n );\n\n if (userGeoLocStorage != null) {\n const userGeoLoc = JSON.parse(userGeoLocStorage);\n\n onUserLocalizationChange?.(userGeoLoc);\n\n setUserLocalization(userGeoLoc);\n setIsLoading(false);\n return;\n }\n\n const getGeoloc = async () => {\n await getLocalizationFromIPAddress((result) => {\n onUserLocalizationChange?.(result);\n\n setUserLocalization(result);\n window.sessionStorage.setItem(\n USER_GEOLOC_STORAGE_KEY,\n JSON.stringify(result)\n );\n });\n setIsLoading(false);\n };\n\n getGeoloc();\n }\n }, []);\n\n const getDeviceLocalization = () => {\n setIsLoading(true);\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const nextUserLocalization = {\n city: userLocalization.city,\n region: userLocalization.region,\n country: userLocalization.country,\n lnglat: {\n lat: position.coords.latitude,\n lng: position.coords.longitude,\n },\n };\n\n onUserLocalizationChange?.(nextUserLocalization);\n\n setUserLocalization(nextUserLocalization);\n setIsLocalizationFromDevice(true);\n setIsLoading(false);\n },\n () => {\n setIsDeviceLocalizationDenied(true);\n setIsLoading(false);\n }\n );\n } else {\n setIsDeviceLocalizationDenied(true);\n setIsLoading(false);\n }\n };\n\n return {\n isLoading,\n isLocalizationFromDevice,\n isDeviceLocalizationDenied,\n city: userLocalization.city,\n region: userLocalization.region,\n country: userLocalization.country,\n lnglat: userLocalization.lnglat,\n getDeviceLocalization,\n };\n}\n","import { UserGeoLoc } from '@/hooks/useUserLocalization';\nimport { LatLng } from '@/models/LatLng';\nimport {\n CALIFORNIA_REGION,\n CANADA_COUNTRY_CODE,\n DEFAULT_COUNTRY,\n EUROPE_COUNTRIES_CODES,\n US_COUNTRY_CODE,\n} from '@/utils/constants';\nimport { tryFetchToJson } from '@/utils/http-request';\n\nconst DEFAULT_LAT_NY = 40.6976637;\nconst DEFAULT_LNG_NY = -74.1197637;\n\nexport function getDefaultLatLng(): LatLng {\n return { lng: DEFAULT_LNG_NY, lat: DEFAULT_LAT_NY };\n}\n\nexport const DEFAULT_USER_GEOLOCALIZATION: UserGeoLoc = {\n city: '',\n region: '',\n country: DEFAULT_COUNTRY,\n lnglat: getDefaultLatLng(),\n};\n\nexport async function getLocalizationFromIPAddress(\n callbackFn: (params: {\n city: string;\n region: string;\n country: string;\n lnglat: LatLng;\n }) => void\n) {\n const ipinfosUser = await tryFetchToJson<{\n loc: string;\n city: string;\n region: string;\n country: string;\n }>({\n fetchParams: { input: '/api/user-geolocation' },\n onFunctionalError: () => {\n callbackFn(DEFAULT_USER_GEOLOCALIZATION);\n },\n onTechnicalError: () => {\n callbackFn(DEFAULT_USER_GEOLOCALIZATION);\n },\n });\n\n if (ipinfosUser == null) return;\n\n return callbackFn({\n city: ipinfosUser.city,\n region: ipinfosUser.region,\n country: ipinfosUser.country,\n lnglat: getLatLngFromString(ipinfosUser.loc),\n });\n}\n\nexport function getLatLngFromString(coords: string): LatLng {\n const [lat, lng] = coords.split(',').map((x) => +x);\n\n return {\n lat,\n lng,\n };\n}\n\nexport function isEuropeCountry(country: string) {\n return EUROPE_COUNTRIES_CODES.includes(country.toLowerCase());\n}\n\nexport function isCanada(country: string) {\n return country.toLowerCase() === CANADA_COUNTRY_CODE.toLowerCase();\n}\n\nexport function isCalifornia(params: { region: string; country: string }) {\n const { region, country } = params;\n return (\n region.toLowerCase() === CALIFORNIA_REGION.toLowerCase() &&\n country.toLowerCase() === US_COUNTRY_CODE.toLowerCase()\n );\n}\n","export function replaceKeysFromString<T extends string | undefined>(\n originalValue: T,\n replacements?: { [key: string]: string }\n): T {\n if (originalValue == null || replacements == null) return originalValue;\n\n let result: string = originalValue;\n\n Object.keys(replacements).forEach((key) => {\n const placeholder = key; // Format the key as a placeholder\n result = result.replace(new RegExp(placeholder, 'g'), replacements[key]);\n });\n\n return result as T;\n}\n\nexport const normalizeAndConvertToUpperCase = (value: string) => {\n if (!value) return '';\n\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^a-z0-9-]+/g, '');\n\n const upperCased = decodeURIComponent(normalized)\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n\n return upperCased;\n};\n","export function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function fetchWithMinDuration<T>(promise: Promise<T>, ms: number) {\n return Promise.all([promise, delay(ms)]).then(([result]) => result);\n}\n","/* /!\\ values are tied to translations */\nexport enum PageActions {\n CHECKOUT = 'checkout',\n BOOK_TOUR = 'book-tour',\n BOOK_SPACE = 'book-space',\n BROKER_FORM = 'broker-form',\n INQUIRY_LANDLORD = 'inquiry-landlord',\n LINK = 'link',\n EXTERNAL_LINK = 'external-link',\n BOOK_MEETING_ROOM = 'book-meeting-room',\n MEETING_ROOM_SPECIAL_REQUEST = 'meeting-room-special-request',\n PURCHASE_COWORKING_DAY_PASS = 'purchase-coworking-day-pass',\n}\n\nexport enum Orientations {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n}\n","import {\n Duration,\n Interval,\n add as dateFnsAdd,\n addBusinessDays as dateFnsAddBusinessDays,\n addDays as dateFnsAddDays,\n addHours as dateFnsAddHours,\n addMinutes as dateFnsAddMinutes,\n addMonths as dateFnsAddMonths,\n differenceInDays as dateFnsDifferenceInDays,\n differenceInMinutes as dateFnsDifferenceInMinutes,\n eachDayOfInterval as dateFnsEachDayOfInterval,\n endOfMonth as dateFnsEndOfMonth,\n format as dateFnsFormat,\n getQuarter as dateFnsGetQuarter,\n isAfter as dateFnsIsAfter,\n isEqual as dateFnsIsEqual,\n isFuture as dateFnsIsFuture,\n isPast as dateFnsIsPast,\n isSameDay as dateFnsIsSameDay,\n isSameHour as dateFnsIsSameHour,\n isSameISOWeek as dateFnsIsSameISOWeek,\n isSameMonth as dateFnsIsSameMonth,\n isWithinInterval as dateFnsIsWithinInterval,\n parse as dateFnsParse,\n setHours as dateFnsSetHours,\n setMinutes as dateFnsSetMinutes,\n startOfMonth as dateFnsStartOfMonth,\n subHours as dateFnsSubHours,\n differenceInHours as dateFnsdifferenceInHours,\n setDefaultOptions,\n} from 'date-fns';\nimport { formatInTimeZone, zonedTimeToUtc } from 'date-fns-tz';\nimport { enUS as en, fr, nl } from 'date-fns/locale';\n\nimport { DateRange, PartialDateRange } from '@/models/DateRange';\n\nconst LOCALES = [en, fr, nl];\nexport const DATE_LOCALE_EN = en;\nexport const SECOND_IN_MS = 1000;\nexport const MINUTE_IN_SECONDES = 60;\nexport const HOUR_IN_MINUTES = 60;\nexport const HOUR_IN_MS = HOUR_IN_MINUTES * MINUTE_IN_SECONDES * SECOND_IN_MS;\nexport const DAY_IN_MS = 24 * HOUR_IN_MS;\n\nexport function getFirstDayOfNextMonth(startDate: Date): Date {\n const nextMonth = addMonths(startDate, 1);\n nextMonth.setDate(1);\n\n return nextMonth;\n}\n\nexport function addMonths(startDate: Date, amount: number): Date {\n return dateFnsAddMonths(startDate, amount);\n}\n\nexport function isWithinInterval(date: Date, amount: Interval): boolean {\n return dateFnsIsWithinInterval(date, amount);\n}\n\nexport function format(\n date: Date,\n format: string,\n options?: {\n locale?: Locale;\n }\n): string {\n return dateFnsFormat(date, format, options);\n}\n\nexport function getQuarter(date: Date) {\n return dateFnsGetQuarter(date);\n}\n\nexport function differenceInDays(dateLeft: Date, dateRight: Date) {\n return dateFnsDifferenceInDays(dateLeft, dateRight);\n}\n\nexport function addDays(date: Date, amount: number) {\n return dateFnsAddDays(date, amount);\n}\n\nexport function endOfMonth(date: Date) {\n return dateFnsEndOfMonth(date);\n}\n\nexport function addHours(date: Date, hours: number) {\n return dateFnsAddHours(date, hours);\n}\n\nexport function setLocale(locale: string) {\n setDefaultOptions({ locale: LOCALES.find((l) => l.code === locale) });\n}\n\nexport function differenceInHours(dateLeft: Date, dateRight: Date) {\n return dateFnsdifferenceInHours(dateLeft, dateRight);\n}\n\nexport function differenceInMinutes(dateLeft: Date, dateRight: Date) {\n return dateFnsDifferenceInMinutes(dateLeft, dateRight);\n}\n\nexport function eachDayOfInterval(start: Date, end: Date) {\n return dateFnsEachDayOfInterval({ start, end });\n}\n\nexport function addMinutes(date: Date, amount: number) {\n return dateFnsAddMinutes(date, amount);\n}\n\nexport function add(date: Date, duration: Duration) {\n return dateFnsAdd(date, duration);\n}\n\nexport function addBusinessDays(date: Date, amount: number) {\n return dateFnsAddBusinessDays(date, amount);\n}\n\nexport function parse(time: string, format: string, date: Date) {\n return dateFnsParse(time, format, date);\n}\n\nexport function isSameHour(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameHour(dateLeft, dateRight);\n}\n\nexport function isSameMonth(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameMonth(dateLeft, dateRight);\n}\n\nexport function isEqual(dateLeft: Date, dateRight: Date) {\n return dateFnsIsEqual(dateLeft, dateRight);\n}\nexport function isAfter(dateLeft: Date, dateRight: Date) {\n return dateFnsIsAfter(dateLeft, dateRight);\n}\n\nexport function isSameDay(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameDay(dateLeft, dateRight);\n}\n\nexport function setHours(date: Date, hours: number) {\n return dateFnsSetHours(date, hours);\n}\n\nexport function setMinutes(date: Date, minutes: number) {\n return dateFnsSetMinutes(date, minutes);\n}\n\nexport function subHours(date: Date, amount: number) {\n return dateFnsSubHours(date, amount);\n}\n\nexport function getFormattedTime(time: string): string {\n const today = new Date();\n today.setHours(...(time.split(':').map(Number) as [number, number]));\n return format(today, 'p');\n}\n\nexport function getNbThirtyMinuteSlots(startDate: Date, endDate: Date): number {\n return differenceInHours(endDate, startDate) * 2;\n}\n\nexport function getThirtyMinuteSlots(startDate: Date, endDate: Date): Date[] {\n const dateHourDifference = getNbThirtyMinuteSlots(startDate, endDate);\n return Array.from({ length: dateHourDifference + 1 }, (_, index) => {\n return addMinutes(startDate, index * 30);\n });\n}\n\nexport function getFormattedDateWithTime(date: Date, time: string) {\n const today = new Date();\n today.setHours(...(time.split(':').map(Number) as [number, number]));\n today.setSeconds(0);\n return format(date, 'yyyy-MM-dd') + 'T' + format(today, 'HH:mm:ss');\n}\n\nexport function isPast(date: Date): boolean {\n return dateFnsIsPast(date);\n}\n\nexport function isFuture(date: Date): boolean {\n return dateFnsIsFuture(date);\n}\n\n// Used only for the time\nexport function getDateFromTime(hour: number, minute: number) {\n return new Date(2000, 1, 1, hour, minute, 0);\n}\n\nexport function createDateFromLocalDate(localDate: string) {\n return new Date(`${localDate}Z`);\n}\n\nexport function getISOTime(date: Date) {\n return getTimeFromLocalDate(date.toISOString());\n}\n\nexport function getTimeFromLocalDate(localDate: string) {\n return localDate.split('T')[1].slice(0, 5);\n}\n\nexport function isValidDate(date: string) {\n return new Date(date).toString() !== 'Invalid Date';\n}\n\nexport function isPastDay(date: Date) {\n const today = new Date(new Date().toISOString().split('T')[0]);\n\n return date.getTime() < today.getTime();\n}\n\nexport function createLocalDay(local: string) {\n const day = local.split('T')[0];\n return new Date(day.replace(/-/g, '/'));\n}\n\nexport function generateMonthDayDates(month: Date, margin = 0) {\n const nextMonth = getNextMonth(month);\n\n const start = addDays(month, -margin);\n const end = addDays(nextMonth, margin);\n\n return generateDates(start, end);\n}\n\nexport function getNextMonth(month: Date) {\n const nextMonth = new Date(month);\n\n nextMonth.setMonth(nextMonth.getMonth() + 1);\n\n return nextMonth;\n}\n\nexport function generateDates(start: Date, end: Date) {\n const dates: Date[] = [];\n\n const date = new Date(start);\n while (date < end) {\n dates.push(new Date(date));\n date.setDate(date.getDate() + 1);\n }\n\n return dates;\n}\n\nexport function getMonthDate(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function getDateFromLocal(localDate: string | Date, timeZone: string) {\n return zonedTimeToUtc(localDate, timeZone);\n}\n\nexport function getDateFormatInTimeZone(\n date: Date,\n timeZone: string,\n format: string\n) {\n return formatInTimeZone(date, timeZone, format);\n}\n\nexport function getTimeInTimeZone(date: Date, timeZone: string) {\n return getDateFormatInTimeZone(date, timeZone, 'HH:mm');\n}\n\nexport function getNbHours(start: Date, end: Date): number {\n return (end.getTime() - start.getTime()) / HOUR_IN_MS;\n}\n\nexport function formatTime(time: string) {\n return format(new Date(`2000-01-01T${time}:00`), 'h:mm a');\n}\n\nexport function formatTimeLowercase(time: string) {\n return formatTime(time).toLowerCase();\n}\n\nexport function getTomorrowDay() {\n return getNextDay(formatToDay(new Date()));\n}\n\nexport function formatToISODay(date: Date | string) {\n const dateStr = typeof date === 'string' ? date : date.toISOString();\n return dateStr.split('T')[0];\n}\n\nexport function getLocalDay(date: Date) {\n const isoDay = formatToISODay(date);\n return isoDay.replaceAll(/-/g, '/');\n}\n\nexport function getLocalDateFromDay(day: string) {\n return new Date(day.replaceAll(/-/g, '/'));\n}\n\nexport function formatToDay(date: Date) {\n return format(date, 'yyyy-MM-dd');\n}\n\nexport function getNbDays({ from, to }: DateRange): number {\n const timeGap = to.getTime() - from.getTime() + 1;\n return Math.ceil(timeGap / DAY_IN_MS);\n}\n\nexport function isDateRange(\n date: PartialDateRange | undefined\n): date is DateRange {\n return date?.from instanceof Date && date?.to instanceof Date;\n}\n\nexport function getNextDay(day: string) {\n const date = new Date(day);\n\n return formatToISODay(addDays(date, 1));\n}\n\nexport function getAbbreviatedDayName(day: string) {\n const date = parse(day, 'yyyy-MM-dd', new Date());\n return format(date, 'EEE', { locale: DATE_LOCALE_EN }).toLowerCase();\n}\n\nexport function eachDayOfDateRange({ from, to }: DateRange) {\n return dateFnsEachDayOfInterval({ start: from, end: to });\n}\n\nexport function isWeekEnd(day: string) {\n const dayName = getAbbreviatedDayName(day);\n\n return ['sat', 'sun'].includes(dayName);\n}\n\nexport function isSameWeek(day1: string, day2: string) {\n return dateFnsIsSameISOWeek(new Date(day1), new Date(day2));\n}\n\nexport function startOfMonth(date: Date) {\n return dateFnsStartOfMonth(date);\n}\n","import { NextRequest } from 'next/server';\n\nimport { delay } from '@/lib/promises';\n\nimport { SECOND_IN_MS } from './date-utils';\nimport { captureException, captureMessage } from './sentry';\n\nconst DEFAULT_RETRY_DELAY = 2 * SECOND_IN_MS;\nexport const DEFAULT_NB_RETRIES = 3;\n\nexport enum HttpMethods {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Patch = 'PATCH',\n Options = 'OPTIONS',\n Delete = 'DELETE',\n}\n\nexport enum HttpErrorNames {\n MethodNotAllowed = 'MethodNotAllowed',\n}\n\nexport type OnErrorResParams = {\n status: number;\n body: any;\n};\n\nexport async function tryFetchToJson<T>(params: {\n fetchParams: { input: RequestInfo | URL; init?: RequestInit | undefined };\n onSuccess?: (response: T) => any;\n onFunctionalError?: (res?: OnErrorResParams) => any;\n onTechnicalError?: (err: any) => any;\n withoutResponse?: boolean;\n skipFetchError?: boolean;\n withAuthToken?: boolean;\n nbRetries?: number;\n retryDelay?: number;\n}): Promise<T> {\n const {\n fetchParams,\n onSuccess,\n onFunctionalError,\n onTechnicalError,\n withoutResponse,\n skipFetchError,\n nbRetries = 0,\n retryDelay = DEFAULT_RETRY_DELAY,\n } = params;\n\n const fetchParamsInit = {\n ...fetchParams.init,\n headers: {\n ...fetchParams.init?.headers,\n ...(params.withAuthToken && {\n Authorization: `Bearer ${await getUserToken()}`,\n }),\n },\n };\n\n const retry = async () => {\n await delay(retryDelay);\n return tryFetchToJson({\n ...params,\n nbRetries: nbRetries - 1,\n });\n };\n\n try {\n const res = await fetch(fetchParams.input, fetchParamsInit);\n\n if (res.status >= 400) {\n captureMessage(\n `Failed to fetch ${fetchParams.input} with status code ${res.status}`,\n res.status < 500 ? 'warning' : 'error'\n );\n\n if (nbRetries > 0) {\n return retry();\n }\n\n try {\n const body = await res.json();\n return onFunctionalError?.({ status: res.status, body });\n } catch {\n return onFunctionalError?.({ status: res.status, body: undefined });\n }\n }\n\n const response =\n res.status === 204 || withoutResponse ? null : ((await res.json()) as T);\n\n if (onSuccess == null) {\n return response as T;\n }\n\n return onSuccess(response as T);\n } catch (err: any) {\n if (!skipFetchError) {\n captureException(\n `Failed to fetch ${fetchParams.input}: ${err?.toString()}`,\n err\n );\n }\n\n if (nbRetries > 0) {\n return retry();\n }\n\n return onTechnicalError?.(err);\n }\n}\n\nexport function getClientIp(req: NextRequest): string {\n let ip = req.headers.get('x-real-ip') as string;\n\n const forwardedFor = req.headers.get('x-forwarded-for') as string;\n if (!ip && forwardedFor) {\n ip = forwardedFor?.split(',').at(0) ?? 'Unknown';\n }\n\n return ip;\n}\n\nexport const getUserToken = async () => {\n const AuthHelpers = await import('@/lib/authentication/helpers');\n const { isValid } = await AuthHelpers.checkUserToken();\n const { token } = await AuthHelpers.getUserToken();\n\n let userToken = token;\n if (!isValid) {\n try {\n const { message } = await AuthHelpers.refreshUserToken();\n userToken = message.refreshToken.token;\n } catch (error) {\n AuthHelpers.logout(); // making sure we remove auth data from local storage\n }\n }\n\n return userToken;\n};\n","import * as Sentry from '@sentry/nextjs';\n\nexport function captureException(message: string, error?: Error) {\n Sentry.captureException(\n new Error(message, {\n cause: error,\n })\n );\n}\n\nexport function captureMessage(\n message: string,\n severity?: Sentry.SeverityLevel\n) {\n Sentry.captureMessage(message, severity ?? 'info');\n}\n","export default {\"src\":\"/_next/static/media/checkmarkIcon.911e9b33.svg\",\"height\":12,\"width\":15,\"blurWidth\":0,\"blurHeight\":0};"],"names":["Promise","resolve","then","__webpack_require__","bind","GALLERY_AMENITIES_IMG","GALLERY_CAFE_IMG","GALLERY_COMMON_AREA_1_IMG","GALLERY_COMMON_AREA_2_IMG","GALLERY_MEETING_ROOM_IMG","GALLERY_OFFICE_IMG","GALLERY_PHONE_BOOTH_IMG","GALLERY_WELLNESS_ROOM_IMG","BLOG_POSTS_BY_KEY","imageSrc","date","url","NearbyLocationsModule","dynamic","e","SolutionPage","param","productName","mapboxAccessToken","t","useTranslations","router","useRouter","country","useUserLocalization","productData","getProductsPageData","params","access","galleryImages","src","alt","hero","nbItems","ctasActions","PageActions","CHECKOUT","BOOK_TOUR","howItWorks","link","valueCardsKeys","valueCardsData","isHidden","US","CA","description","UK","otherProductsToDisplay","blogPostsKey","suites","dedicatedOffice","virtual","meetingRoom","BOOK_MEETING_ROOM","MEETING_ROOM_SPECIAL_REQUEST","hideNumberedCard","coworkingDayPass","hasDescription","hasDescriptionNote","PURCHASE_COWORKING_DAY_PASS","images","map","concat","itemsList","Array","n","index","blogPosts","key","title","image","undefined","descriptionNote","jsx_runtime","jsxs","main","jsx","HeroWithRightImageModule","containerClassName","eyebrow","type","EyebrowType","Text","text","note","background","BackgroundType","Color","color","BackgroundColors","ALMOND","getProductPageImage","ctaActions","onCTAClicked","getUrlFromAction","action","BOOK_SPACE","push","BasicCardListModule","items","getValueCardDescription","section","className","HorizontalGallery","getHowItWorksTitle","rich","Link","href","chunks","isNumbered","orientation","Orientations","Vertical","cardsListContainerClassName","BlogPostsModule","posts","ProductCardListModule","products","ButtonAction","ButtonSize","Button","as","size","isLoading","children","disabled","otherProps","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","Component","clsx","getSizeClasses","getActionClasses","CircleLoader","DetailedProductCard","imgAttributes","name","showTag","translationKey","getProductPageLink","bulletPoints","getProductPerksTranslationsKey","includes","CardWrapper","imgClassName","imgSizes","sizes","CardContent","div","p","ul","li","Image","checkmarkIcon","aria-hidden","perk","CardFooter","TitleVariant","itemsTitleFontFamily","titleVariant","dataTestId","valueToBeReplacedObj","TitleComponent","BodyBoldUppercase","SecondaryHeading","itemCards","filter","i","item","h3","tiemposFont","span","dangerouslySetInnerHTML","__html","replaceKeysFromString","getBackgroundSectionClassName","data-testid","Horizontal","BlogPostCard","formattedDate","Date","split","join","TertiaryHeading","ctaLabel","SectionModuleWrapper","backgroundColor","h2","post","RightImageLayout","imageAlt","imageSizes","ImageWithPlaceholder","width","height","priority","titleClassName","ctaLabels","descriptionClassName","breadcrumb","ctaLink","showCta","length","Eyebrow","Title","Description","point","label","PrimaryButton","onClick","SecondaryButton","mod","ssr","id","PrimaryHeading","divProps","h1","fontFamilyClassName","isBigger","USER_GEOLOC_STORAGE_KEY","onUserLocalizationChange","arguments","userLocalization","setUserLocalization","useState","DEFAULT_USER_GEOLOCALIZATION","isLocalizationFromDevice","setIsLocalizationFromDevice","isDeviceLocalizationDenied","setIsDeviceLocalizationDenied","setIsLoading","useEffect","userGeoLocStorage","window","sessionStorage","getItem","userGeoLoc","JSON","parse","getGeoloc","getLocalizationFromIPAddress","result","setItem","stringify","city","region","lnglat","getDeviceLocalization","navigator","geolocation","getCurrentPosition","nextUserLocalization","lat","position","coords","latitude","lng","longitude","getDefaultLatLng","DEFAULT_COUNTRY","callbackFn","ipinfosUser","tryFetchToJson","fetchParams","input","onFunctionalError","onTechnicalError","getLatLngFromString","x","loc","originalValue","replacements","Object","keys","forEach","replace","normalizeAndConvertToUpperCase","decodeURIComponent","value","trim","toLowerCase","word","charAt","toUpperCase","slice","delay","ms","setTimeout","fetchWithMinDuration","promise","all","LOCALES","en","fr","nl","DATE_LOCALE_EN","SECOND_IN_MS","MINUTE_IN_SECONDES","HOUR_IN_MINUTES","HOUR_IN_MS","DAY_IN_MS","getFirstDayOfNextMonth","startDate","nextMonth","addMonths","setDate","amount","dateFnsAddMonths","isWithinInterval","dateFnsIsWithinInterval","format","options","dateFnsFormat","getQuarter","dateFnsGetQuarter","differenceInDays","dateLeft","dateRight","dateFnsDifferenceInDays","addDays","dateFnsAddDays","endOfMonth","dateFnsEndOfMonth","addHours","hours","dateFnsAddHours","setLocale","locale","setDefaultOptions","find","l","code","differenceInHours","dateFnsdifferenceInHours","differenceInMinutes","dateFnsDifferenceInMinutes","eachDayOfInterval","start","end","dateFnsEachDayOfInterval","addMinutes","dateFnsAddMinutes","add","duration","dateFnsAdd","addBusinessDays","dateFnsAddBusinessDays","time","dateFnsParse","isSameHour","dateFnsIsSameHour","isSameMonth","dateFnsIsSameMonth","isEqual","dateFnsIsEqual","isAfter","dateFnsIsAfter","isSameDay","dateFnsIsSameDay","setHours","dateFnsSetHours","setMinutes","minutes","dateFnsSetMinutes","subHours","dateFnsSubHours","getFormattedTime","today","Number","getNbThirtyMinuteSlots","endDate","getThirtyMinuteSlots","from","dateHourDifference","_","getFormattedDateWithTime","setSeconds","isPast","dateFnsIsPast","isFuture","dateFnsIsFuture","getDateFromTime","hour","minute","createDateFromLocalDate","localDate","getISOTime","getTimeFromLocalDate","toISOString","isValidDate","toString","isPastDay","getTime","createLocalDay","local","day","generateMonthDayDates","month","margin","getNextMonth","generateDates","setMonth","getMonth","dates","getDate","getMonthDate","getFullYear","getDateFromLocal","timeZone","zonedTimeToUtc","getDateFormatInTimeZone","formatInTimeZone","getTimeInTimeZone","getNbHours","formatTime","formatTimeLowercase","getTomorrowDay","getNextDay","formatToDay","formatToISODay","dateStr","getLocalDay","isoDay","replaceAll","getLocalDateFromDay","getNbDays","to","Math","ceil","timeGap","isDateRange","getAbbreviatedDayName","eachDayOfDateRange","isWeekEnd","isSameWeek","day1","day2","dateFnsIsSameISOWeek","startOfMonth","dateFnsStartOfMonth","HttpMethods","DEFAULT_RETRY_DELAY","DEFAULT_NB_RETRIES","onSuccess","withoutResponse","skipFetchError","nbRetries","retryDelay","fetchParamsInit","init","headers","withAuthToken","Authorization","getUserToken","retry","res","fetch","status","captureMessage","body","json","response","err","captureException","HttpErrorNames","AuthHelpers","isValid","checkUserToken","token","userToken","message","refreshUserToken","refreshToken","error","logout","Sentry","cause","severity","__webpack_exports__"],"sourceRoot":""}