{"version":3,"file":"static/chunks/845-09067cb4822a2486.js","mappings":"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","sources":["webpack://_N_E/../../libs/osc/banner-notification/src/lib/banner-notification.tsx","webpack://_N_E/../../libs/osc/banner-notification/src/index.ts","webpack://_N_E/./generated/react-query.ts","webpack://_N_E/./utils/forwardUri.ts","webpack://_N_E/./utils/feature-toggles.ts","webpack://_N_E/../../libs/osc/popup/src/lib/popup.context.tsx","webpack://_N_E/../../libs/osc/popup/src/lib/popup.utils.ts","webpack://_N_E/../../libs/osc/popup/src/lib/popup.tsx","webpack://_N_E/../../libs/utilities/use-forked-ref/src/lib/use-forked-ref.tsx","webpack://_N_E/../../libs/utilities/use-forked-ref/src/index.ts","webpack://_N_E/../../libs/osc/popup/src/lib/popup.button.tsx","webpack://_N_E/../../libs/osc/popup/src/lib/popup.content.tsx","webpack://_N_E/../../libs/osc/popup/src/index.ts","webpack://_N_E/../../libs/utilities/use-rect/src/lib/oberserve-rect.tsx","webpack://_N_E/../../libs/utilities/use-rect/src/lib/use-rect.tsx","webpack://_N_E/../../libs/utilities/use-rect/src/lib/index.ts","webpack://_N_E/../../libs/utilities/use-rect/src/index.ts","webpack://_N_E/../../libs/osc/footer/src/lib/footer.tsx","webpack://_N_E/../../libs/osc/footer/src/lib/index.ts","webpack://_N_E/../../libs/osc/footer/src/index.ts","webpack://_N_E/./components/footer/footer-links.tsx","webpack://_N_E/./components/footer/index.tsx","webpack://_N_E/../../libs/osc/login/src/lib/login.types.ts","webpack://_N_E/../../libs/osc/login/src/lib/frame.tsx","webpack://_N_E/../../libs/osc/login/src/lib/login.icon.tsx","webpack://_N_E/../../libs/osc/login/src/lib/login.tsx","webpack://_N_E/../../libs/osc/login/src/index.ts","webpack://_N_E/../../libs/queries/osc-language-selector/src/generated/queries.ts","webpack://_N_E/../../libs/queries/osc-language-selector/src/index.ts","webpack://_N_E/../../libs/osc/language-selector/src/lib/osc-language-code-names.tsx","webpack://_N_E/../../libs/utilities/get-language-direction/src/lib/get-language-direction.ts","webpack://_N_E/../../libs/osc/language-selector/src/lib/hooks/useLanguageSelectorLanguages.ts","webpack://_N_E/../../libs/utilities/accessibility/src/lib/use-has-user-modified-font-defaults.ts","webpack://_N_E/../../libs/utilities/accessibility/src/lib/index.ts","webpack://_N_E/../../libs/utilities/accessibility/src/index.ts","webpack://_N_E/../../libs/osc/language-selector/src/lib/osc-language-selector.tsx","webpack://_N_E/../../libs/osc/language-selector/src/index.ts","webpack://_N_E/../../libs/osc/drawer/src/lib/drawer.tsx","webpack://_N_E/../../libs/osc/drawer/src/index.ts","webpack://_N_E/../../libs/osc/header/src/lib/gql/queries.ts","webpack://_N_E/../../libs/osc/header/src/lib/header.utilities.tsx","webpack://_N_E/../../libs/osc/header/src/lib/header.logo.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/nav-items.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/mvtest-nhcbp-5758/nav-item-glow.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/popup-contents.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/mvtest-nhcbp-5758/speech-bubble.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/mvtest-nhcbp-5758/nav-item-speech-bubble.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/mega-menu.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/nav-drawer-list.tsx","webpack://_N_E/../../libs/osc/header/src/lib/hooks/useActiveUserLinks.ts","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/brand-header-body.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/queries/generated/queries.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/auto-complete.ts","webpack://_N_E/../../libs/utilities/feature-toggles-configs/src/lib/getFeatureToggleConfig.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/constants/featureToggles.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/hooks/use-disable-addresses-toggle.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/address-fields.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/password-fields.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/form-validation-regex.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/phone-fields.tsx","webpack://_N_E/../../libs/osc/markdown/src/lib/markdown.tsx","webpack://_N_E/../../libs/osc/markdown/src/index.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/marketing-content-css.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/marketing-content.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/utils/join-form-analytics.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/join-form.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/index.ts","webpack://_N_E/../../libs/osc/join-form/src/index.ts","webpack://_N_E/../../libs/osc/join-modal-button/src/lib/osc-join-modal-button.tsx","webpack://_N_E/../../libs/osc/join-modal-button/src/index.ts","webpack://_N_E/../../libs/osc/header/src/lib/header.tsx","webpack://_N_E/../../libs/osc/header/src/lib/util/filter-mega-nav-experiments.ts","webpack://_N_E/../../libs/osc/header/src/lib/hooks/use-filter-mega-nav-experiments.ts","webpack://_N_E/../../libs/osc/header/src/index.ts","webpack://_N_E/./utils/honors.ts","webpack://_N_E/./hooks/use-active-nav-links.ts","webpack://_N_E/./components/honors-header/index.tsx","webpack://_N_E/./components/honors-layout/honors-layout.tsx"],"sourcesContent":["import type * as React from 'react';\nimport cx from 'classnames';\nimport Icon from '@dx-ui/osc-icon';\nimport type { IconProps } from '@dx-ui/osc-icon';\n\nexport type BannerNotificationProps = {\n  /** Content to be displayed in banner notification. */\n  children: React.ReactNode;\n  /** The status to be use. */\n  status: 'error' | 'success' | 'normal';\n  customIcon?: IconProps;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst STATUS_ROLE_MAPPER = Object.freeze({\n  error: 'assertive',\n  success: 'polite',\n  normal: 'polite',\n});\n\n/**\n * Displays a banner notification message with an icon.\n */\nexport const BannerNotification = ({\n  status,\n  children,\n  className,\n  customIcon,\n  ...rest\n}: BannerNotificationProps) => {\n  return (\n    <div\n      className={cx(\n        'flex w-full items-center gap-x-2 p-4 sm:px-6',\n        {\n          'bg-danger-alt text-danger': status === 'error',\n          'bg-success-alt text-success': status === 'success',\n          'bg-bg-alt text-bg-inverse': status === 'normal',\n        },\n        className\n      )}\n      aria-live={STATUS_ROLE_MAPPER[status]}\n      aria-atomic={true}\n      data-testid=\"bannerNotification\"\n      {...rest}\n    >\n      {customIcon ? (\n        <Icon {...customIcon} />\n      ) : (\n        <>\n          {status === 'error' && <Icon name=\"close-circle\" variant=\"solid\" />}\n          {status === 'success' && <Icon name=\"check-circle\" variant=\"solid\" />}\n        </>\n      )}\n      {children}\n    </div>\n  );\n};\n","export * from './lib/banner-notification';\n","import type * as Types from './types';\n\nimport {\n  useQuery,\n  type QueryClient,\n  type FetchQueryOptions,\n  type UseQueryOptions,\n} from '@tanstack/react-query';\nimport type { DXError } from '@dx-ui/types-graphql';\n\nexport const FeatureTogglesDocument = {\n  operationName: 'featureToggles',\n  operationString: `query featureToggles($flags: [String]!) {\n  featureToggles(names: $flags) {\n    id: name\n    name\n    enabled\n  }\n}`,\n  originalOpName: 'featureToggles',\n};\nexport function useFeatureTogglesQuery<TData = Types.FeatureTogglesQuery, TError = DXError>(\n  variables: Types.FeatureTogglesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.FeatureTogglesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.FeatureTogglesQuery, TError, TData>({\n    queryKey: [FeatureTogglesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideFeatureTogglesQuery(\n  queryClient: QueryClient,\n  variables: Types.FeatureTogglesQueryVariables,\n  options?: FetchQueryOptions<Types.FeatureTogglesQuery>\n) {\n  return queryClient.fetchQuery<Types.FeatureTogglesQuery>({\n    queryKey: [FeatureTogglesDocument, variables],\n    ...options,\n  });\n}\n\nexport const NavigationDocument = {\n  operationName: 'brand',\n  operationString: `query brand($brandCode: String!, $language: String!) {\n  brand(brandCode: $brandCode, language: $language) {\n    header {\n      sections {\n        links {\n          adaDescription\n          label\n          url\n          isNewWindow\n          experimentationConfiguration {\n            agentId\n            variation\n            goal\n            value\n          }\n          secondaryLinks {\n            label\n            adaDescription\n            campaignId\n            isNewWindow\n            url\n            experimentationConfiguration {\n              agentId\n              variation\n              goal\n              value\n            }\n          }\n        }\n      }\n    }\n    footer {\n      sections {\n        links {\n          adaDescription\n          label\n          url\n          isNewWindow\n          experimentationConfiguration {\n            agentId\n            variation\n            goal\n            value\n          }\n        }\n      }\n    }\n  }\n}`,\n  originalOpName: 'navigation',\n};\nexport function useNavigationQuery<TData = Types.NavigationQuery, TError = DXError>(\n  variables: Types.NavigationQueryVariables,\n  options?: Omit<UseQueryOptions<Types.NavigationQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.NavigationQuery, TError, TData>({\n    queryKey: [NavigationDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideNavigationQuery(\n  queryClient: QueryClient,\n  variables: Types.NavigationQueryVariables,\n  options?: FetchQueryOptions<Types.NavigationQuery>\n) {\n  return queryClient.fetchQuery<Types.NavigationQuery>({\n    queryKey: [NavigationDocument, variables],\n    ...options,\n  });\n}\n\nexport const Smb_ProgramAccountsDocument = {\n  operationName: 'smb_ProgramAccounts',\n  operationString: `query smb_ProgramAccounts($guestId: BigInt!, $language: String!) {\n  programAccounts(guestId: $guestId, language: $language) {\n    accountId\n    memberStatus\n    memberId\n    accountName\n    accountStatus\n  }\n}`,\n  originalOpName: 'smb_ProgramAccounts',\n};\nexport function useSmb_ProgramAccountsQuery<\n  TData = Types.Smb_ProgramAccountsQuery,\n  TError = DXError\n>(\n  variables: Types.Smb_ProgramAccountsQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Smb_ProgramAccountsQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Smb_ProgramAccountsQuery, TError, TData>({\n    queryKey: [Smb_ProgramAccountsDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideSmb_ProgramAccountsQuery(\n  queryClient: QueryClient,\n  variables: Types.Smb_ProgramAccountsQueryVariables,\n  options?: FetchQueryOptions<Types.Smb_ProgramAccountsQuery>\n) {\n  return queryClient.fetchQuery<Types.Smb_ProgramAccountsQuery>({\n    queryKey: [Smb_ProgramAccountsDocument, variables],\n    ...options,\n  });\n}\n","const allowedHost = 'hilton.com';\n\nexport const isValidHost = (host: string) => host.endsWith(allowedHost);\nexport const isRelative = (url: string) =>\n  (url && typeof url === 'string' && url.startsWith('/')) || false;\nexport const buildForwardUrl = (relativeUrl: string) => `${window.location.origin}${relativeUrl}`;\n\nexport const isValidForwardUri = (forwardPageURI: string) => {\n  if (!forwardPageURI) {\n    return false;\n  }\n  if (isRelative(forwardPageURI)) {\n    return true;\n  }\n  if (forwardPageURI.startsWith('javascript:')) {\n    return false;\n  }\n  try {\n    const forwardURL = new URL(forwardPageURI);\n    return isValidHost(forwardURL.host);\n  } catch {\n    return false;\n  }\n};\n\nexport const getTranslateRuleUrl = (path: string): string => {\n  let translateRuleUrl = (path?.includes('?') ? path.slice(0, path.indexOf('?')) : path) || '';\n  if (!translateRuleUrl?.endsWith('/')) {\n    translateRuleUrl = translateRuleUrl + '/';\n  }\n\n  return translateRuleUrl;\n};\n","import {\n  ALT_AUTH_SOURCE_ID,\n  DEFAULT_AUTH_SOURCE_ID,\n  FEATURE_TOGGLES,\n  NHCGUEST_5800_GUEST_RECAPTCHA_OFF,\n  NHCGUEST_5857_PARTNER_RECAPTCHA_OFF,\n} from './constants';\nimport type { FeatureTogglesQuery } from '../generated/types';\nimport type { QueryClient } from '@tanstack/react-query';\nimport { serverSideFeatureTogglesQuery } from '../generated/react-query';\nimport { generateError } from '@dx-ui/utilities-generate-error';\nimport { logError } from '@dx-ui/framework-logger';\n\nexport const getServerSideFeatureToggles = async (queryClient: QueryClient) => {\n  const { featureToggles } = await serverSideFeatureTogglesQuery(queryClient, {\n    flags: FEATURE_TOGGLES,\n  }).catch((err) => {\n    const error = generateError(err);\n    logError('[dx-auth2-ui] - Error retrieving feature-toggles', error);\n    return { featureToggles: [] };\n  });\n  return { featureToggles };\n};\n\nexport const getDisplayRecaptcha = (\n  sourceId: string,\n  toggles: FeatureTogglesQuery['featureToggles']\n) => {\n  if (!sourceId) {\n    return true;\n  }\n  const suppressRecaptcha = isFeatureEnabled(toggles, NHCGUEST_5800_GUEST_RECAPTCHA_OFF);\n  if (![DEFAULT_AUTH_SOURCE_ID, ALT_AUTH_SOURCE_ID].includes(sourceId.toUpperCase())) {\n    return true;\n  }\n  return !suppressRecaptcha;\n};\n\nexport const getDisplayPartnerRecaptcha = (toggles: FeatureTogglesQuery['featureToggles']) => {\n  const suppressRecaptcha = isFeatureEnabled(toggles, NHCGUEST_5857_PARTNER_RECAPTCHA_OFF);\n  return !suppressRecaptcha;\n};\n\nexport const isFeatureEnabled = (\n  toggles: FeatureTogglesQuery['featureToggles'],\n  toggleName: string\n) => {\n  try {\n    return toggles.find(({ name }) => toggleName === name)?.enabled || false;\n  } catch {\n    return false;\n  }\n};\n","import * as React from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\ntype TriggerRef = React.MutableRefObject<HTMLButtonElement | HTMLInputElement | null>;\ntype PopoverRef = React.MutableRefObject<HTMLSpanElement | null>;\n\ntype PopupContext = {\n  triggerRef: TriggerRef;\n  triggerClickedRef: React.MutableRefObject<boolean>;\n  popoverRef: PopoverRef;\n  popupId?: string;\n  isOpen?: boolean;\n  setOpen: Dispatch<SetStateAction<boolean>>;\n  closePopup: () => void;\n};\n\nconst PopupContext = React.createContext<PopupContext>({} as PopupContext);\n\nexport const usePopup = () => {\n  const context = React.useContext(PopupContext);\n  if (context === undefined) {\n    throw new Error('usePopup must be used within a Popup Component parent');\n  }\n  return context;\n};\n\nexport { PopupContext };\nexport default PopupContext;\n","import type * as React from 'react';\nimport type { Side } from './popup.content';\n\nexport function isRightClick(nativeEvent: MouseEvent) {\n  return nativeEvent.which === 3 || nativeEvent.button === 2;\n}\n\nexport function focus<T extends HTMLElement = HTMLElement>(element: T | undefined | null) {\n  element && element.focus();\n}\n\nexport function getXStyles(\n  targetRect: DOMRect,\n  popoverRect: DOMRect,\n  side?: Side\n): React.CSSProperties {\n  const { directionRight, directionLeft, directionX, directionY } = getCollisions(\n    targetRect,\n    popoverRect\n  );\n  const xPosition = targetRect.right - popoverRect.width;\n  const styles: React.CSSProperties = {};\n  const popupOnLeft = side === 'left';\n  if (directionX && !directionY) {\n    // we collide with left, right but not top, bottom, start at left, full-width\n    styles.maxWidth = window.innerWidth;\n    styles.overflowX = 'auto';\n    styles.left = 0;\n  } else if (directionX && directionY) {\n    // we collide top, bottom, right, left - display in middle\n    styles.maxWidth = window.innerWidth;\n    styles.overflowX = 'auto';\n    styles.left = '50%';\n    styles.transform = 'translate(-50%, -50%)';\n  } else if (directionY && (directionLeft || directionRight)) {\n    // we collide top, bottom, (left or right) - display in middle, no maxWidth\n    styles.overflowX = 'auto';\n    styles.left = '50%';\n    styles.transform = 'translate(-50%, -50%)';\n  } else if (popupOnLeft && !popoverRect.width) {\n    // avoids popover flashing on right on initial trigger\n    styles.visibility = 'hidden';\n  } else {\n    // we collide with right or popupOnLeft - place on left, otherwise place on right\n    styles.left = directionRight || popupOnLeft ? `${xPosition}px` : `${targetRect.left}px`;\n  }\n  return styles;\n}\n\nexport function getYStyles(\n  targetRect: DOMRect,\n  popoverRect: DOMRect,\n  side?: Side\n): React.CSSProperties {\n  const { directionY, directionUp } = getCollisions(targetRect, popoverRect);\n  const yPosition = targetRect.bottom;\n  const styles: React.CSSProperties = {};\n  const popupOnTop = side === 'top';\n  if (directionY) {\n    // we collide with top and bottom, display in the middle\n    styles.maxHeight = window.innerHeight;\n    styles.overflowY = 'auto';\n    styles.top = '50%';\n    styles.transform = 'translate(-50%, -50%)';\n  } else if (popupOnTop && !popoverRect.height) {\n    styles.visibility = 'hidden';\n  } else {\n    // we collide with bottom - place on top, otherwise bottom\n    styles.top =\n      directionUp || popupOnTop\n        ? `${targetRect.top - (popoverRect.height + 8)}px`\n        : `${yPosition}px`;\n  }\n  return styles;\n}\n\nexport function getCollisions(\n  targetRect: DOMRect,\n  popoverRect: DOMRect,\n  offsetLeft = 0,\n  offsetBottom = 0\n) {\n  const collisions = {\n    top: targetRect.top - popoverRect.height < 0,\n    right: window.innerWidth < targetRect.left + popoverRect.width - offsetLeft,\n    bottom: window.innerHeight < targetRect.bottom + popoverRect.height - offsetBottom,\n    left: targetRect.left + targetRect.width - popoverRect.width < 0,\n  };\n  const directions = {\n    directionRight: collisions.right && !collisions.left,\n    directionLeft: collisions.left && !collisions.right,\n    directionUp: collisions.bottom && !collisions.top,\n    directionDown: collisions.top && !collisions.bottom,\n    directionX: collisions.left && collisions.right,\n    directionY: collisions.top && collisions.bottom,\n  };\n  return directions;\n}\n\nexport function getPopupStyles(\n  targetRect: DOMRect | null,\n  popoverRect: DOMRect | null,\n  side?: Side\n): React.CSSProperties {\n  const styles: React.CSSProperties =\n    targetRect && popoverRect\n      ? {\n          ...getXStyles(targetRect, popoverRect, side),\n          ...getYStyles(targetRect, popoverRect, side),\n        }\n      : { visibility: 'hidden' };\n  return styles;\n}\n","import * as React from 'react';\nimport { PopupContext } from './popup.context';\nimport { focus } from './popup.utils';\n\n/**\n * Presents more content in an expanded state after the user interacts with a trigger. Use `<Popup>` as a container around `<PopupButton>` and `<PopupContent>`.\n * Placement rules for the `<PopupContent>` are determined by its collision with the current viewport. The following rules determine the its position.\n *\n * | Collision                | Position |\n * | ------------------------ | ------ |\n * | bottom, top, right, left | middle, max-width |\n * | bottom, top, right       | middle, no-max-width |\n * | bottom, top, left        | middle, no-max-width |\n * | bottom, top              | middle, no-max-width |\n * | bottom                   | target-top |\n * | bottom, left             | target-top |\n * | bottom, right            | target-top |\n * | top                      | target-bottom |\n * | top, right, left         | middle, max-width |\n * | top, right               | target-bottom |\n * | top, left                | target-bottom |\n * | right, left              | target-bottom, max-width |\n * | right                    | target-bottom |\n * | left                     | target-bottom |\n */\nexport const Popup: React.FC<{ isOpen?: boolean; children: React.ReactNode }> = ({\n  isOpen: isInitiallyOpen = false,\n  children,\n}) => {\n  const id = React.useId();\n  const [isOpen, setOpen] = React.useState<boolean>(isInitiallyOpen);\n  const triggerRef = React.useRef<HTMLButtonElement | HTMLInputElement>(null);\n  const triggerClickedRef = React.useRef(false);\n  const popoverRef = React.useRef<HTMLSpanElement>(null);\n  const closePopup = () => {\n    setOpen(false);\n    focus(triggerRef.current);\n  };\n\n  return (\n    <PopupContext.Provider\n      value={{\n        triggerRef,\n        triggerClickedRef,\n        popoverRef,\n        popupId: id,\n        isOpen,\n        setOpen,\n        closePopup,\n      }}\n    >\n      {children}\n    </PopupContext.Provider>\n  );\n};\n\nexport default Popup;\n","import * as React from 'react';\n\nfunction setRefs<T>(ref: React.Ref<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    const mutableRef = ref as React.MutableRefObject<T>;\n    mutableRef.current = value;\n  }\n}\n\nexport function useForkedRef<ForwardRef, LocalRef extends ForwardRef>(\n  forwardedRef: React.Ref<ForwardRef>,\n  localRef: React.Ref<LocalRef>\n): (instance: LocalRef | null) => void {\n  return React.useCallback(\n    (value) => {\n      setRefs(forwardedRef, value);\n      setRefs(localRef, value);\n    },\n    [forwardedRef, localRef]\n  );\n}\n","export * from './lib/use-forked-ref';\n","import * as React from 'react';\nimport { usePopup } from './popup.context';\nimport { isRightClick } from './popup.utils';\nimport { useForkedRef } from '@dx-ui/utilities-use-forked-ref';\n\ntype PopupButtonProps = {\n  onArrowDownWhenOpen?: () => void;\n} & React.HTMLAttributes<HTMLButtonElement>;\n\nconst PopupButton = React.forwardRef<HTMLButtonElement, PopupButtonProps>(\n  ({ children, onArrowDownWhenOpen, ...rest }, forwardedRef) => {\n    const { triggerRef, triggerClickedRef, popupId, isOpen, setOpen } = usePopup();\n    const ref = useForkedRef(\n      forwardedRef,\n      triggerRef as React.MutableRefObject<HTMLButtonElement | null>\n    );\n\n    const onKeyDown = (e: React.KeyboardEvent) => {\n      switch (e.key) {\n        case 'Enter':\n        case ' ':\n          if (!isOpen) {\n            triggerClickedRef.current = true;\n          }\n          setOpen(!isOpen);\n          break;\n        case 'ArrowDown':\n          e.preventDefault();\n          setOpen(true);\n          if (isOpen) {\n            onArrowDownWhenOpen?.();\n          }\n          break;\n        case 'ArrowUp':\n        case 'Escape':\n          //we only want to do something when overlay is open otherwise we will trigger parent event handlers\n          if (isOpen) {\n            //Make sure we dont bubble up to other elements with listeners on escape\n            e.stopPropagation();\n            setOpen(!isOpen);\n          }\n          break;\n        default:\n          break;\n      }\n    };\n\n    const onMouseDown = (e: React.MouseEvent) => {\n      if (!isOpen) {\n        triggerClickedRef.current = true;\n      }\n      if (!isRightClick(e.nativeEvent)) {\n        setOpen(!isOpen);\n      }\n    };\n\n    return (\n      <button\n        ref={ref}\n        type=\"button\"\n        onKeyDown={onKeyDown}\n        onMouseDown={onMouseDown}\n        aria-expanded={isOpen ? 'true' : 'false'}\n        aria-controls={popupId}\n        {...rest}\n      >\n        {children}\n      </button>\n    );\n  }\n);\n\nPopupButton.displayName = 'PopupButton';\n\nexport { PopupButton };\nexport default PopupButton;\n","import { useRect } from '@dx-ui/utilities-use-rect';\nimport cx from 'classnames';\nimport * as React from 'react';\nimport { usePopup } from './popup.context';\nimport { getPopupStyles } from './popup.utils';\nimport { useForkedRef } from '@dx-ui/utilities-use-forked-ref';\n\nexport type Side = 'top' | 'right' | 'bottom' | 'left';\n\nexport type PopupContentPropsBase = {\n  popupStyles?: React.CSSProperties;\n  side?: Side;\n};\n\n/** Used in conjunction with [Popup](?path=/docs/library-components-popup--docs), PopupContent is a component that wraps the content of a popup.\n */\nconst PopupContent = React.forwardRef<\n  HTMLSpanElement,\n  React.HTMLAttributes<HTMLDivElement> & PopupContentPropsBase\n>(({ children, className, style, popupStyles = {}, side = 'bottom', ...rest }, forwardedRef) => {\n  const { triggerRef, triggerClickedRef, popoverRef, popupId, isOpen, setOpen, closePopup } =\n    usePopup();\n  const ref = useForkedRef(forwardedRef, popoverRef);\n\n  React.useEffect(() => {\n    const popoverRefCurrent = popoverRef?.current;\n    const onMouseDown = (e: MouseEvent) => {\n      if (triggerClickedRef.current) {\n        triggerClickedRef.current = false;\n      } else if (isOpen && popoverRefCurrent && !popoverRefCurrent.contains(e.target as Element)) {\n        setOpen(false);\n      }\n    };\n    const onKeyDown = (e: KeyboardEvent) => {\n      if (isOpen) {\n        //parent elements such as <Dialog /> may have event listeners for keydown. Make sure we dont bubble the event back up\n        e.stopPropagation();\n        switch (e.key) {\n          case 'Enter':\n          case ' ':\n            if (triggerClickedRef.current) {\n              triggerClickedRef.current = false;\n            } else if (\n              isOpen &&\n              popoverRefCurrent &&\n              !popoverRefCurrent.contains(e.target as Element)\n            ) {\n              setOpen(false);\n            }\n            break;\n          case 'Escape':\n            closePopup();\n            break;\n          case 'Tab':\n            requestAnimationFrame(() => {\n              if (popoverRefCurrent && !popoverRefCurrent.contains(document.activeElement)) {\n                setOpen(false);\n              }\n            });\n            break;\n          default:\n            break;\n        }\n      }\n    };\n    if (popoverRefCurrent) {\n      document.addEventListener('mousedown', onMouseDown);\n      document.addEventListener('keydown', onKeyDown);\n    }\n    return () => {\n      if (popoverRefCurrent) {\n        document.removeEventListener('mousedown', onMouseDown);\n        document.removeEventListener('keydown', onKeyDown);\n      }\n    };\n  }, [triggerClickedRef, triggerRef, closePopup, isOpen, popoverRef, setOpen]);\n\n  const popoverRect = useRect({ ref: popoverRef });\n  const targetRect = useRect({ ref: triggerRef });\n  const styles = getPopupStyles(targetRect, popoverRect, side);\n\n  return (\n    <div\n      id={popupId}\n      data-testid=\"popup-content\"\n      ref={ref}\n      className={cx(\n        'fixed z-50 mt-1 rounded border border-solid border-border bg-bg p-2 shadow-lg brand-ou:bg-secondary',\n        {\n          block: isOpen,\n          hidden: !isOpen,\n        },\n        className\n      )}\n      style={{ ...style, ...styles, ...popupStyles }}\n      {...rest}\n    >\n      {children}\n    </div>\n  );\n});\n\nPopupContent.displayName = 'PopupContent';\n\nexport { PopupContent };\nexport default PopupContent;\n","export * from './lib/popup';\nexport * from './lib/popup.button';\nexport * from './lib/popup.content';\nexport * from './lib/popup.context';\nexport * from './lib/popup.utils';\n","const props: (keyof DOMRect)[] = ['bottom', 'height', 'left', 'right', 'top', 'width'];\n\nconst rectChanged = (a: DOMRect = {} as DOMRect, b: DOMRect = {} as DOMRect) =>\n  props.some((prop) => a[prop] !== b[prop]);\n\nconst observedNodes = new Map<Element, RectProps>();\nlet rafId: number;\n\nconst run = () => {\n  const changedStates: RectProps[] = [];\n  observedNodes.forEach((state, node) => {\n    const newRect = node.getBoundingClientRect();\n    if (rectChanged(newRect, state.rect)) {\n      state.rect = newRect;\n      changedStates.push(state);\n    }\n  });\n\n  changedStates.forEach((state) => {\n    state.callbacks.forEach((cb) => cb(state.rect));\n  });\n\n  rafId = window.requestAnimationFrame(run);\n};\n\nexport default function observeRect(node: Element, cb: (rect: DOMRect | undefined) => void) {\n  return {\n    observe() {\n      const wasEmpty = observedNodes.size === 0;\n      if (observedNodes.has(node)) {\n        observedNodes.get(node)!.callbacks.push(cb);\n      } else {\n        observedNodes.set(node, {\n          rect: undefined,\n          hasRectChanged: false,\n          callbacks: [cb],\n        });\n      }\n      if (wasEmpty) run();\n    },\n\n    unobserve() {\n      const state = observedNodes.get(node);\n      if (state) {\n        // Remove the callback\n        const index = state.callbacks.indexOf(cb);\n        if (index >= 0) state.callbacks.splice(index, 1);\n\n        // Remove the node reference\n        if (!state.callbacks.length) observedNodes.delete(node);\n\n        // Stop the loop\n        if (!observedNodes.size) cancelAnimationFrame(rafId);\n      }\n    },\n  };\n}\n\nexport type PartialRect = Partial<DOMRect>;\n\nexport type RectProps = {\n  rect: DOMRect | undefined;\n  hasRectChanged: boolean;\n  callbacks: ((rect: DOMRect | undefined) => void)[];\n};\n","/* eslint-disable no-console */\nimport * as React from 'react';\nimport observeRect from './oberserve-rect';\nimport { useIsomorphicLayoutEffect } from 'usehooks-ts';\n\nconst __DEV__ = process.env.NODE_ENV === 'development';\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Rect\n *\n * @param props\n */\nconst Rect: React.FC<RectProps> = ({ onChange, observe = true, children }) => {\n  const ref = React.useRef<HTMLElement | null>(null);\n  const rect = useRectBase(ref, { observe, onChange });\n  return children({ ref, rect });\n};\n\n/**\n * @see Docs https://reach.tech/rect#rect-props\n */\ntype RectProps = UseRectOptions & {\n  /**\n   * A function that calls back to you with a `ref` to place on an element and\n   * the `rect` measurements of the dom node.\n   *\n   * **Note**: On the first render `rect` will be `undefined` because we can't\n   * measure a node that has not yet been rendered. Make sure your code accounts\n   * for this.\n   *\n   * @see Docs https://reach.tech/rect#rect-onchange\n   */\n  children: (args: { rect: PRect | null; ref: React.RefObject<unknown> }) => JSX.Element;\n};\n\nRect.displayName = 'Rect';\n\n////////////////////////////////////////////////////////////////////////////////\n/**\n * useRect\n *\n * @param nodeRef\n * @param observe\n * @param onChange\n */\nfunction useRectBase<T extends Element = HTMLElement>(\n  nodeRef: React.RefObject<T | undefined | null>,\n  options?: UseRectOptions\n): null | DOMRect {\n  const [element, setElement] = React.useState(nodeRef.current);\n  const initialRectIsSet = React.useRef(false);\n  const initialRefIsSet = React.useRef(false);\n  const [rect, setRect] = React.useState<DOMRect | undefined>(undefined);\n  const onChangeRef = React.useRef(options?.onChange);\n\n  useIsomorphicLayoutEffect(() => {\n    onChangeRef.current = options?.onChange;\n    if (nodeRef.current !== element) {\n      setElement(nodeRef.current);\n    }\n  });\n\n  useIsomorphicLayoutEffect(() => {\n    if (element && !initialRectIsSet.current) {\n      initialRectIsSet.current = true;\n      setRect(element.getBoundingClientRect());\n    }\n  }, [element]);\n\n  useIsomorphicLayoutEffect(() => {\n    let elem = element;\n    // State initializes before refs are placed, meaning the element state will\n    // be undefined on the first render. We still want the rect on the first\n    // render, so initially we'll use the nodeRef that was passed instead of\n    // state for our measurements.\n    if (!initialRefIsSet.current) {\n      initialRefIsSet.current = true;\n      elem = nodeRef.current;\n    }\n\n    if (!elem) {\n      if (__DEV__) {\n        console.warn('You need to place the ref');\n      }\n      return;\n    }\n\n    const observer = observeRect(elem, (rect) => {\n      onChangeRef.current?.(rect);\n      setRect(rect);\n    });\n    observer.observe();\n    return () => {\n      observer.unobserve();\n    };\n  }, [element, nodeRef]);\n\n  return rect || null;\n}\n\n/**\n * @see Docs https://reach.tech/rect#userect\n */\ntype UseRectOptions = {\n  /**\n   * Tells `Rect` to observe the position of the node or not. While observing,\n   * the `children` render prop may call back very quickly (especially while\n   * scrolling) so it can be important for performance to avoid observing when\n   * you don't need to.\n   *\n   * This is typically used for elements that pop over other elements (like a\n   * dropdown menu), so you don't need to observe all the time, only when the\n   * popup is active.\n   *\n   * Pass `true` to observe, `false` to ignore.\n   *\n   * @see Docs https://reach.tech/rect#userect-observe\n   */\n  observe?: boolean;\n  /**\n   * Calls back whenever the `rect` of the element changes.\n   *\n   * @see Docs https://reach.tech/rect#userect-onchange\n   */\n  onChange?: (rect: PRect | undefined) => void;\n};\n\ntype PRect = Partial<DOMRect> & {\n  readonly bottom: number;\n  readonly height: number;\n  readonly left: number;\n  readonly right: number;\n  readonly top: number;\n  readonly width: number;\n};\n\n/**\n *\n * Measures DOM elements (aka. bounding client rect). This is cloned from the last available version of `@reach/userect` with some modifications made\n * @link https://reach.tech/rect/#userect\n * @see getBoundingClientRect https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect\n * @see Source                https://github.com/reach/reach-ui/blob/main/packages/rect/src/reach-rect.tsx\n */\nfunction useRect({\n  ref,\n  onResize,\n}: {\n  ref: Parameters<typeof useRectBase>[0];\n  onResize?: (rect: DOMRect) => void;\n}) {\n  return useRectBase(ref, {\n    onChange(rect) {\n      onResize?.(rect as DOMRect);\n    },\n  });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Exports\n\nexport type { PRect, UseRectOptions, RectProps };\nexport { Rect, useRect };\n","export * from './use-rect';\n","export * from './lib';\n","import cx from 'classnames';\nimport * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { Link } from '@dx-ui/osc-link';\nimport type { SocialMediaLink } from './footer.types';\nimport { useIsClient } from 'usehooks-ts';\n\ntype LinkWithExperimentationConfiguration = Link & {\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\nexport type Footer = {\n  /** Allows for a fluid width layout */\n  isFluid?: boolean;\n  /** The customer support link to use. */\n  customerSupportLink?: Link;\n  /** The contact number for the help desk */\n  contactPhoneLink?: Link;\n  /** The links displayed horizontally at bottom */\n  legalLinks?: Link[];\n  /** The main footer links to be displayed in vertical columns divided equally */\n  links?: LinkWithExperimentationConfiguration[];\n  /** Social media links to be displayed horizontally under contact information */\n  socialLinks?: SocialMediaLink[];\n  /** Theme choice for footer */\n  theme?: Exclude<CmsBrandComponentTheme, 'light'>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * A shared footer implementation that is intended to used across OHW UI apps to give a consistent experience for customers to navigate key links.\n *\n * All links within the footer are [Link](/docs/library-components-link--default-story) components.\n */\nexport const Footer = React.forwardRef<HTMLDivElement, Footer>(\n  (\n    {\n      customerSupportLink,\n      isFluid = false,\n      legalLinks,\n      links: footerLinks = [],\n      contactPhoneLink,\n      socialLinks,\n      theme,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const isClient = useIsClient();\n    const teConsentRef = React.useRef<HTMLDivElement>(null);\n    const { t } = useTranslation('osc-footer');\n    const links = React.useMemo(\n      () =>\n        [\n          ...footerLinks,\n          isClient\n            ? ({\n                id: 'teconsent',\n                url: '',\n                ref: teConsentRef,\n              } as unknown as Link)\n            : null,\n        ].filter(Boolean) as LinkWithExperimentationConfiguration[],\n      [footerLinks, isClient]\n    );\n\n    const footerNavLength = links.length;\n    const footerNavHalfPoint = footerNavLength > 6 ? Math.ceil(footerNavLength * 0.5) : 0;\n    const footerNavFirstHalf = links.slice(0, footerNavHalfPoint);\n    const footerNavSecondHalf = links.slice(footerNavHalfPoint, footerNavLength);\n\n    const isDark = theme === 'dark';\n\n    React.useEffect(() => {\n      if (!isClient) return;\n      if (!teConsentRef.current) return;\n      const callback: MutationCallback = (mutationList) => {\n        for (const mutation of mutationList) {\n          if (mutation.type === 'childList') {\n            teConsentRef.current?.parentElement?.removeAttribute('aria-hidden');\n          }\n        }\n      };\n      const observer = new MutationObserver(callback);\n      observer.observe(teConsentRef.current, { childList: true, subtree: true });\n      return () => observer.disconnect();\n    }, [isClient]);\n\n    return (\n      <footer\n        className={cx('border-t border-solid border-border', {\n          'bg-bg-dark text-text-inverse': isDark,\n        })}\n        data-testid=\"osc-footer\"\n        ref={forwardedRef}\n        {...rest}\n      >\n        <div\n          className={cx('pb-8 pt-4', {\n            'container-fluid': isFluid,\n            container: !isFluid,\n          })}\n        >\n          <div className=\"mb-10 flex flex-col lg:flex-row\">\n            <div className=\"lg:w-1/2\">\n              <h2 data-osc-product=\"footer-help-label\" className=\"text-lg\">\n                {t('helpMessage')}\n              </h2>\n              <div className=\"mt-4 md:flex md:divide-x md:divide-border rtl:divide-x-reverse\">\n                {!!contactPhoneLink && (\n                  <div\n                    className={cx(\n                      'md:px-4 ltr:first:pl-0 ltr:last:pr-0 rtl:first:pr-0 rtl:last:pl-0',\n                      {\n                        '[&_button#call-me-modal-trigger]:!text-primary [&_#call-me-modal-trigger_span]:!text-primary [&_button#call-me-modal-trigger]:!bg-bg [&_button#call-me-modal-trigger]:hover:!bg-bg-alt [&_#call-me-number-link_span]:!text-text-inverse [&_#call-me-global-support-link]:!text-text-inverse [&_#call-me-global-support-link_+_svg]:!fill-text-inverse':\n                          isDark,\n                      }\n                    )}\n                    {...(isClient && { id: 'callme-wrapper' })}\n                  >\n                    <Link\n                      {...contactPhoneLink}\n                      underline={false}\n                      className={cx('whitespace-nowrap text-lg font-bold', {\n                        'text-primary hover:text-primary-alt': !theme,\n                        'text-text-inverse hover:text-bg-alt': isDark,\n                      })}\n                    >\n                      <span className=\"sr-only\">{t('phone')}</span>\n                      <div className=\"uppercase\">{contactPhoneLink.label}</div>\n                    </Link>\n                    <div>\n                      <Link\n                        url=\"https://help.hilton.com/s/article/Global-support-numbers?_gl=1*4wzil3*_gcl_au*MTQwMjAwODgzMi4xNzMzMjM3ODgw\"\n                        isNewWindow={true}\n                        className={cx('text-sm', {\n                          'text-primary hover:text-primary-alt': !theme,\n                          'text-text-inverse': isDark,\n                        })}\n                      >\n                        {t('callMessage')}\n                      </Link>\n                    </div>\n                  </div>\n                )}\n                {!!customerSupportLink && (\n                  <div className=\"mt-4 md:mt-0 md:px-4\">\n                    <Link\n                      {...customerSupportLink}\n                      underline={false}\n                      className=\"whitespace-nowrap text-lg font-bold text-primary hover:text-primary-alt\"\n                    >\n                      {customerSupportLink.label || t('customerSupport')}\n                    </Link>\n                    <p className=\"text-sm text-text-alt\">{t('assistance')}</p>\n                  </div>\n                )}\n              </div>\n              {socialLinks && socialLinks?.length > 0 && (\n                <div className=\"py-4 lg:pt-8\">\n                  <ul className=\"flex items-center space-x-4 rtl:space-x-reverse\">\n                    {socialLinks.map(({ channel, url }) => {\n                      return (\n                        <li key={`footer-social-${channel}`}>\n                          <a\n                            href={url}\n                            className=\"block\"\n                            target=\"_blank\"\n                            rel=\"noopener noreferrer\"\n                            aria-label={`${channel}, ${t('newTab')}`}\n                          >\n                            <img\n                              alt={channel}\n                              className=\"size-8\"\n                              src={`/modules/assets/svgs/social/${channel}.svg`}\n                            />\n                            <span className=\"sr-only\">, {t('newTab')}</span>\n                          </a>\n                        </li>\n                      );\n                    })}\n                  </ul>\n                </div>\n              )}\n            </div>\n            <div className=\"mt-8 w-full md:flex md:space-x-20 lg:mt-0 lg:w-2/4 lg:justify-end lg:space-x-8 rtl:space-x-reverse\">\n              {footerNavFirstHalf.length > 0 && (\n                <ul>\n                  {footerNavFirstHalf.map(\n                    ({\n                      adaDescription,\n                      isNewWindow,\n                      label,\n                      experimentationConfiguration,\n                      ...props\n                    }) => (\n                      <li\n                        className=\"mb-2\"\n                        key={label || props?.id || props?.url}\n                        {...handleTeconsentParentProps(props)}\n                      >\n                        <Link\n                          {...props}\n                          anchorClassName={cx(props.anchorClassName, {\n                            'text-text-inverse *:!text-text-inverse': isDark,\n                          })}\n                          adaDescription={adaDescription}\n                          isNewWindow={isNewWindow}\n                          data-conductrics-goal={experimentationConfiguration?.goal}\n                          data-conductrics-value={experimentationConfiguration?.value}\n                        >\n                          {label}\n                        </Link>\n                      </li>\n                    )\n                  )}\n                </ul>\n              )}\n              {footerNavSecondHalf.length > 0 && (\n                <ul>\n                  {footerNavSecondHalf.map(\n                    ({\n                      adaDescription,\n                      isNewWindow,\n                      label,\n                      experimentationConfiguration,\n                      ...props\n                    }) => (\n                      <li\n                        className=\"mb-2\"\n                        key={label || props.url || props?.id}\n                        {...handleTeconsentParentProps(props)}\n                      >\n                        <Link\n                          {...props}\n                          className={cx('text-sm text-primary hover:text-primary-alt', {\n                            '*:text-primary': !theme,\n                            '*:text-text-inverse': isDark,\n                          })}\n                          anchorClassName={cx({\n                            'text-text-inverse *:!text-text-inverse': isDark,\n                          })}\n                          adaDescription={adaDescription}\n                          isNewWindow={isNewWindow}\n                          data-conductrics-goal={experimentationConfiguration?.goal}\n                          data-conductrics-value={experimentationConfiguration?.value}\n                        >\n                          {label}\n                        </Link>\n                      </li>\n                    )\n                  )}\n                </ul>\n              )}\n            </div>\n          </div>\n          {legalLinks && legalLinks.length > 0 && (\n            <div>\n              <ul className=\"flex flex-wrap divide-x divide-border rtl:divide-x-reverse\">\n                {legalLinks.map(({ adaDescription, label, isNewWindow, ...props }) => (\n                  <li\n                    className=\"mt-2 px-4 ltr:first:pl-0 rtl:first:pr-0 rtl:last:px-0\"\n                    key={label || props.url || props?.id}\n                  >\n                    <Link\n                      {...props}\n                      className={cx({\n                        'text-text-inverse': isDark,\n                      })}\n                      adaDescription={adaDescription}\n                      isNewWindow={isNewWindow}\n                    >\n                      {label}\n                    </Link>\n                  </li>\n                ))}\n              </ul>\n            </div>\n          )}\n          <p\n            className={cx('text-sm text-text-alt', {\n              'pt-2': legalLinks && legalLinks.length > 0,\n              'text-text-inverse': isDark,\n            })}\n            suppressHydrationWarning\n          >\n            &copy;{new Date().getFullYear()} Hilton\n          </p>\n        </div>\n      </footer>\n    );\n  }\n);\n\nfunction handleTeconsentParentProps(props: Link) {\n  if (props.id === 'teconsent') {\n    return {\n      'aria-hidden': true,\n    };\n  }\n}\n\nFooter.displayName = 'Footer';\n\nexport default Footer;\n","export * from './footer';\nexport * from './footer.types';\n","export * from './lib/index';\n","import type { Link } from '@dx-ui/osc-link';\nimport { env } from '@dx-ui/framework-env';\nimport type { MouseEventHandler } from 'react';\nimport type { Resources } from 'i18next';\n\nexport const FooterLinks = (\n  footerLinks: Resources['footer']['footerLinks'],\n  locale: string,\n  handleClick?: MouseEventHandler<HTMLAnchorElement>\n): Link[] =>\n  [\n    {\n      label: footerLinks.webAccessibility,\n      url: `${env('OHW_BASE_URL')}${locale}/p/accessibility`,\n      isNewWindow: true,\n      onClick: handleClick,\n    },\n    {\n      label: footerLinks.customerSupport,\n      url: `https://help.hilton.com/s/`,\n      isNewWindow: true,\n      onClick: handleClick,\n    },\n    {\n      label: footerLinks.globalPrivacy,\n      url: `${env('OHW_BASE_URL')}${locale}/p/global-privacy-statement/`,\n      isNewWindow: true,\n    },\n    locale === 'en'\n      ? {\n          label: footerLinks.creditCards,\n          url: `${env(\n            'OHW_BASE_URL'\n          )}${locale}/hilton-honors/credit-cards/?cid=OH,,GlobalFooterCobrandAllCardsAcqAlwaysOn,MultiBR,,Home,SingleLink,i83471`,\n          isNewWindow: true,\n        }\n      : null,\n    {\n      isNewWindow: true,\n      label: footerLinks.careers,\n      url: 'https://jobs.hilton.com/us/en',\n      onClick: handleClick,\n    },\n    {\n      isNewWindow: true,\n      label: footerLinks.development,\n      url: 'https://www.hilton.com/en/corporate/development/',\n      onClick: handleClick,\n    },\n    {\n      isNewWindow: true,\n      label: footerLinks.media,\n      url: 'https://stories.hilton.com/',\n      onClick: handleClick,\n    },\n    {\n      label: footerLinks.usageAgreement,\n      url: `${env('OHW_BASE_URL')}${locale}/p/site-usage-agreement/`,\n      isNewWindow: true,\n    },\n    {\n      label: footerLinks.partnerAccommodations,\n      url: `${env('OHW_BASE_URL')}${locale}/p/partner-accommodations-terms/`,\n      isNewWindow: true,\n    },\n    {\n      label: footerLinks.modernSlavery,\n      url: 'https://ir.hilton.com/~/media/Files/H/Hilton-Worldwide-IR-V3/committee-composition/hilton-slavery-and-trafficking-statement-2019.pdf',\n      onClick: handleClick,\n      isNewWindow: true,\n    },\n    {\n      label: footerLinks.discountTermsAndConditions,\n      url: `${env('OHW_BASE_URL')}${locale}/hilton-honors/honors-discount-terms/`,\n      isNewWindow: true,\n      onClick: handleClick,\n    },\n    {\n      label: footerLinks.termsAndConditions,\n      url: `${env('OHW_BASE_URL')}${locale}/hilton-honors/terms/`,\n      isNewWindow: true,\n      onClick: handleClick,\n    },\n    {\n      isNewWindow: true,\n      label: footerLinks.tourismMediator,\n      url: 'https://www.hilton.com/en/p/tourism-and-travel/',\n      onClick: handleClick,\n    },\n    {\n      isNewWindow: true,\n      label: footerLinks.adChoices,\n      url: 'http://optout.aboutads.info/?c=2&lang=EN#!%2F',\n      onClick: handleClick,\n    },\n  ].filter(Boolean) as Link[];\n","import { useTranslation } from 'next-i18next';\nimport { useRouter } from 'next/router';\nimport { Footer as OSCFooter } from '@dx-ui/osc-footer';\nimport { FooterLinks } from './footer-links';\nimport { Speedbump, useSpeedbump } from '@dx-ui/osc-speedbump';\nimport { APP_NAME } from '../../utils/env';\n\nconst Footer = () => {\n  const { locale = 'en' } = useRouter();\n  const [t] = useTranslation('footer');\n  const {\n    onShow: handleShowSpeedbump,\n    onHide,\n    isVisible,\n    onContinue,\n  } = useSpeedbump(locale, APP_NAME);\n\n  const footerLinks = FooterLinks(\n    t('footerLinks', { returnObjects: true }),\n    locale,\n    handleShowSpeedbump\n  );\n\n  return (\n    <div className=\"mb-20 border-t border-solid border-border lg:mb-0\">\n      <Speedbump isShowing={isVisible} onClose={onHide} onContinue={onContinue} />\n      <OSCFooter\n        className=\"border-t-0\"\n        contactPhoneLink={{ url: 'tel:+1-800-446-6677', label: '+1-800-4honors' }}\n        customerSupportLink={{\n          url: 'https://help.hilton.com/s/',\n          target: '_blank',\n          rel: 'noopener noreferrer',\n          onClick: (event) => handleShowSpeedbump(event),\n        }}\n        links={footerLinks}\n      />\n    </div>\n  );\n};\n\nexport default Footer;\n","import type { Link } from '@dx-ui/osc-link';\nimport type { LoginResponse } from '@dx-ui/framework-auth-provider';\n\nexport type { LoginResponse };\n\nexport type GuestLoginState = {\n  password: {\n    status: string;\n    value: string;\n  };\n  remember: { value: boolean };\n  recaptcha?: string;\n  username: {\n    override: string;\n    status: string;\n    value: string;\n  };\n};\n\n/** @deprecated - @see AuthUserInfo */\nexport type GuestUserInfo = {\n  keyIdentifier: number;\n  guestId: number;\n  domainUserName: string;\n  userRealm: string;\n  hhonorsNumber: number;\n  username: string;\n};\n\n/**\n * Thes are the login event types in the message body passed from the login form\n * @see [Window.postMessage](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage)\n */\nexport const LoginFormEventType = {\n  /** Used when requesting app's digitalData object */\n  DIGITALDATA: 'digitalData',\n  /** Used when there is a login attempt */\n  LOGIN: 'onLogin',\n  /**\n   * **deprecated** - used to clear prefilled username\n   * @deprecated\n   */\n  CLEAR: 'clearUser',\n  /** Used to indicate closing of the login form */\n  CLOSE: 'onClose',\n  /** Used when login form is ready */\n  READY: 'onReady',\n  /** Used when login form height changes */\n  HEIGHT: 'onHeightChange',\n  /** Used when the login process is finished */\n  COMPLETE: 'onComplete',\n} as const;\n\nexport type GuestLoginResponse = LoginResponse & {\n  /**\n   * **deprecated** - use `type`\n   * @deprecated\n   */\n  handler?: ValuesOf<typeof LoginFormEventType>;\n  /** Login form event type. This  */\n  type?: ValuesOf<typeof LoginFormEventType>;\n  /**\n   * **deprecated** - The active state of parent window\n   * @deprecated\n   */\n  status?: string;\n  /** The height of login page */\n  height?: number;\n};\n\n/** @deprecated - @see AuthTokenInfo */\nexport type TokenInfo = {\n  scope: string;\n  token_type: string;\n  expires_in: number;\n  iat: number;\n  exp: number;\n  access_token: string;\n};\n\nexport type GuestLoginConfigOptions = {\n  /** Display the create password text. must be set with `forgetInfoLink` */\n  showCreatePassword?: boolean;\n  /** Displays the forgot password link on the login form */\n  forgetInfoLink?: Omit<Link, 'icon'>;\n  /** Displays the secure info link on the login form */\n  secureInfoLink?: Omit<Link, 'icon'>;\n  /** Displays the Join link on the login form */\n  joinLink?: Omit<Link, 'icon'>;\n  /** Displays the parent window's digitalData object */\n  digitalData?: string;\n  /** Default username **/\n  username?: string;\n};\n","import * as React from 'react';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport type { GuestLoginConfigOptions, LoginResponse, GuestLoginResponse } from './login.types';\nimport { LoginFormEventType } from './login.types';\n\ntype LoginIFrame = React.IframeHTMLAttributes<HTMLIFrameElement> & {\n  /** Title of the iframe */\n  title: string;\n  /** The source for the iframe to use */\n  frameSrc: string;\n  /**\n   * Callback for login attempts. Handles both success and error.\n   *\n   * > NOTE: `onLogin` and `onLoginError` are **DEPRECATED** in favor of this prop\n   * */\n  onLoginAttempt: (response: LoginResponse<any>) => void; // eslint-disable-line @typescript-eslint/no-explicit-any\n  /** Options for the iframe */\n  options?: GuestLoginConfigOptions;\n  /** Handler for closing, if used in a modal */\n  onClose?: () => void;\n  /**\n   * **deprecated** - Do not use - use `onLoginAttempt`\n   * @deprecated\n   */\n  onLogin?: (data: NonNullable<LoginResponse['data']>) => void;\n  /**\n   * **deprecated** - Do not use - use `onLoginAttempt`\n   * @deprecated\n   */\n  onLoginError?: (error: NonNullable<LoginResponse['error']>) => void;\n};\n\n/**\n * This component can be used separately and provides the communication logic between the parent windown and the iframe.\n *\n * `import { LoginIFrame } from '@dx-ui/osc-login'`\n */\nexport const LoginIFrame: React.FC<React.PropsWithChildren<LoginIFrame>> = ({\n  frameSrc,\n  options = {},\n  onClose,\n  onLoginAttempt,\n  onLogin,\n  title,\n  onLoginError,\n  ...rest\n}: LoginIFrame) => {\n  const readyCount = React.useRef(0);\n  const iframeRef = React.useRef<HTMLIFrameElement>(null);\n  const noOptions = Object.keys(options).length === 0;\n  const [frameHeight, setFrameHeight] = React.useState(291.25);\n\n  const handleMessage = React.useCallback(\n    (event: MessageEvent<GuestLoginResponse>) => {\n      const {\n        data: { handler, type, height, data, error, status },\n      } = event;\n      // @todo remove - Keeping status, handler for backwards compatibility\n      if (\n        (status === 'ready' ||\n          type === LoginFormEventType.HEIGHT ||\n          handler === LoginFormEventType.HEIGHT) &&\n        height\n      ) {\n        readyCount.current += 1;\n        if (noOptions || readyCount.current > 1) {\n          setFrameHeight(height);\n        }\n      }\n\n      if (type === LoginFormEventType.DIGITALDATA) {\n        options.digitalData = JSON.stringify(window.digitalData);\n        sendMessageToIframe();\n      }\n\n      // @todo remove - Keeping handler for backwards compatibility\n      if (type === LoginFormEventType.CLOSE || handler === LoginFormEventType.CLOSE) {\n        onClose?.();\n      }\n\n      // @todo remove - Keeping handler for backwards compatibility\n      if (type === LoginFormEventType.LOGIN || handler === LoginFormEventType.LOGIN) {\n        if (error) {\n          onLoginError?.(error);\n          onLoginAttempt({ error });\n        }\n        if (data) {\n          onLogin?.(data);\n          onLoginAttempt({ data });\n        }\n      }\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    []\n  );\n\n  const sendMessageToIframe = () => {\n    if (iframeRef.current && iframeRef.current.contentWindow) {\n      // if framesrc is a relative url, then the origin will be the same as the parent window, otherwise use the frameSrc origin\n      const origin = frameSrc.startsWith('/') ? window.location.origin : new URL(frameSrc).origin;\n      iframeRef.current.contentWindow.postMessage(options, origin);\n    }\n  };\n\n  React.useEffect(() => {\n    if (isBrowser) {\n      window.addEventListener('message', handleMessage);\n    }\n    return () => {\n      window.removeEventListener('message', handleMessage);\n    };\n  }, [handleMessage]);\n\n  return (\n    <div className=\"w-full py-2\">\n      <iframe\n        onLoad={sendMessageToIframe}\n        ref={iframeRef}\n        src={frameSrc}\n        title={title}\n        height={frameHeight}\n        width=\"100%\"\n        {...rest}\n      />\n    </div>\n  );\n};\n\nLoginIFrame.displayName = 'LoginIFrame';\n\nexport default LoginIFrame;\n","import { forwardRef } from 'react';\n\nconst AccountIcon = forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(\n  ({ width = 20, height = 20, ...rest }, ref) => (\n    <svg\n      ref={ref}\n      role=\"img\"\n      aria-hidden\n      height={height}\n      width={width}\n      viewBox=\"2 3 20 17\"\n      {...rest}\n    >\n      <g fill=\"#666\" className=\"fill-current\">\n        <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n        <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n      </g>\n    </svg>\n  )\n);\n\nAccountIcon.displayName = 'AccountIcon';\n\nexport { AccountIcon };\nexport default AccountIcon;\n","import * as React from 'react';\nimport { LoginIFrame } from './frame';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport type { GuestLoginConfigOptions, LoginResponse } from './login.types';\nimport { useTranslation } from 'next-i18next';\nimport { AccountIcon } from './login.icon';\nimport cx from 'classnames';\nimport { sendReward } from '@dx-ui/framework-conductrics';\n\nexport type LoginBaseProps = {\n  /** Source url for the login page */\n  frameSrc: string;\n  /** Name of the button to display */\n  buttonName?: string;\n  /**\n   * Set the classNames for the button element\n   */\n  buttonClassName?: string;\n  /** Specify the title for the iframe element */\n  title: string;\n  /** Display options for the login page */\n  options?: GuestLoginConfigOptions;\n  /** Provides additional styling to the iframe */\n  className?: string;\n  /** Provides a parameter for disabling the icon */\n  hideIcon?: boolean;\n  /** callback to run after login attempt */\n  onLoginAttempt: (response: LoginResponse) => Promise<void>;\n  /** function to run on open */\n  onOpen?: () => void;\n};\n\nexport type LoginProps = LoginBaseProps & React.HTMLAttributes<HTMLIFrameElement>;\n\n/**\n * A modal that wraps the LoginIFrame component.\n *\n * `import { Login } from '@dx-ui/osc-login'`\n */\nexport const Login: React.FC<React.PropsWithChildren<LoginBaseProps>> = ({\n  options = {},\n  className = '',\n  title,\n  frameSrc,\n  buttonName,\n  buttonClassName,\n  hideIcon,\n  onLoginAttempt,\n  onOpen,\n}) => {\n  const [t] = useTranslation('osc-login');\n  const [showDialog, setShowDialog] = React.useState<boolean>(false);\n  const open = () => {\n    onOpen?.();\n    sendReward('nav-sign-in-click');\n    setShowDialog(true);\n  };\n  const close = () => setShowDialog(false);\n  const handleLogin = async (response: LoginResponse) => {\n    await onLoginAttempt?.(response);\n    if (!response.error) {\n      close();\n    }\n  };\n\n  return (\n    <Dialog\n      title={title}\n      isOpen={showDialog}\n      onDismiss={close}\n      size=\"md\"\n      dialogTrigger={\n        <button\n          type=\"button\"\n          className={cx(buttonClassName, {\n            'btn btn-text-text sm:btn-xl flex items-center brand-wa:!font-normal': !buttonClassName,\n          })}\n          onClick={open}\n        >\n          <span>{buttonName || t('signIn')}</span>\n          {!hideIcon ? (\n            <span\n              aria-hidden\n              className=\"ms-2 flex size-5 items-center justify-center rounded-full bg-text text-text-inverse\"\n            >\n              <AccountIcon className=\"size-3\" />\n            </span>\n          ) : null}\n        </button>\n      }\n    >\n      <LoginIFrame\n        frameSrc={frameSrc}\n        options={options}\n        data-e2e=\"loginIframe\"\n        onLoginAttempt={handleLogin}\n        onClose={close}\n        title={title}\n        className={className}\n      />\n    </Dialog>\n  );\n};\n\nLogin.displayName = 'Login';\n\nexport default Login;\n","export * from './lib/login';\nexport * from './lib/login.icon';\nexport * from './lib/frame';\nexport * from './lib/login.types';\n","import type * as Types from './types';\n\nimport {\n  useQuery,\n  type QueryClient,\n  type FetchQueryOptions,\n  type UseQueryOptions,\n} from '@tanstack/react-query';\nimport type { DXError } from '@dx-ui/types-graphql';\n\nexport const GetLanguageSelectorOneLinkConfigDocument = {\n  operationName: 'featureConfigs',\n  operationString: `query featureConfigs {\n  featureConfigs(names: [\"config-ui-translate-onelink\"]) {\n    config\n    name\n  }\n}`,\n  originalOpName: 'getLanguageSelectorOneLinkConfig',\n};\nexport function useGetLanguageSelectorOneLinkConfigQuery<\n  TData = Types.GetLanguageSelectorOneLinkConfigQuery,\n  TError = DXError\n>(\n  variables?: Types.GetLanguageSelectorOneLinkConfigQueryVariables,\n  options?: Omit<\n    UseQueryOptions<Types.GetLanguageSelectorOneLinkConfigQuery, TError, TData>,\n    'queryKey'\n  >\n) {\n  return useQuery<Types.GetLanguageSelectorOneLinkConfigQuery, TError, TData>({\n    queryKey: [GetLanguageSelectorOneLinkConfigDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGetLanguageSelectorOneLinkConfigQuery(\n  queryClient: QueryClient,\n  variables?: Types.GetLanguageSelectorOneLinkConfigQueryVariables,\n  options?: FetchQueryOptions<Types.GetLanguageSelectorOneLinkConfigQuery>\n) {\n  return queryClient.fetchQuery<Types.GetLanguageSelectorOneLinkConfigQuery>({\n    queryKey: [GetLanguageSelectorOneLinkConfigDocument, variables],\n    ...options,\n  });\n}\n\nexport const GetLanguageSelectorHotelDataDocument = {\n  operationName: 'hotel',\n  operationString: `query hotel($ctyhocn: String!) {\n  hotel(ctyhocn: $ctyhocn, language: \"en\") {\n    localization {\n      languageSupport {\n        label\n        bookingUrl\n        code\n        siteUrl\n      }\n    }\n  }\n}`,\n  originalOpName: 'getLanguageSelectorHotelData',\n};\nexport function useGetLanguageSelectorHotelDataQuery<\n  TData = Types.GetLanguageSelectorHotelDataQuery,\n  TError = DXError\n>(\n  variables: Types.GetLanguageSelectorHotelDataQueryVariables,\n  options?: Omit<\n    UseQueryOptions<Types.GetLanguageSelectorHotelDataQuery, TError, TData>,\n    'queryKey'\n  >\n) {\n  return useQuery<Types.GetLanguageSelectorHotelDataQuery, TError, TData>({\n    queryKey: [GetLanguageSelectorHotelDataDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGetLanguageSelectorHotelDataQuery(\n  queryClient: QueryClient,\n  variables: Types.GetLanguageSelectorHotelDataQueryVariables,\n  options?: FetchQueryOptions<Types.GetLanguageSelectorHotelDataQuery>\n) {\n  return queryClient.fetchQuery<Types.GetLanguageSelectorHotelDataQuery>({\n    queryKey: [GetLanguageSelectorHotelDataDocument, variables],\n    ...options,\n  });\n}\n","import {\n  GetLanguageSelectorHotelDataDocument,\n  GetLanguageSelectorOneLinkConfigDocument,\n} from './generated/queries';\n\nexport * from './generated/queries';\nexport * from './generated/types';\n\nexport const GET_HOTEL_LANGUAGE_SELECTOR_DATA_ORIGINAL_OP_NAME =\n  GetLanguageSelectorHotelDataDocument.originalOpName;\nexport const GET_LANGUAGE_SELECTOR_ONE_LINK_CONFIG_DOCUMENT_ORIGINAL_OP_NAME =\n  GetLanguageSelectorOneLinkConfigDocument.originalOpName;\n\nexport const LANGUAGE_SELECTOR_ORIGINAL_OP_NAMES = [\n  GET_HOTEL_LANGUAGE_SELECTOR_DATA_ORIGINAL_OP_NAME,\n  GET_LANGUAGE_SELECTOR_ONE_LINK_CONFIG_DOCUMENT_ORIGINAL_OP_NAME,\n];\n","export const LANGUAGE_CODE_NAMES = {\n  ar: 'العربية',\n  bg: 'Български',\n  cs: 'Česky',\n  da: 'Dansk',\n  de: 'Deutsch',\n  en: 'English',\n  es: 'Español',\n  fi: 'Suomi',\n  fr: 'Français',\n  id: 'Bahasa Indonesia',\n  it: 'Italiano',\n  ja: '日本語',\n  ko: '한국어',\n  nl: 'Nederlands',\n  no: 'Norsk',\n  pl: 'Polski',\n  pt: 'Português',\n  ro: 'Română',\n  ru: 'Pусский',\n  sv: 'Svenska',\n  th: 'ไทย',\n  tr: 'Türkçe',\n  vi: 'Tiếng Việt',\n  'zh-hans': '简体中文',\n  'zh-hant': '繁體中文',\n} as const;\n","const RTL_LANGUAGES = ['ar', 'he'];\n\n/**\n * Returns whether a locale is LTR (left to right) or RTL (right to left)\n *\n * Currently arabic (ar) is only supported RTL locale\n * @param lang - ISO code for locale\n */\nexport const getLanguageDirection = (lang?: string) =>\n  !!lang && RTL_LANGUAGES.includes(lang.toLowerCase()) ? 'rtl' : 'ltr';\n\n/**\n * Returns a boolean as to whether a locale is LTR (left to right) or RTL (right to left)\n *\n * Currently arabic (ar) is only supported RTL locale\n * @param lang\n */\nexport const isRtl = (lang?: string) => getLanguageDirection(lang) === 'rtl';\n","import { useMemo } from 'react';\nimport type { OneLinkConfig } from '@dx-ui/framework-i18n';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { useIsClient } from 'usehooks-ts';\nimport {\n  useGetLanguageSelectorOneLinkConfigQuery,\n  useGetLanguageSelectorHotelDataQuery,\n} from '@dx-ui/queries-osc-language-selector';\nimport type { GetLanguageSelectorHotelDataQuery } from '@dx-ui/queries-osc-language-selector';\nimport { LANGUAGE_CODE_NAMES } from '../osc-language-code-names';\nimport type { LanguageSelectorPropsBase } from '../osc-language-selector';\nimport { isRtl } from '@dx-ui/utilities-get-language-direction';\nimport { RuleEngine } from '@dx-shared/rule-engine';\nimport { logWarning } from '@dx-ui/framework-logger';\n\ntype LanguagesDict = { label: string; value: string; href: string; opensNewTab: boolean }[];\n\ntype SupportedLanguages = NonNullable<\n  NonNullable<GetLanguageSelectorHotelDataQuery['hotel']>['localization']\n>['languageSupport'];\n\nexport function useLanguageSelectorLanguages({\n  appName,\n  ctyhocn,\n  removeUrlParams,\n  urlOverrides,\n}: {\n  appName: string;\n  ctyhocn: string;\n  removeUrlParams?: boolean;\n  urlOverrides?: LanguageSelectorPropsBase['urlOverrides'];\n}) {\n  const { data: featureConfigsData, isFetching: featureConfigsLoading } =\n    useGetLanguageSelectorOneLinkConfigQuery();\n  const { data: hotelData, isFetching: hotelDataLoading } = useGetLanguageSelectorHotelDataQuery(\n    {\n      ctyhocn: ctyhocn.toUpperCase(),\n    },\n    {\n      enabled: !!ctyhocn,\n    }\n  );\n  const isClient = useIsClient();\n  const loading = !isClient || featureConfigsLoading || hotelDataLoading;\n\n  const oneLinkLanguagesConfig: OneLinkConfig = featureConfigsData?.featureConfigs?.find(\n    (fc) => fc.name === 'config-ui-translate-onelink'\n  )?.config;\n\n  let oneLinkLanguages: string[] = [];\n\n  // begin old config logic - Deprecated\n  const appWhitelist = oneLinkLanguagesConfig?.whitelist?.[appName];\n  const languagesObj = oneLinkLanguagesConfig?.languages;\n  const languagesToExclude = appWhitelist\n    ? (Object.keys(appWhitelist) as (keyof typeof appWhitelist)[]).filter(\n        (language) => !appWhitelist?.[language]?.includes(ctyhocn.toUpperCase())\n      )\n    : [];\n  const supportsLanguagesObjConfig = !!appName && !!languagesObj;\n  if (supportsLanguagesObjConfig) {\n    oneLinkLanguages = Object.entries(languagesObj)\n      .filter(\n        ([lang, appsArray]) => appsArray?.includes(appName) && !languagesToExclude.includes(lang)\n      )\n      .map(([lang]) => lang);\n  }\n  // end old config logic\n\n  // begin new config logic\n  const conditions = oneLinkLanguagesConfig?.conditions;\n  const supportedLanguages = oneLinkLanguagesConfig?.supportedLanguages;\n  const ruleEngine = conditions\n    ? new RuleEngine({ name: 'onelink-language-selector', conditions })\n    : null;\n  const supportsRuleEngineConfig = !!appName && !!conditions && !!supportedLanguages && ruleEngine;\n  const url = isBrowser ? window.location.href : '';\n  if (supportsRuleEngineConfig) {\n    oneLinkLanguages = supportedLanguages.filter((language) =>\n      ruleEngine.run({ appName, language, url })\n    );\n  }\n  // end new config logic\n\n  const cmsLanguages = hotelData?.hotel?.localization?.languageSupport\n    ? hotelData?.hotel?.localization?.languageSupport.reduce((acc, language) => {\n        if (\n          !oneLinkLanguages?.includes(getI18nSafeLangCode(language?.code || '')) &&\n          getI18nSafeLangCode(language?.code || '') !== 'en'\n        ) {\n          acc.push({\n            ...language,\n            code: getI18nSafeLangCode(language?.code || ''),\n          });\n        }\n        return acc;\n      }, [] as SupportedLanguages)\n    : ([] as SupportedLanguages);\n\n  const cmsFullSiteLanguages = cmsLanguages.filter((lang) => lang?.siteUrl);\n  const cmsResOnlyLanguages = cmsLanguages.filter((lang) => lang?.bookingUrl);\n  const ENOverride = urlOverrides?.fullSite?.['en'];\n  const fullSiteLanguages: LanguagesDict = [\n    {\n      label: LANGUAGE_CODE_NAMES['en'],\n      value: 'en',\n      href: (ENOverride || makeLanguageUrl('en', removeUrlParams)) ?? '',\n      opensNewTab: !!ENOverride,\n    },\n    ...oneLinkLanguages.map((lang) => {\n      const override = urlOverrides?.fullSite?.[lang as keyof typeof LANGUAGE_CODE_NAMES];\n      const hasOverride = !!override;\n      return {\n        label: LANGUAGE_CODE_NAMES[lang as keyof typeof LANGUAGE_CODE_NAMES],\n        value: lang,\n        href: (override || makeLanguageUrl(lang, removeUrlParams)) ?? '',\n        opensNewTab: hasOverride,\n      };\n    }),\n    ...cmsFullSiteLanguages.map((lang) => ({\n      label: LANGUAGE_CODE_NAMES[lang?.code as keyof typeof LANGUAGE_CODE_NAMES] || lang.label,\n      value: lang?.code || '',\n      href:\n        urlOverrides?.fullSite?.[lang?.code as keyof typeof LANGUAGE_CODE_NAMES] ||\n        lang?.siteUrl ||\n        '',\n      opensNewTab: true,\n    })),\n  ];\n  const resOnlyLanguages: LanguagesDict = [\n    ...cmsResOnlyLanguages.map((lang) => ({\n      label: LANGUAGE_CODE_NAMES[lang?.code as keyof typeof LANGUAGE_CODE_NAMES] || lang.label,\n      value: lang?.code || '',\n      href:\n        urlOverrides?.resOnly?.[lang.code as keyof typeof LANGUAGE_CODE_NAMES] ||\n        lang?.bookingUrl ||\n        '',\n      opensNewTab: true,\n    })),\n  ];\n\n  const supportedFullSiteLanguages = fullSiteLanguages.map((lang) => lang.value);\n  const netNewFullSiteLanguages = Object.keys(urlOverrides?.fullSite || {}).filter(\n    (lang) => !supportedFullSiteLanguages.includes(lang)\n  );\n\n  if (netNewFullSiteLanguages.length) {\n    fullSiteLanguages.push(\n      ...netNewFullSiteLanguages.map((lang) => ({\n        label: LANGUAGE_CODE_NAMES[lang as keyof typeof LANGUAGE_CODE_NAMES],\n        value: lang,\n        href: urlOverrides?.fullSite?.[lang as keyof typeof LANGUAGE_CODE_NAMES] || '',\n        opensNewTab: true,\n      }))\n    );\n  }\n\n  const supportedResOnlyLanguages = resOnlyLanguages.map((lang) => lang.value);\n  const netNewResOnlyLanguages = Object.keys(urlOverrides?.resOnly || {}).filter(\n    (lang) =>\n      !supportedResOnlyLanguages.includes(lang) && !supportedFullSiteLanguages.includes(lang)\n  );\n\n  if (netNewResOnlyLanguages.length) {\n    resOnlyLanguages.push(\n      ...netNewResOnlyLanguages.map((lang) => ({\n        label: LANGUAGE_CODE_NAMES[lang as keyof typeof LANGUAGE_CODE_NAMES],\n        value: lang,\n        href: urlOverrides?.resOnly?.[lang as keyof typeof LANGUAGE_CODE_NAMES] || '',\n        opensNewTab: true,\n      }))\n    );\n  }\n\n  const sortedFullSiteLanguages = sortRtlFirst(\n    filterLanguagesWithLabel(fullSiteLanguages).sort((a, b) => a.label.localeCompare(b.label))\n  );\n  const sortedResOnlyLanguages = sortRtlFirst(\n    filterLanguagesWithLabel(resOnlyLanguages).sort((a, b) => a.label.localeCompare(b.label))\n  );\n  const allLanguages = useMemo(\n    () => [...sortedFullSiteLanguages, ...sortedResOnlyLanguages],\n    [sortedFullSiteLanguages, sortedResOnlyLanguages]\n  );\n\n  return {\n    allLanguages,\n    loading,\n    sortedFullSiteLanguages,\n    sortedResOnlyLanguages,\n  };\n}\n\nexport function filterLanguagesWithLabel(languages: LanguagesDict) {\n  return languages.filter((lang) => {\n    if (!lang.label) {\n      logWarning(\n        'useLanguageSelectorLanguages',\n        `Language selector label missing for ${lang.value}`\n      );\n    }\n    return lang.label;\n  });\n}\n\nexport function getI18nSafeLangCode(code: string) {\n  if (code === 'zh_CN') {\n    return 'zh-hans';\n  }\n  if (code === 'zh_HK') {\n    return 'zh-hant';\n  }\n  const safeLangCode = code.split('_')[0];\n  return safeLangCode?.toLowerCase() ?? 'en';\n}\n\nexport function makeLanguageUrl(newLocale: string, removeUrlParams?: boolean) {\n  const languageUrl = isBrowser\n    ? window.location.href.replace(\n        RegExp(`/${window.location.pathname.split('/')[1]}/`),\n        `/${newLocale}/`\n      )\n    : '';\n  return removeUrlParams ? languageUrl.split('?')[0] : languageUrl;\n}\n\nexport function sortRtlFirst(languages: LanguagesDict) {\n  const rtlLangs = languages.filter((lang) => isRtl(lang.value));\n  const ltrLangs = languages.filter((lang) => !isRtl(lang.value));\n  return [...rtlLangs, ...ltrLangs];\n}\n","import { useEffect, useState } from 'react';\n\nconst getHasUserModifiedFontDefaults = (maxSize: number) => {\n  const { fontSize, wordSpacing, letterSpacing } = getComputedStyle(document.documentElement);\n  const hasModifiedLetterSpacing = letterSpacing !== 'normal';\n  const hasModifiedFontSize = parseInt(fontSize.split('px')[0] || '') > maxSize;\n  const hasModifiedWordSpacing =\n    wordSpacing !== 'normal' && parseInt(wordSpacing.split('px')[0] || '') > 0;\n  if (hasModifiedFontSize || hasModifiedWordSpacing || hasModifiedLetterSpacing) {\n    return true;\n  }\n  return false;\n};\n\n/* Default browser font size is 16px, function defaults to a max of 20px  */\nexport const useHasUserModifiedFontDefaults = (maxSize = 20) => {\n  const [hasUserModifiedFonts, setHasUserModifiedFonts] = useState(false);\n  useEffect(() => {\n    setHasUserModifiedFonts(getHasUserModifiedFontDefaults(maxSize));\n  }, [maxSize]);\n  return hasUserModifiedFonts;\n};\n","import { useHasUserModifiedFontDefaults } from './use-has-user-modified-font-defaults';\nexport const getIsReducedMotion = () =>\n  typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n    ? window.matchMedia('(prefers-reduced-motion: reduce)').matches\n    : true;\n\nexport const getKeyDownNavigation =\n  <T extends HTMLElement[]>({\n    elements,\n    initiatingRef,\n    onPreviousFocus,\n    onNextFocus,\n  }: {\n    elements: T;\n    initiatingRef?: React.MutableRefObject<HTMLElement | null>;\n    onPreviousFocus?: (focusElement: T[number] | null) => void;\n    onNextFocus?: (focusElement: T[number] | null) => void;\n  }) =>\n  (e: KeyboardEvent | React.KeyboardEvent<HTMLElement>) => {\n    const focusPrevious = (el: EventTarget | null) => {\n      const currentIndex = elements.findIndex((elements) => elements === el);\n      if (currentIndex === 0) {\n        initiatingRef?.current?.focus();\n        return;\n      }\n      const element = elements.at(currentIndex - 1) || null;\n      element?.focus();\n      onPreviousFocus?.(element);\n    };\n    const focusNext = (el: EventTarget | null) => {\n      const currentIndex = elements.findIndex((elements) => elements === el);\n      const element = elements.at(currentIndex + 1) || null;\n      element?.focus();\n      onNextFocus?.(element);\n    };\n    const isArrowUp = e.key === 'ArrowUp';\n    const isArrowDown = e.key === 'ArrowDown';\n    const isArrowLeft = e.key === 'ArrowLeft';\n    const isArrowRight = e.key === 'ArrowRight';\n    if (isArrowUp || isArrowLeft) {\n      e.preventDefault();\n      focusPrevious(e.target);\n    }\n    if (isArrowDown || isArrowRight) {\n      e.preventDefault();\n      focusNext(e.target);\n    }\n  };\n\nexport { useHasUserModifiedFontDefaults };\n","export * from './lib';\n","import type { ElementRef } from 'react';\nimport { useEffect, useRef } from 'react';\nimport * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { useLanguageSelectorLanguages } from './hooks/useLanguageSelectorLanguages';\nimport type { PopupContext } from '@dx-ui/osc-popup';\nimport { Popup, PopupButton, PopupContent, usePopup } from '@dx-ui/osc-popup';\nimport { LANGUAGE_CODE_NAMES } from './osc-language-code-names';\nimport { Link } from '@dx-ui/osc-link';\nimport classnames from 'classnames';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport set from 'lodash/set';\nimport { isRtl } from '@dx-ui/utilities-get-language-direction';\nimport { getKeyDownNavigation } from '@dx-ui/utilities-accessibility';\nimport { getSafeLanguage } from '@dx-ui/framework-react-query';\n\ntype UrlOverride = {\n  [locale in keyof typeof LANGUAGE_CODE_NAMES]?: string;\n};\n\nexport type LanguageSelectorPropsBase = {\n  appName: string;\n  buttonOptions?: {\n    className?: string;\n    styles?: React.CSSProperties;\n    hoverStyles?: React.CSSProperties;\n  };\n  ctyhocn?: string;\n  labelOptions?: {\n    className?: string;\n    styles?: React.CSSProperties;\n  };\n  locale: string;\n  theme?: Exclude<CmsBrandComponentTheme, 'light'>;\n  onLanguageSelection?: (languageValue: string) => void;\n  popupOptions?: {\n    removeUrlParams?: boolean;\n    includeTitles?: boolean;\n  };\n  urlOverrides?: {\n    fullSite?: UrlOverride;\n    resOnly?: UrlOverride;\n  };\n  wrapperClassName?: string;\n};\n\nexport type LanguageSelectorProps = LanguageSelectorPropsBase & React.ComponentProps<'div'>;\n\nexport function LanguageSelector({\n  appName = '',\n  buttonOptions,\n  ctyhocn = '',\n  locale = 'en',\n  labelOptions,\n  popupOptions,\n  wrapperClassName,\n  urlOverrides,\n  theme,\n  onLanguageSelection,\n  ...rest\n}: LanguageSelectorProps) {\n  const [selectedLanguage, setSelectedLanguage] = React.useState<{\n    code: string;\n    href: string;\n  }>();\n  const [buttonHover, setButtonHover] = React.useState(false);\n  const { t } = useTranslation('osc-language-selector');\n  const popupButtonRef = useRef<ElementRef<'button'>>(null);\n  const linksContainerRef = useRef<ElementRef<'div'>>(null);\n  const { loading, allLanguages, sortedFullSiteLanguages, sortedResOnlyLanguages } =\n    useLanguageSelectorLanguages({\n      appName,\n      ctyhocn,\n      removeUrlParams: popupOptions?.removeUrlParams,\n      urlOverrides,\n    });\n\n  useEffect(() => {\n    if (!loading && !selectedLanguage?.code) {\n      const getSelectedLanguage = (locale: string) => ({\n        code: locale,\n        href: allLanguages.find((lang) => lang.value === locale)?.href || '',\n      });\n\n      setSelectedLanguage(getSelectedLanguage(getSafeLanguage(locale) ?? ''));\n    }\n  }, [allLanguages, loading, locale, selectedLanguage?.code]);\n\n  const focusFirstLink = React.useCallback(() => {\n    linksContainerRef.current?.querySelector('a')?.focus();\n  }, []);\n\n  const handleLinkKeyDown = getKeyDownNavigation({\n    elements: Array.from(linksContainerRef.current?.querySelectorAll('a') || []),\n    initiatingRef: popupButtonRef,\n  });\n\n  const trackLinkClick = React.useCallback((language: string) => {\n    if (window?.digitalData && window?._satellite) {\n      set(window.digitalData, 'action.clickID', 'languageswitch');\n      set(window.digitalData, 'page.pageInfo.language', language);\n      window._satellite?.track?.('global_click');\n    } else {\n      console.warn('digitalData or _satellite not found'); // eslint-disable-line no-console\n    }\n  }, []);\n\n  return (\n    <div className={classnames('flex gap-2 text-sm sm:text-base', wrapperClassName)} {...rest}>\n      <Popup>\n        <PopupContextState>\n          {({ isOpen }) => (\n            <>\n              <div className=\"flex items-baseline gap-2\">\n                <span\n                  className={classnames('flex font-semibold', labelOptions?.className, {\n                    'text-text-inverse': theme === 'dark',\n                  })}\n                  style={labelOptions?.styles}\n                  aria-hidden=\"true\"\n                >\n                  {t('language')}\n                </span>\n                {loading ? (\n                  <div className=\"h-6 w-24 animate-pulse self-center bg-border\" />\n                ) : (\n                  <PopupButton\n                    ref={popupButtonRef}\n                    className={classnames('inline-flex items-center', buttonOptions?.className, {\n                      'text-text-inverse': theme === 'dark',\n                    })}\n                    onClick={() => sendReward('engaged-language-selector')}\n                    onArrowDownWhenOpen={focusFirstLink}\n                    style={{\n                      ...buttonOptions?.styles,\n                      ...(buttonHover ? buttonOptions?.hoverStyles : null),\n                    }}\n                    onMouseEnter={() => setButtonHover(true)}\n                    onMouseLeave={() => setButtonHover(false)}\n                  >\n                    <span className=\"sr-only\">{t('language')}</span>\n                    {selectedLanguage?.code\n                      ? LANGUAGE_CODE_NAMES[\n                          selectedLanguage.code as keyof typeof LANGUAGE_CODE_NAMES\n                        ]\n                      : null}{' '}\n                    <DownArrowIcon\n                      className={classnames('size-6 transition-all', {\n                        '-scale-y-100': isOpen,\n                        'text-text-inverse': theme === 'dark',\n                      })}\n                    />\n                  </PopupButton>\n                )}\n              </div>\n              {loading ? null : (\n                <PopupContent popupStyles={{ maxHeight: '80%', overflowY: 'auto' }}>\n                  <div\n                    ref={linksContainerRef}\n                    className=\"OneLinkKeepLinks flex min-w-[192px] flex-col gap-2\"\n                  >\n                    {sortedFullSiteLanguages.length ? (\n                      <div>\n                        {popupOptions?.includeTitles ? (\n                          <p className=\"mb-1 border-b border-border pb-2 font-bold\">\n                            {t('hotelSite')}\n                          </p>\n                        ) : null}\n                        <ul className=\"divide-y divide-border\">\n                          {sortedFullSiteLanguages.map((lang) => (\n                            <ListItem\n                              key={lang.value}\n                              label={lang.label}\n                              language={lang.value}\n                              linkProps={{\n                                onClick: () => {\n                                  trackLinkClick(lang.value);\n                                  onLanguageSelection?.(lang.value);\n                                },\n                                onKeyDown: handleLinkKeyDown,\n                                isNewWindow: lang.opensNewTab,\n                                url: lang.href,\n                              }}\n                            />\n                          ))}\n                        </ul>\n                      </div>\n                    ) : null}\n                    {sortedResOnlyLanguages.length ? (\n                      <div>\n                        {popupOptions?.includeTitles ? (\n                          <p className=\"mb-1 border-b border-border pb-2 font-bold\">\n                            {t('bookingOnly')}\n                          </p>\n                        ) : null}\n                        <ul>\n                          {sortedResOnlyLanguages.map((lang) => (\n                            <ListItem\n                              key={lang.value}\n                              label={lang.label}\n                              language={lang.value}\n                              linkProps={{\n                                onClick: () => trackLinkClick(lang.value),\n                                onKeyDown: handleLinkKeyDown,\n                                isNewWindow: lang.opensNewTab,\n                                url: lang.href,\n                              }}\n                            />\n                          ))}\n                        </ul>\n                      </div>\n                    ) : null}\n                  </div>\n                </PopupContent>\n              )}\n            </>\n          )}\n        </PopupContextState>\n      </Popup>\n    </div>\n  );\n}\n\nfunction ListItem({\n  label,\n  language,\n  linkProps,\n}: {\n  label: string;\n  language: string;\n  linkProps: React.ComponentProps<typeof Link>;\n}) {\n  return (\n    <li\n      key={`popup-${language}`}\n      className={classnames('flex py-2', {\n        'justify-end': isRtl(language),\n      })}\n      lang={language}\n    >\n      <bdi>\n        <Link rel=\"noopener noreferrer\" {...linkProps}>\n          {label}{' '}\n        </Link>\n      </bdi>\n    </li>\n  );\n}\n\nfunction PopupContextState({ children }: { children: (args0: PopupContext) => React.ReactNode }) {\n  const context = usePopup();\n  return children(context);\n}\n\nfunction DownArrowIcon(props: React.ComponentProps<'svg'>) {\n  return (\n    <svg viewBox=\"0 0 31 31\" version=\"1.1\" {...props}>\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"transparent\" fillRule=\"evenodd\">\n        <g transform=\"translate(1, 1)\" strokeWidth=\"2\" stroke=\"currentColor\">\n          <polyline strokeLinecap=\"round\" points=\"9,12 14.5,18 20,12\" />\n        </g>\n      </g>\n    </svg>\n  );\n}\n\nexport default LanguageSelector;\n","export * from './lib/osc-language-selector';\n","import { useEffect, useRef, useState } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport cx from 'classnames';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\n\nexport type DrawerPanelProps = {\n  isOpen: boolean;\n  children: React.ReactNode;\n  alignment: 'left' | 'right';\n  /**\n   *  Id of the body of your entire app, used to select for all dom elements within app without affecting elements that sit outside the app\n   */\n  appWrapperId: string;\n  /**\n   *  Id of the wrapper element you want to keep interactive while the panel is open. Example: Navigation header while nav menu is open\n   */\n  interactiveElementWrapperId: string;\n  panelProps?: React.ComponentProps<'div'>;\n  /**\n   * Allows you to choose a specific point to return focus to or allow for default returnFocus\n   */\n  returnFocus?: () => boolean;\n};\n\nexport const DrawerPanel = ({\n  isOpen,\n  children,\n  alignment,\n  appWrapperId,\n  interactiveElementWrapperId,\n  panelProps,\n  returnFocus,\n}: DrawerPanelProps) => {\n  const [isRightPanelVisible, setIsRightPanelVisible] = useState(false);\n  useEffect(() => {\n    if (!isOpen) {\n      if (alignment === 'right') setIsRightPanelVisible(false);\n      document.body.style.overflow = 'auto';\n      if (nonInteractiveElements.current)\n        nonInteractiveElements.current.forEach((nonInteractiveElement) => {\n          if (nonInteractiveElement) {\n            nonInteractiveElement.removeAttribute('aria-hidden');\n          }\n        });\n    } else {\n      document.body.style.overflow = 'hidden';\n      const nonInteractiveElems = document?.querySelectorAll(\n        // children of element with interactiveElementWrapperId will not have aria-hidden=\"true\" applied\n        `#${appWrapperId} *:not(#${interactiveElementWrapperId}, #${interactiveElementWrapperId} *):not([aria-hidden=\"true\"])`\n      );\n      nonInteractiveElems.forEach((nonInteractiveElement) => {\n        if (nonInteractiveElement) {\n          nonInteractiveElement.setAttribute('aria-hidden', 'true');\n        }\n      });\n      /** interactiveElementWrapper should always be available in the accessibility tree,\n       *  the selector above will also set aria-hidden on any parents of the interactiveElementWrapper in between it and element with appWrapperId\n       * This function removes aria hidden from the drawer's parents */\n      let drawerWrapper: Element | null = document?.querySelector(\n        `#${interactiveElementWrapperId}`\n      );\n      const els: Element[] = [];\n      while (drawerWrapper) {\n        els.push(drawerWrapper);\n        drawerWrapper = drawerWrapper.parentElement;\n      }\n      els?.forEach((navParentElement) => {\n        if (navParentElement) {\n          navParentElement.removeAttribute('aria-hidden');\n        }\n      });\n      nonInteractiveElements.current = nonInteractiveElems;\n    }\n  }, [isOpen, alignment, appWrapperId, interactiveElementWrapperId]);\n\n  const nonInteractiveElements = useRef<NodeListOf<Element> | undefined>();\n\n  return (\n    <FocusLock disabled={!isOpen} returnFocus={returnFocus ? returnFocus : true}>\n      <div\n        className={cx(\n          'absolute top-0 z-50 h-screen w-80 overflow-y-scroll border-t border-border bg-bg transition-all brand-ou:bg-secondary',\n          {\n            'ltr:motion-safe:animate-slideInLeft rtl:motion-safe:animate-slideInRight':\n              isOpen && alignment === 'left',\n            'ltr:motion-safe:animate-slideInRight rtl:motion-safe:animate-slideInLeft':\n              isOpen && alignment === 'right',\n            'end-0': alignment === 'right',\n            'hidden -translate-x-full': !isOpen,\n          }\n        )}\n        onAnimationEnd={() => {\n          if (alignment === 'right') setIsRightPanelVisible(true);\n        }}\n        hidden={!isOpen}\n        data-testid={`panelWindow-${alignment}`}\n        {...panelProps}\n      >\n        {/* Right side drawer panel needs to be faded in after animation is completed to avoid focus jump. */}\n        {alignment === 'right' ? (\n          isRightPanelVisible || (getIsReducedMotion() && isOpen) ? (\n            <div className=\"animate-fadein\">{children}</div>\n          ) : null\n        ) : (\n          children\n        )}\n      </div>\n    </FocusLock>\n  );\n};\n","export * from './lib/drawer';\n","import type * as Types from './types';\n\nimport {\n  useQuery,\n  type QueryClient,\n  type FetchQueryOptions,\n  type UseQueryOptions,\n} from '@tanstack/react-query';\nimport type { DXError } from '@dx-ui/types-graphql';\n\nexport const Smb_MemberIdAndStatusDocument = {\n  operationName: 'programAccounts',\n  operationString: `query programAccounts($guestId: BigInt!, $language: String!) {\n  programAccounts(guestId: $guestId, language: $language) {\n    accountId\n    accountName\n    accountStatus\n    memberId\n    memberStatus\n  }\n}`,\n  originalOpName: 'smb_MemberIdAndStatus',\n};\nexport function useSmb_MemberIdAndStatusQuery<\n  TData = Types.Smb_MemberIdAndStatusQuery,\n  TError = DXError\n>(\n  variables: Types.Smb_MemberIdAndStatusQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Smb_MemberIdAndStatusQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Smb_MemberIdAndStatusQuery, TError, TData>({\n    queryKey: [Smb_MemberIdAndStatusDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideSmb_MemberIdAndStatusQuery(\n  queryClient: QueryClient,\n  variables: Types.Smb_MemberIdAndStatusQueryVariables,\n  options?: FetchQueryOptions<Types.Smb_MemberIdAndStatusQuery>\n) {\n  return queryClient.fetchQuery<Types.Smb_MemberIdAndStatusQuery>({\n    queryKey: [Smb_MemberIdAndStatusDocument, variables],\n    ...options,\n  });\n}\n\nexport const Smb_ProgramAccountMemberDocument = {\n  operationName: 'programAccountMember',\n  operationString: `query programAccountMember($guestId: BigInt!, $language: String!, $input: ProgramAccountsSmbMemberInput!) {\n  programAccountMember(guestId: $guestId, language: $language, input: $input) {\n    accountId\n    guestId\n    emailAddress: emailAddressMasked\n    emailLastVerifiedDateFmt(language: $language, format: \"short\")\n    memberId\n    status\n    role\n  }\n}`,\n  originalOpName: 'smb_ProgramAccountMember',\n};\nexport function useSmb_ProgramAccountMemberQuery<\n  TData = Types.Smb_ProgramAccountMemberQuery,\n  TError = DXError\n>(\n  variables: Types.Smb_ProgramAccountMemberQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Smb_ProgramAccountMemberQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Smb_ProgramAccountMemberQuery, TError, TData>({\n    queryKey: [Smb_ProgramAccountMemberDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideSmb_ProgramAccountMemberQuery(\n  queryClient: QueryClient,\n  variables: Types.Smb_ProgramAccountMemberQueryVariables,\n  options?: FetchQueryOptions<Types.Smb_ProgramAccountMemberQuery>\n) {\n  return queryClient.fetchQuery<Types.Smb_ProgramAccountMemberQuery>({\n    queryKey: [Smb_ProgramAccountMemberDocument, variables],\n    ...options,\n  });\n}\n","import { sendReward } from '@dx-ui/framework-conductrics';\nimport set from 'lodash/set';\n\nimport { useAuth } from '@dx-ui/framework-auth-provider';\n\nimport {\n  useSmb_MemberIdAndStatusQuery,\n  useSmb_ProgramAccountMemberQuery,\n} from '../lib/gql/queries';\nimport { env } from '@dx-ui/framework-env';\nimport type { Mvts, UserLinks } from './types';\nimport { useRouter } from 'next/router';\n\nconst navigationInteractionGoal = 'g-6gRqwMh3Pt';\n\nexport const sendInteractionReward = () => {\n  sendReward(navigationInteractionGoal);\n};\n\nexport function removeSpacesAndAmpersands(str: string) {\n  return str.replace(/\\s+|&/g, '').toLowerCase();\n}\n\nexport function trackNavClickBasedOnLabel(label: string, dropdownLabel?: string) {\n  const value = removeSpacesAndAmpersands(`gh_${dropdownLabel ? `${dropdownLabel}_` : ''}${label}`);\n\n  trackNavClick(value);\n}\n\nexport function trackNavClick(value: string) {\n  if (window?.digitalData && window?._satellite && value) {\n    set(window.digitalData, 'click.clickID', value);\n    window._satellite?.track?.('global_click');\n  }\n}\n\nconst replaceLang = (stringValue: string, lang: string) => stringValue?.replace('__LANG__', lang);\n\nconst DEFAULT_OCODE = 'JHTNW';\n\n/** Returns the full set of potential nav links, including optional links like SMB and Go Hilton */\nexport function getBaseNavLinksFromEnv(lang: string, isAuthenticated: boolean) {\n  const signInUrl = replaceLang(\n    env('DX_AUTH_UI', 'https://www.hilton.com/__LANG__/auth2/guest/login/'),\n    lang\n  );\n\n  const signUpUrl = replaceLang(\n    `${env('OHW_BASE_URL')}__LANG__/hilton-honors/join/?ocode=${DEFAULT_OCODE}`,\n    lang\n  );\n  const environmentBaseUrl = env('OHW_BASE_URL', 'https://www.hilton.com/');\n\n  return {\n    signInLink: { url: signInUrl },\n    signUpLink: { url: signUpUrl },\n    accountLink: { url: `${environmentBaseUrl}${lang}/hilton-honors/guest/my-account/` },\n    honorsActivityLink: { url: `${environmentBaseUrl}${lang}/hilton-honors/guest/activity/` },\n    smbMemberLink: { url: `${environmentBaseUrl}${lang}/business/manage/` },\n    honorsPointsLink: { url: `${environmentBaseUrl}${lang}/hilton-honors/guest/points/` },\n    honorsProfileLink: { url: `${environmentBaseUrl}${lang}/hilton-honors/guest/profile/` },\n    friendsAndFamilyLink: {\n      url: env('TMTP_MANAGE_FAMILY_AND_FRIENDS_LINK', 'https://tmtp.hilton.com/tmtp/main.html'),\n    },\n    hgvMaxLink: {\n      url: env(\n        'EXTERNAL_HGV_PROGRAM_DETAILS_URL',\n        'https://help.hilton.com/s/article/HGV-Max-rate'\n      ),\n    },\n    goHiltonLink: {\n      url: env(\n        'EXTERNAL_TMTP_PROGRAM_DETAILS_URL',\n        'https://help.hilton.com/s/article/What-is-the-Go-Hilton-employee-program'\n      ),\n    },\n    findStayLink: {\n      url: isAuthenticated\n        ? `${environmentBaseUrl}${lang}/hilton-honors/guest/activity/`\n        : `${environmentBaseUrl}${lang}/book/reservation/find/`,\n    },\n  } as const satisfies UserLinks;\n}\n\nexport function useProgramMember({\n  programAccountId,\n  shouldFetchSmbMemberIdAndStatus = false,\n}: Partial<{\n  programAccountId: number | null | undefined;\n  shouldFetchSmbMemberIdAndStatus: boolean;\n}> = {}) {\n  const { guestId, guestInfo } = useAuth();\n  const { locale = 'en', query } = useRouter();\n\n  const programAccountIdParam = isNaN(Number(query?.programAccountId))\n    ? undefined\n    : Number(query?.programAccountId);\n\n  const accountId = programAccountId || programAccountIdParam;\n\n  const { data, isLoading } = useSmb_MemberIdAndStatusQuery(\n    { guestId: guestId as number, language: locale },\n    {\n      enabled: !!guestId && (!!guestInfo?.hhonors?.isSMBMember || shouldFetchSmbMemberIdAndStatus),\n    }\n  );\n\n  let mostRelevantProgramAccount = data?.programAccounts?.[0];\n\n  if ((data?.programAccounts?.length || 0) > 1 && accountId) {\n    mostRelevantProgramAccount = data?.programAccounts.filter(\n      (programAccount) => programAccount?.accountId === accountId\n    )?.[0];\n  }\n\n  const { data: programAccountData, isLoading: memberDataLoading } =\n    useSmb_ProgramAccountMemberQuery(\n      {\n        guestId: guestId as number,\n        language: locale,\n        input: {\n          accountId: accountId || (mostRelevantProgramAccount?.accountId as number),\n          memberId: mostRelevantProgramAccount?.memberId as number,\n        },\n      },\n      {\n        enabled:\n          !!guestId &&\n          !!mostRelevantProgramAccount?.memberId &&\n          Boolean(accountId || mostRelevantProgramAccount?.accountId),\n      }\n    );\n\n  const member = {\n    accountId,\n    ...programAccountData?.programAccountMember,\n    memberDataLoading,\n    isLoading,\n  };\n  return member;\n}\n\nexport function getNHCBP5758MVTVariant(mvts?: Mvts) {\n  const variant = mvts?.['5758']?.variant || 'A';\n\n  const isDefaultVariant = variant === 'A';\n  const isGlowVariant = variant === 'E';\n  const isSpeechBubble = variant === 'B' || variant === 'C' || variant === 'D';\n\n  return { variant, isDefaultVariant, isGlowVariant, isSpeechBubble };\n}\n","import type { HeaderProps } from './types';\nimport { useTranslation } from 'next-i18next';\n\nexport const Logo: React.FC<Pick<HeaderProps, 'brand' | 'theme'>> = ({ brand, theme }) => {\n  const { t } = useTranslation('osc-header');\n  const altText =\n    brand.code === 'WW'\n      ? t('hiltonForTheStay')\n      : brand.code === 'OU'\n      ? `${t('hiltonForTheStay')}, ${brand.name}`\n      : brand.code === 'LX'\n      ? `${t('hiltonForTheStay')}, SLH`\n      : brand.name;\n\n  return (\n    <img\n      src={\n        theme === 'dark'\n          ? `/modules/assets/svgs/logos/${brand.code}_inverted.svg`\n          : `/modules/assets/svgs/logos/${brand.code}.svg`\n      }\n      //Logo for worldwide has marketing text. So only when WW is passed use custom alt text override\n      alt={altText}\n      className=\"header-logo\"\n    />\n  );\n};\n\nexport const HeaderLogoLink: React.FC<\n  Pick<HeaderProps, 'brand' | 'theme' | 'heading'> & Pick<React.ComponentProps<'a'>, 'className'>\n> = ({ brand, className, theme, heading }) => {\n  const { t } = useTranslation('osc-header');\n\n  const Wrapper = heading ? 'h1' : 'span';\n\n  return (\n    <Wrapper aria-label={heading ? heading : undefined} className={className}>\n      <a\n        data-testid=\"brand-logo-link\"\n        href={brand.url}\n        className=\"relative block h-14 w-28 overflow-hidden brand-lx:lg:w-44 brand-ou:lg:w-72\"\n        {...(!!brand.onClick && { onClick: brand.onClick })}\n        {...(!!brand.target && { target: brand.target })}\n        {...(brand?.target === '_blank' && { rel: 'noreferrer' })}\n      >\n        <Logo theme={theme} brand={brand} />\n        <span className=\"sr-only\">{brand?.target === '_blank' ? `, ${t('newTab')}` : ''}</span>\n      </a>\n    </Wrapper>\n  );\n};\n","import * as React from 'react';\nimport { PopupButton, PopupContent, usePopup } from '@dx-ui/osc-popup';\nimport { sendInteractionReward } from '../header.utilities';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { useTranslation } from 'next-i18next';\nimport type { LoginResponse } from '@dx-ui/osc-login';\nimport { LoginIFrame } from '@dx-ui/osc-login';\nimport { Link } from '@dx-ui/osc-link';\nimport cx from 'classnames';\nimport type { HeaderProps } from '../types';\nimport Icon, { type IconNames } from '@dx-ui/osc-icon';\n\ntype IconName = (typeof IconNames)[number];\n\ntype NavItemSection = 'navigation' | 'user';\n\ntype NavItemProps = Omit<React.ComponentProps<'li'>, 'className' | 'children'> &\n  Pick<HeaderProps, 'theme'> & {\n    isOpen?: boolean;\n    children: React.ReactElement;\n  };\n\nexport function NavItem({ children, theme, isOpen = false, ...listItemProps }: NavItemProps) {\n  const isDark = theme === 'dark';\n\n  const spacedChild = React.cloneElement(children, {\n    className: cx(children.props.className, 'flex-1 self-stretch'),\n  });\n\n  return (\n    <li\n      {...listItemProps}\n      className={cx('group flex h-full items-center px-1 pt-1 text-sm', {\n        'nav-list-item': !theme,\n        'nav-list-item-dark': isDark,\n        'nav-list-item-active': isOpen && !theme,\n        'nav-list-item-active-dark': isOpen && isDark,\n      })}\n    >\n      {spacedChild}\n    </li>\n  );\n}\n\nexport function NavItemVisual({\n  label,\n  icon,\n  indicator,\n  hasRotatedIndicator,\n  theme,\n  section,\n}: {\n  label: string;\n  theme: 'light' | 'dark' | undefined;\n  icon?: IconName;\n  indicator?: IconName;\n  section: NavItemSection;\n  hasRotatedIndicator?: boolean;\n}) {\n  const isDark = theme === 'dark';\n\n  return (\n    <>\n      <span className={cx('block min-h-5', section === 'user' ? 'nav-item-text' : null)}>\n        {label}\n      </span>\n\n      {icon ? (\n        <div className={cx('ps-2')}>\n          <Icon\n            name={icon}\n            className={cx(\n              isDark ? 'nav-icon-dark' : 'nav-icon',\n              'group-focus-within:hidden group-hover:hidden'\n            )}\n            wrapper=\"span\"\n          />\n          <Icon\n            name={icon}\n            variant=\"solid\"\n            className={cx(\n              isDark ? 'nav-icon-active-dark' : 'nav-icon-active',\n              'hidden group-focus-within:block group-hover:block'\n            )}\n            wrapper=\"span\"\n          />\n        </div>\n      ) : null}\n\n      {indicator ? (\n        <div>\n          <Icon\n            name={indicator}\n            className={cx(\n              hasRotatedIndicator ? 'rotate-180' : null,\n              'group-focus-within:hidden group-hover:hidden'\n            )}\n            wrapper=\"span\"\n          />\n          <Icon\n            name={indicator}\n            className={cx(\n              hasRotatedIndicator ? 'rotate-180' : null,\n              'hidden group-focus-within:block group-hover:block'\n            )}\n            wrapper=\"span\"\n          />\n        </div>\n      ) : null}\n    </>\n  );\n}\n\ntype NavItemWithLinkProps = Omit<Link, 'className' | 'children' | 'icon'> & {\n  theme: 'dark' | undefined;\n  section: NavItemSection;\n  label: string;\n  icon?: React.ReactElement;\n  namedIcon?: IconName;\n  isWide?: boolean;\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\n//TODO: make the focus ring here take up the full box, like with the dropdowns. Also check ItemWithModal\nexport const NavItemWithLink: React.FC<NavItemWithLinkProps> = ({\n  theme,\n  namedIcon,\n  section,\n  label,\n  isWide,\n  experimentationConfiguration,\n  ...rest\n}) => {\n  return (\n    <NavItem theme={theme} data-testid=\"with-link\">\n      <Link\n        underline={false}\n        {...rest}\n        data-conductrics-goal={experimentationConfiguration?.goal}\n        data-conductrics-value={experimentationConfiguration?.value}\n        className={cx('flex items-center whitespace-nowrap', isWide ? 'p-2' : 'p-1', {\n          'nav-main-link': section === 'navigation',\n        })}\n      >\n        <NavItemVisual section={section} theme={theme} label={label} icon={namedIcon} />\n      </Link>\n    </NavItem>\n  );\n};\n\nexport type TNavItemWithModal = {\n  /** Specify the title for the Dialog */\n  title: string;\n  /** callback to run after login attempt */\n  onLoginAttempt: React.ComponentProps<typeof LoginIFrame>['onLoginAttempt'];\n  /** Name of the button to display */\n  buttonName?: string;\n  /** aria-label of the button */\n  buttonLabel: string;\n  buttonIcon?: IconName;\n  onClick?: () => void;\n  theme: 'dark' | undefined;\n  section: NavItemSection;\n};\n\nexport const NavItemWithModal: React.FC<React.PropsWithChildren<TNavItemWithModal>> = ({\n  theme,\n  section,\n  buttonLabel,\n  buttonIcon,\n  onClick,\n  title,\n  onLoginAttempt,\n  children,\n}) => {\n  const [showDialog, setShowDialog] = React.useState<boolean>(false);\n  const open = () => {\n    sendInteractionReward();\n    onClick?.();\n    setShowDialog(true);\n  };\n  const close = () => setShowDialog(false);\n\n  const handleLogin = (response: LoginResponse) => {\n    onLoginAttempt?.(response);\n    if (!response.error) {\n      close();\n    }\n  };\n\n  const arrayChildren = React.Children.toArray(children);\n\n  const [t] = useTranslation('osc-login');\n\n  return (\n    <>\n      <NavItem theme={theme} data-testid=\"with-modal\">\n        <button\n          data-testid=\"with-modal\"\n          type=\"button\"\n          className=\"group flex h-full items-center whitespace-nowrap px-1 text-sm\"\n          onClick={open}\n        >\n          <NavItemVisual\n            label={buttonLabel ?? t('signIn')}\n            icon={buttonIcon}\n            theme={theme}\n            section={section}\n          />\n        </button>\n      </NavItem>\n      <Dialog isOpen={showDialog} onDismiss={close} size=\"md\" title={title}>\n        {React.Children.map(arrayChildren, (child) => {\n          if (React.isValidElement(child) && child.type === LoginIFrame) {\n            return React.cloneElement(\n              child as React.ReactElement<React.ComponentProps<typeof LoginIFrame>>,\n              {\n                onLoginAttempt: handleLogin,\n                onClose: close,\n              }\n            );\n          }\n          return child;\n        })}\n      </Dialog>\n    </>\n  );\n};\n\ntype TNavItemWithPopup = {\n  section: NavItemSection;\n  onClick?: () => void;\n  theme: 'dark' | undefined;\n  popupButtonRef?: React.RefObject<HTMLButtonElement>;\n  label: string;\n  icon?: IconName;\n  indicator?: IconName;\n  rotateOnOpen?: boolean;\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\nexport const NavItemWithPopup: React.FC<React.PropsWithChildren<TNavItemWithPopup>> = ({\n  children,\n  label,\n  icon,\n  rotateOnOpen,\n  onClick,\n  theme,\n  popupButtonRef,\n  section,\n  indicator,\n  experimentationConfiguration,\n}) => {\n  const { isOpen } = usePopup();\n\n  return (\n    <>\n      <NavItem theme={theme} isOpen={isOpen} data-testid=\"with-popup\">\n        <PopupButton\n          ref={popupButtonRef}\n          data-conductrics-goal={experimentationConfiguration?.goal}\n          data-conductrics-value={experimentationConfiguration?.value}\n          onClick={() => {\n            sendInteractionReward();\n            onClick?.();\n          }}\n          className={cx('flex items-center whitespace-nowrap p-2', {\n            'nav-main-link': section === 'navigation',\n          })}\n        >\n          <NavItemVisual\n            theme={theme}\n            label={label}\n            section={section}\n            indicator={indicator}\n            icon={icon}\n            hasRotatedIndicator={!isOpen && rotateOnOpen}\n          />\n        </PopupButton>\n      </NavItem>\n      <PopupContent\n        className=\"!popup-margin !w-screen !p-0 motion-safe:animate-fadein\"\n        popupStyles={{ left: 0 }}\n      >\n        {children}\n      </PopupContent>\n    </>\n  );\n};\n","import * as React from 'react';\nimport { sendInteractionReward } from '../../header.utilities';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { useTranslation } from 'next-i18next';\nimport type { LoginResponse } from '@dx-ui/osc-login';\nimport { LoginIFrame } from '@dx-ui/osc-login';\nimport { NavItemVisual } from '../nav-items';\nimport type { TNavItemWithModal } from '../nav-items';\nimport cx from 'classnames';\nimport { Link } from '@dx-ui/osc-link';\nimport type { HeaderProps } from '../../types';\nimport { type IconNames } from '@dx-ui/osc-icon';\n\ntype IconName = (typeof IconNames)[number];\n\ntype NavItemSection = 'navigation' | 'user';\n\nexport const NavItemWithModalAndGlow: React.FC<React.PropsWithChildren<TNavItemWithModal>> = ({\n  theme,\n  section,\n  buttonLabel,\n  buttonIcon,\n  onClick,\n  title,\n  onLoginAttempt,\n  children,\n}) => {\n  const [showDialog, setShowDialog] = React.useState(false);\n\n  const open = () => {\n    sendInteractionReward();\n    onClick?.();\n    setShowDialog(true);\n  };\n  const close = () => setShowDialog(false);\n\n  const handleLogin = (response: LoginResponse) => {\n    onLoginAttempt?.(response);\n    if (!response.error) {\n      close();\n    }\n  };\n\n  const arrayChildren = React.Children.toArray(children);\n\n  const [t] = useTranslation('osc-login');\n\n  return (\n    <>\n      <li className=\"flex items-center justify-center\">\n        <button\n          className=\"btn btn-primary-outline flex items-center py-1 pe-3 ps-4 shadow-[0_0_15px_rgb(0,144,147)] transition-shadow duration-300 ease-in-out hover:shadow-none\"\n          data-testid=\"with-modal\"\n          type=\"button\"\n          onClick={open}\n        >\n          <NavItemVisual\n            label={buttonLabel ?? t('signIn')}\n            icon={buttonIcon}\n            theme={theme}\n            section={section}\n          />\n        </button>\n      </li>\n      <Dialog isOpen={showDialog} onDismiss={close} size=\"md\" title={title}>\n        {React.Children.map(arrayChildren, (child) => {\n          if (React.isValidElement(child) && child.type === LoginIFrame) {\n            return React.cloneElement(\n              child as React.ReactElement<React.ComponentProps<typeof LoginIFrame>>,\n              {\n                onLoginAttempt: handleLogin,\n                onClose: close,\n              }\n            );\n          }\n          return child;\n        })}\n      </Dialog>\n    </>\n  );\n};\n\ntype NavItemWithLinkProps = Omit<Link, 'className' | 'children' | 'icon'> & {\n  theme: 'dark' | undefined;\n  section: NavItemSection;\n  label: string;\n  icon?: React.ReactElement;\n  namedIcon?: IconName;\n  isWide?: boolean;\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\ntype NavItemProps = Omit<React.ComponentProps<'li'>, 'className' | 'children'> &\n  Pick<HeaderProps, 'theme'> & {\n    isOpen?: boolean;\n    children: React.ReactElement;\n  };\n\nexport function NavItem({ children, ...listItemProps }: NavItemProps) {\n  const spacedChild = React.cloneElement(children, {\n    className: cx(children.props.className, 'flex-1 self-stretch'),\n  });\n\n  return (\n    <li\n      {...listItemProps}\n      className=\"group flex h-full items-center border-b-8 border-transparent px-1 pt-1 text-sm hover:text-primary hover:underline\"\n    >\n      {spacedChild}\n    </li>\n  );\n}\n\nexport const NavItemWithLinkGlow: React.FC<NavItemWithLinkProps> = ({\n  theme,\n  namedIcon,\n  section,\n  label,\n  isWide,\n  experimentationConfiguration,\n  ...rest\n}) => {\n  return (\n    <NavItem theme={theme} data-testid=\"with-link\">\n      <Link\n        underline={false}\n        {...rest}\n        data-conductrics-goal={experimentationConfiguration?.goal}\n        data-conductrics-value={experimentationConfiguration?.value}\n        className={cx('flex items-center whitespace-nowrap', isWide ? 'p-2' : 'p-1', {\n          'nav-main-link': section === 'navigation',\n        })}\n      >\n        <NavItemVisual section={section} theme={theme} label={label} icon={namedIcon} />\n      </Link>\n    </NavItem>\n  );\n};\n","import { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { Link } from '@dx-ui/osc-link';\n\nimport Icon from '@dx-ui/osc-icon';\nimport type { HeaderProps, TDrawerLink } from '../types';\nimport { trackNavClick, trackNavClickBasedOnLabel } from '../header.utilities';\nimport { getLocaleFormattedNumber, replaceLang } from '@dx-ui/framework-i18n';\nimport { useRouter } from 'next/router';\n\nexport function NavigationPopupContents({\n  subMenu,\n  label,\n}: {\n  subMenu: TDrawerLink[];\n  label: string;\n}) {\n  const { locale = 'en' } = useRouter();\n\n  return (\n    <div className=\"container flex-1 py-5\">\n      <MenuList>\n        {subMenu.map(\n          ({ label: subMenuLabel, link: { experimentationConfiguration, ...link }, onClick }) => (\n            <MenuListItem key={subMenuLabel}>\n              <Link\n                {...link}\n                url={replaceLang(link?.url, locale)}\n                data-conductrics-goal={experimentationConfiguration?.goal}\n                data-conductrics-value={experimentationConfiguration?.value}\n                underline={false}\n                className=\"nav-drawer-link-text\"\n                anchorClassName=\"nav-drawer-link p-3 hover:nav-drawer-link-active focus:nav-drawer-link-active brand-ey:focus:font-normal brand-ey:focus:bg-tertiary-alt brand-ey:focus:border-b-primary-alt brand-ou:focus:bg-bg-light\"\n                onClick={(event) => {\n                  trackNavClickBasedOnLabel(subMenuLabel, label);\n                  onClick?.();\n                  link?.onClick?.(event);\n                }}\n              >\n                {subMenuLabel}\n              </Link>\n            </MenuListItem>\n          )\n        )}\n      </MenuList>\n    </div>\n  );\n}\n\nexport type UserPopupContentsProps = Pick<\n  HeaderProps,\n  | 'userLinks'\n  | 'shouldOpenAccountLinksInNewWindow'\n  | 'shouldSuppressHonorsAccountLinks'\n  | 'onSignOut'\n> & {\n  user: Exclude<HeaderProps['user'], undefined>;\n};\n\nexport default function UserPopupContents({\n  user,\n  userLinks,\n  shouldOpenAccountLinksInNewWindow,\n  shouldSuppressHonorsAccountLinks,\n  onSignOut,\n}: UserPopupContentsProps) {\n  const { locale = 'en' } = useRouter();\n  const [t] = useTranslation('osc-header');\n\n  const formattedHonorsPointsTotal = getLocaleFormattedNumber(user?.honorsPoints, { locale });\n\n  return (\n    <div className=\"container flex py-5\">\n      <div className=\"flex items-center\">\n        <div className=\"flex size-20 shrink-0 items-center justify-center rounded-full bg-hilton-alt\">\n          <Icon name=\"user\" size=\"4xl\" />\n        </div>\n        <div className=\"ms-5\">\n          <p className=\"mb-1 text-sm font-bold brand-ey:font-normal\">\n            {t('greetings', { username: user.name })}\n          </p>\n          <p className=\"mb-1 capitalize\">\n            <span className=\"text-sm font-bold underline brand-ey:font-normal\">\n              {user.honorsTier}\n            </span>{' '}\n            {t('status')}\n          </p>\n          <p className=\"mb-1 text-sm brand-ey:font-normal\">\n            {t('honorsPointsTotal', { honorsPointsTotal: formattedHonorsPointsTotal })}\n          </p>\n          {user.hhonorsNumber ? (\n            <p className=\"mb-1 text-sm brand-ey:font-normal\">\n              {t('hiltonHonorsNumber', { hhonorsNumber: user.hhonorsNumber })}\n            </p>\n          ) : null}\n        </div>\n      </div>\n      <div className=\"ms-5 flex-1 xl:ms-10\">\n        <MenuList>\n          {userLinks?.accountLink ? (\n            <MegaUserLink\n              url={userLinks?.accountLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hiltonhonorshome');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('hiltonHonorsHome')}\n            </MegaUserLink>\n          ) : null}\n          {userLinks?.honorsActivityLink && !shouldSuppressHonorsAccountLinks ? (\n            <MegaUserLink\n              url={userLinks?.honorsActivityLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hiltonhonorsactivity');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('activity')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.honorsPointsLink?.url && !shouldSuppressHonorsAccountLinks ? (\n            <MegaUserLink\n              url={userLinks.honorsPointsLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hiltonhonorspoints');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('pointsLabel')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.honorsProfileLink?.url && !shouldSuppressHonorsAccountLinks ? (\n            <MegaUserLink\n              url={userLinks.honorsProfileLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hiltonhonorsprofile');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('profile')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.goHiltonLink?.url ? (\n            <MegaUserLink\n              url={userLinks.goHiltonLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_gohiltonprogramdetails');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('goHiltonProgramDetails')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.friendsAndFamilyLink?.url ? (\n            <MegaUserLink\n              url={userLinks.friendsAndFamilyLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_managefriendsandfamily');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('manageFriendsAndFamily')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.hgvMaxLink?.url ? (\n            <MegaUserLink\n              url={userLinks.hgvMaxLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hgvmaxratedetails');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('hgvMaxRateDetails')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.smbMemberLink?.url ? (\n            <MegaUserLink\n              url={userLinks.smbMemberLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_managehiltonforbusiness');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('manageHiltonForBusiness')}\n            </MegaUserLink>\n          ) : null}\n          <MenuListItem>\n            <button\n              className=\"nav-drawer-link nav-drawer-link-text w-full whitespace-nowrap text-left hover:nav-drawer-link-active focus:nav-drawer-link-active brand-ey:focus:border-b-primary-alt brand-ey:focus:bg-tertiary-alt brand-ou:focus:bg-bg-light\"\n              onClick={async () => {\n                trackNavClick('gh_membername_signout');\n                await onSignOut();\n              }}\n              type=\"button\"\n            >\n              {t('signOut')}\n            </button>\n          </MenuListItem>\n        </MenuList>\n      </div>\n    </div>\n  );\n}\n\nfunction MenuList({ children, ...listProps }: React.ComponentProps<'ul'>) {\n  return (\n    <ul {...listProps} className={cx('columns-3 gap-6', listProps.className)}>\n      {children}\n    </ul>\n  );\n}\n\nfunction MenuListItem({ children, ...listItemProps }: React.ComponentProps<'li'>) {\n  return (\n    <li {...listItemProps} data-testid=\"menu-list-item\" className=\"py-3\">\n      <span className=\"block break-inside-avoid border-b-2 border-border py-3 hover:font-bold brand-ey:hover:border-b-primary-alt brand-ey:hover:bg-tertiary-alt brand-ey:hover:font-normal brand-ou:border-primary brand-ou:hover:bg-bg-light \">\n        {children}\n      </span>\n    </li>\n  );\n}\n\nfunction MegaUserLink({\n  url,\n  onClick,\n  children,\n  isNewWindow,\n}: {\n  url: string;\n  onClick: () => void;\n  children: React.ReactNode;\n  isNewWindow?: boolean;\n}) {\n  return (\n    <MenuListItem>\n      <Link\n        url={url}\n        underline={false}\n        className=\"nav-drawer-link-text whitespace-nowrap\"\n        anchorClassName=\"nav-drawer-link hover:nav-drawer-link-active focus:nav-drawer-link-active brand-ey:focus:bg-tertiary-alt brand-ey:focus:border-b-primary-alt brand-ou:focus:bg-bg-light\"\n        onClick={onClick}\n        isNewWindow={isNewWindow}\n      >\n        {children}\n      </Link>\n    </MenuListItem>\n  );\n}\n","import Icon from '@dx-ui/osc-icon';\nimport * as Popover from '@radix-ui/react-popover';\nimport cx from 'classnames';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport { useEffect } from 'react';\ntype SpeechBubbleProps = {\n  showSpeechBubble: boolean;\n  variant: string;\n  closeSpeechBubble: () => void;\n  onInlineButtonClick: () => void;\n  containerRef?: Element | null;\n  contentStyles?: string;\n};\n//The internal radix's logic traps focus inside the popover. This is a workaround\nconst getDisplayedFocusableElements = () => {\n  const body = document.querySelector('body');\n\n  if (body) {\n    const focusableElements = body.querySelectorAll(\n      'a, button, input, textarea, select, details, summary, [tabindex]:not([tabindex=\"-1\"]), iframe, area'\n    );\n\n    const displayedFocusableElements = Array.from(focusableElements).filter((element) => {\n      const style = window.getComputedStyle(element);\n      return (\n        style.display !== 'none' &&\n        style.visibility !== 'hidden' &&\n        (element as HTMLElement).offsetWidth > 0 &&\n        (element as HTMLElement).offsetHeight > 0\n      );\n    });\n\n    return displayedFocusableElements as HTMLElement[];\n  }\n};\n\nexport const SpeechBubble: React.FC<React.PropsWithChildren<SpeechBubbleProps>> = ({\n  closeSpeechBubble,\n  showSpeechBubble,\n  contentStyles,\n  children,\n  variant,\n  containerRef,\n  onInlineButtonClick,\n}) => {\n  const onSpeechBubbleButtonClick = () => {\n    sendReward('g-JtxVq7s7u9');\n    onInlineButtonClick?.();\n  };\n  //The internal radix's logic traps focus inside the popover. This is a workaround\n  const onKeyDownCloseButton = (e: React.KeyboardEvent) => {\n    const displayedFocusableElements = getDisplayedFocusableElements();\n\n    if (e.shiftKey && e.key === 'Tab' && displayedFocusableElements) {\n      e.preventDefault();\n\n      //of the currently focused element\n      const currentIndex = Array.prototype.indexOf.call(\n        displayedFocusableElements,\n        document.activeElement\n      );\n      //in the list of displayed focusable items\n      const previousIndex =\n        (currentIndex - 1 + displayedFocusableElements.length) % displayedFocusableElements.length;\n\n      displayedFocusableElements[previousIndex]?.focus();\n    }\n  };\n  //The internal radix's logic traps focus inside the popover. This is a workaround\n  const onKeyDownInlineButton = (e: React.KeyboardEvent) => {\n    const displayedFocusableElements = getDisplayedFocusableElements();\n\n    if (!e.shiftKey && e.key === 'Tab' && displayedFocusableElements) {\n      e.preventDefault();\n      //of the currently focused element\n      const currentIndex = Array.prototype.indexOf.call(\n        displayedFocusableElements,\n        document.activeElement\n      );\n      //in the list of displayed focusable items\n      const nextIndex = (currentIndex + 1) % displayedFocusableElements.length;\n\n      displayedFocusableElements[nextIndex]?.focus();\n    }\n  };\n\n  //This is another workaround to remove the focus guards that radix injects under the hood\n  //This is not a good long term solution, and we might need to rethink using radix for a speech bubble\n  //This is for the MVT test only\n  useEffect(() => {\n    if (showSpeechBubble) {\n      //remove existing focus guards\n      const focusGuards = document.querySelectorAll('span[data-radix-focus-guard]');\n      focusGuards.forEach((el) => el.remove());\n\n      // Select the parent node where the focus guards are added\n      const parentNode = document.body;\n\n      const config: MutationObserverInit = { childList: true, subtree: false };\n\n      const callback: MutationCallback = (mutationsList) => {\n        for (const mutation of mutationsList) {\n          if (mutation.type === 'childList') {\n            mutation.addedNodes.forEach((node) => {\n              if (\n                node.nodeType === 1 &&\n                (node as HTMLElement).hasAttribute('data-radix-focus-guard')\n              ) {\n                (node as HTMLElement).remove();\n              }\n            });\n          }\n        }\n      };\n      const observer = new MutationObserver(callback);\n      observer.observe(parentNode, config);\n\n      return () => {\n        observer.disconnect();\n      };\n    }\n  }, [showSpeechBubble]);\n\n  return (\n    <div>\n      <Popover.Root open={showSpeechBubble}>\n        <Popover.Trigger asChild>{children}</Popover.Trigger>\n        <Popover.Portal container={containerRef}>\n          <Popover.Content\n            className={cx(\n              'z-10 flex w-[80vw] max-w-[178px] flex-col rounded-md bg-tertiary shadow-lg sm:max-w-[266px]',\n              contentStyles\n            )}\n            align=\"end\"\n            hideWhenDetached\n            onEscapeKeyDown={closeSpeechBubble}\n            aria-label=\"Sign in message\"\n            onOpenAutoFocus={(event) => event.preventDefault()}\n          >\n            <div className=\"flex justify-end\">\n              <Popover.Close\n                className=\"text-bg\"\n                aria-label=\"Close sign in message\"\n                onClick={closeSpeechBubble}\n                onKeyDown={onKeyDownCloseButton}\n              >\n                <Icon name=\"close\" size=\"md\" />\n              </Popover.Close>\n            </div>\n            <p className=\"px-4 pb-4 text-bg\" id=\"sign-in-note\">\n              {variant === 'B' ? (\n                <>\n                  Get exclusive rates and benefits with{' '}\n                  <button\n                    onClick={onSpeechBubbleButtonClick}\n                    onKeyDown={onKeyDownInlineButton}\n                    type=\"button\"\n                    className=\"underline\"\n                  >\n                    Hilton Honors.\n                  </button>\n                </>\n              ) : null}\n              {variant === 'C' ? (\n                <>\n                  <button\n                    onClick={onSpeechBubbleButtonClick}\n                    onKeyDown={onKeyDownInlineButton}\n                    type=\"button\"\n                    className=\"underline\"\n                  >\n                    Join or sign in\n                  </button>\n                  <span> to unlock Hilton Honors benefits.</span>\n                </>\n              ) : null}\n              {variant === 'D' ? (\n                <>\n                  <span>Check out faster—</span>\n                  <button\n                    onClick={onSpeechBubbleButtonClick}\n                    onKeyDown={onKeyDownInlineButton}\n                    type=\"button\"\n                    className=\"underline\"\n                  >\n                    join or sign in\n                  </button>\n                  <span> to Hilton Honors.</span>\n                </>\n              ) : null}\n            </p>\n            <Popover.Arrow\n              className=\"fill-tertiary lg:ml-[36px]\"\n              width={15}\n              height={10}\n              aria-hidden={true}\n            />\n          </Popover.Content>\n        </Popover.Portal>\n      </Popover.Root>\n    </div>\n  );\n};\n\nexport default SpeechBubble;\n","import { LoginIFrame } from '@dx-ui/osc-login';\nimport type { LoginResponse, LoginBaseProps } from '@dx-ui/osc-login';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport * as React from 'react';\nimport { SpeechBubble } from './speech-bubble';\nimport { sendInteractionReward } from '../../header.utilities';\nimport { sendReward } from '@dx-ui/framework-conductrics';\n\ntype NavItemWithSpeechBubbleProps = {\n  title: LoginBaseProps['title'];\n  frameSrc: LoginBaseProps['frameSrc'];\n  options?: LoginBaseProps['options'];\n  onLoginAttempt: React.ComponentProps<typeof LoginIFrame>['onLoginAttempt'];\n  variant: string;\n  buttonClassName: LoginBaseProps['buttonClassName'];\n  onClick?: () => void;\n  onDialogOpen?: () => void;\n};\n\nexport const NavItemWithSpeechBubble = ({\n  onLoginAttempt,\n  title,\n  options = {},\n  frameSrc,\n  variant,\n  buttonClassName,\n  onClick,\n  onDialogOpen,\n  children,\n}: React.PropsWithChildren<NavItemWithSpeechBubbleProps>) => {\n  const [showDialog, setShowDialog] = React.useState(false);\n  const [showSpeechBubble, setShowSpeechBubble] = React.useState(true);\n\n  const [speechBubbleContainer, setSpeechBubbleContainer] = React.useState<\n    HTMLDivElement | undefined\n  >(undefined);\n\n  const buttonRef = React.useRef<React.ElementRef<'button'>>(null);\n\n  const onSignInClick = () => {\n    onClick?.();\n    onDialogOpen?.();\n    setShowDialog(true);\n    setShowSpeechBubble(false);\n    sendInteractionReward();\n    sendReward('nav-sign-in-click');\n  };\n\n  const close = () => setShowDialog(false);\n\n  const closeSpeechBubble = () => {\n    setShowSpeechBubble(false);\n    buttonRef?.current?.focus();\n  };\n\n  const setRef = (node: HTMLDivElement) => {\n    if (node) {\n      setSpeechBubbleContainer(node);\n    }\n  };\n\n  const handleLogin = async (response: LoginResponse) => {\n    // eslint-disable-next-line @typescript-eslint/await-thenable\n    await onLoginAttempt?.(response);\n    if (!response.error) {\n      close();\n    }\n  };\n  return (\n    <>\n      <Dialog\n        title={title}\n        isOpen={showDialog}\n        onDismiss={close}\n        size=\"md\"\n        dialogTrigger={\n          <SpeechBubble\n            closeSpeechBubble={closeSpeechBubble}\n            showSpeechBubble={showSpeechBubble}\n            variant={variant}\n            containerRef={speechBubbleContainer}\n            onInlineButtonClick={() => {\n              closeSpeechBubble?.();\n              setShowDialog(true);\n              onDialogOpen?.();\n            }}\n          >\n            <button\n              data-testid=\"with-modal\"\n              type=\"button\"\n              className={buttonClassName}\n              onClick={onSignInClick}\n              ref={buttonRef}\n              aria-describedby=\"sign-in-note\"\n            >\n              {children}\n            </button>\n          </SpeechBubble>\n        }\n      >\n        <LoginIFrame\n          frameSrc={frameSrc}\n          options={options}\n          data-e2e=\"loginIframe\"\n          onLoginAttempt={handleLogin}\n          onClose={close}\n          title={title}\n        />\n      </Dialog>\n      <div ref={setRef} />\n    </>\n  );\n};\n\nexport default NavItemWithSpeechBubble;\n","import { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { Link } from '@dx-ui/osc-link';\nimport { Popup } from '@dx-ui/osc-popup';\nimport { LoginIFrame } from '@dx-ui/osc-login';\nimport type { MegaMenuProps } from '../types';\nimport {\n  sendInteractionReward,\n  trackNavClickBasedOnLabel,\n  trackNavClick,\n  getNHCBP5758MVTVariant,\n} from '../header.utilities';\nimport { LanguageSelector } from '@dx-ui/osc-language-selector';\nimport { sendReward, Status, useConductricsSelection } from '@dx-ui/framework-conductrics';\nimport { Logo } from '../header.logo';\nimport { useRef } from 'react';\nimport { NavItemVisual, NavItemWithLink, NavItemWithModal, NavItemWithPopup } from './nav-items';\nimport { NavItemWithModalAndGlow, NavItemWithLinkGlow } from './mvtest-nhcbp-5758/nav-item-glow';\nimport UserPopupContents, { NavigationPopupContents } from './popup-contents';\nimport { NavItemWithSpeechBubble } from './mvtest-nhcbp-5758/nav-item-speech-bubble';\nimport { useRouter } from 'next/router';\nimport { replaceLang } from '@dx-ui/framework-i18n';\n\nexport function MegaMenu({\n  isFluid,\n  suppressLogo = false,\n  shouldSuppressHonorsAccountLinks,\n  shouldSuppressFindStay,\n  shouldSuppressJoinAndSignIn,\n  shouldOpenAccountLinksInNewWindow,\n  brand,\n  mainNavLinks,\n  user,\n  languageSelectorOptions,\n  loginOptions,\n  onSignInAttempt,\n  userLinks,\n  onSignOut,\n  heading,\n  theme,\n  mvts,\n  SignUpComponent,\n}: MegaMenuProps) {\n  const userNavProps = {\n    user,\n    userLinks,\n    onSignInAttempt,\n    onSignOut,\n    loginOptions,\n    languageSelectorOptions,\n    theme,\n    mvts,\n    shouldSuppressHonorsAccountLinks,\n    shouldSuppressFindStay,\n    shouldSuppressJoinAndSignIn,\n    shouldOpenAccountLinksInNewWindow,\n    SignUpComponent,\n  };\n  const isDark = theme === 'dark';\n  const headingLevelProps = heading\n    ? {\n        role: 'heading',\n        'aria-level': 1,\n        'aria-label': heading,\n      }\n    : {};\n\n  return (\n    <div className=\"bg-transparent\">\n      <div\n        className={cx({\n          'container-fluid': isFluid,\n          container: !isFluid,\n        })}\n      >\n        <div className=\"relative flex flex-wrap\">\n          {suppressLogo ? null : (\n            <div className=\"flex min-h-[4.5rem] items-center\" {...headingLevelProps}>\n              <Link\n                url={brand.url}\n                target={brand.target}\n                onClick={sendInteractionReward}\n                // once nav is implemented on all pages for OHW make w-72 for all brands per UX/UI\n                anchorClassName=\"relative block h-14 w-28 brand-ou:lg:w-72 brand-lx:lg:w-72 me-1\"\n                showNewWindowIcon={false}\n              >\n                <Logo theme={theme} brand={brand} />\n              </Link>\n            </div>\n          )}\n          <div className=\"absolute end-0 top-0\">\n            <UserNav {...userNavProps} />\n          </div>\n        </div>\n      </div>\n      <div\n        className={cx({\n          'nav-bottom-link-area': !isDark,\n          'nav-bottom-link-area-dark': isDark,\n        })}\n      >\n        <div\n          className={cx({\n            'container-fluid': isFluid,\n            container: !isFluid,\n          })}\n        >\n          <div className=\"flex overflow-auto\" data-testid=\"header-links-container\">\n            {mainNavLinks?.length ? <MainNav theme={theme} mainNavLinks={mainNavLinks} /> : null}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\ntype UserNavProps = Pick<\n  MegaMenuProps,\n  | 'loginOptions'\n  | 'onSignInAttempt'\n  | 'onSignOut'\n  | 'user'\n  | 'userLinks'\n  | 'languageSelectorOptions'\n  | 'theme'\n  | 'shouldSuppressHonorsAccountLinks'\n  | 'shouldSuppressFindStay'\n  | 'shouldSuppressJoinAndSignIn'\n  | 'shouldOpenAccountLinksInNewWindow'\n  | 'SignUpComponent'\n  | 'mvts'\n>;\n\nfunction UserNav({\n  loginOptions,\n  onSignInAttempt,\n  onSignOut,\n  user,\n  languageSelectorOptions,\n  userLinks,\n  theme,\n  shouldSuppressHonorsAccountLinks,\n  shouldSuppressFindStay,\n  shouldSuppressJoinAndSignIn,\n  shouldOpenAccountLinksInNewWindow,\n  SignUpComponent,\n  mvts,\n}: UserNavProps) {\n  const [t] = useTranslation(['osc-header', 'osc-login']);\n  function useFindStayTest() {\n    const { selection, isLoaded } = useConductricsSelection('a-oWnxRSIvy6Dz', Status.OK);\n    return {\n      variant1: isLoaded && selection?.choice === 'B',\n      variant2: isLoaded && selection?.choice === 'C',\n      variant3: isLoaded && selection?.choice === 'D',\n    };\n  }\n\n  const defaultOptions: React.ComponentProps<typeof LoginIFrame> = {\n    frameSrc: userLinks?.signInLink?.url || '',\n    title: t('osc-login:signIn'),\n    onLoginAttempt: onSignInAttempt,\n  };\n\n  const userButtonLinkRef = useRef<HTMLButtonElement>(null);\n  const isDark = theme === 'dark';\n  const { variant1, variant2, variant3 } = useFindStayTest();\n\n  const { isDefaultVariant, isGlowVariant, isSpeechBubble, variant } = getNHCBP5758MVTVariant(mvts);\n\n  return (\n    <nav className=\"relative ms-auto flex min-h-[4.5rem]\" aria-label={t('hiltonHonors')}>\n      <ul className=\"flex\">\n        {languageSelectorOptions ? (\n          <li className=\"flex items-center pb-2 pe-2 pt-1\">\n            <LanguageSelector theme={theme} {...languageSelectorOptions} />\n          </li>\n        ) : null}\n        {userLinks?.findStayLink && !shouldSuppressFindStay && !isGlowVariant ? (\n          <NavItemWithLink\n            onClick={() => {\n              sendInteractionReward();\n              sendReward('find-stay-click');\n              trackNavClick('gh_findstay');\n            }}\n            url={userLinks?.findStayLink.url}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n            showNewWindowIcon={false}\n            theme={theme}\n            section=\"user\"\n            isWide\n            {...(variant1\n              ? {\n                  namedIcon: 'calendar',\n                  label: t('yourStays'),\n                }\n              : variant2\n              ? {\n                  namedIcon: 'calendar-search',\n                  label: t('findStay'),\n                }\n              : variant3\n              ? {\n                  namedIcon: 'calendar-search',\n                  label: t('yourStays'),\n                }\n              : {\n                  namedIcon: 'calendar',\n                  label: t('findStay'),\n                })}\n          />\n        ) : null}\n\n        {userLinks?.findStayLink && !shouldSuppressFindStay && isGlowVariant ? (\n          <NavItemWithLinkGlow\n            onClick={() => {\n              sendInteractionReward();\n              sendReward('find-stay-click');\n              trackNavClick('gh_findstay');\n            }}\n            url={userLinks?.findStayLink.url}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n            showNewWindowIcon={false}\n            theme={theme}\n            section=\"user\"\n            isWide\n            namedIcon=\"calendar\"\n            label={t('findStay')}\n          />\n        ) : null}\n\n        {user ? (\n          <Popup>\n            <NavItemWithPopup\n              section=\"user\"\n              theme={theme}\n              popupButtonRef={userButtonLinkRef}\n              onClick={() => {\n                trackNavClick('gh_membername');\n                sendReward('profile-name-click');\n              }}\n              label={t('greetings', { username: user.name })}\n              icon=\"user-circle\"\n            >\n              <UserPopupContents\n                user={user}\n                userLinks={userLinks}\n                shouldOpenAccountLinksInNewWindow={shouldOpenAccountLinksInNewWindow}\n                shouldSuppressHonorsAccountLinks={shouldSuppressHonorsAccountLinks}\n                onSignOut={onSignOut}\n              />\n            </NavItemWithPopup>\n          </Popup>\n        ) : (userLinks?.signInLink || userLinks?.signUpLink || SignUpComponent) &&\n          !shouldSuppressJoinAndSignIn ? (\n          <>\n            {userLinks?.signUpLink || SignUpComponent ? (\n              SignUpComponent ? (\n                <SignUpComponent\n                  loggedInButtonRef={userButtonLinkRef}\n                  className=\"nav-item-text mx-1\"\n                >\n                  {t('signUp')}\n                </SignUpComponent>\n              ) : userLinks?.signUpLink ? (\n                isGlowVariant ? (\n                  <NavItemWithLinkGlow\n                    section=\"user\"\n                    {...userLinks.signUpLink}\n                    underline={false}\n                    showNewWindowIcon={false}\n                    label={t('signUp')}\n                    theme={theme}\n                    onClick={() => {\n                      sendInteractionReward();\n                      sendReward('nav-join-click');\n                      trackNavClick('gh_join_signin');\n                    }}\n                  />\n                ) : (\n                  <NavItemWithLink\n                    section=\"user\"\n                    {...userLinks.signUpLink}\n                    underline={false}\n                    showNewWindowIcon={false}\n                    label={t('signUp')}\n                    theme={theme}\n                    onClick={() => {\n                      sendInteractionReward();\n                      sendReward('nav-join-click');\n                      trackNavClick('gh_join_signin');\n                    }}\n                  />\n                )\n              ) : null\n            ) : null}\n\n            {isGlowVariant ? <div className=\"w-4\" /> : null}\n\n            {(userLinks?.signUpLink || userLinks?.signUpComponent) &&\n            userLinks?.signInLink &&\n            !isGlowVariant ? (\n              <div\n                aria-hidden={true}\n                className=\"group nav-list-divider-container flex h-full items-center pt-1 text-sm\"\n              >\n                <div className={isDark ? 'nav-list-divider-dark' : 'nav-list-divider'} />\n              </div>\n            ) : null}\n\n            {userLinks?.signInLink && isDefaultVariant ? (\n              <NavItemWithModal\n                section=\"user\"\n                theme={theme}\n                onLoginAttempt={defaultOptions.onLoginAttempt}\n                title={defaultOptions.title}\n                onClick={() => {\n                  trackNavClick('gh_join_signin');\n                  sendReward('nav-sign-in-click');\n                }}\n                buttonIcon=\"user-circle\"\n                buttonLabel={t('osc-login:signIn')}\n              >\n                <LoginIFrame data-e2e=\"loginIframe\" {...defaultOptions} {...loginOptions} />\n              </NavItemWithModal>\n            ) : null}\n\n            {userLinks?.signInLink && isGlowVariant ? (\n              <NavItemWithModalAndGlow\n                section=\"user\"\n                theme={theme}\n                onLoginAttempt={defaultOptions.onLoginAttempt}\n                title={defaultOptions.title}\n                onClick={() => {\n                  trackNavClick('gh_join_signin');\n                  sendReward('nav-sign-in-click');\n                }}\n                buttonIcon=\"user-circle\"\n                buttonLabel={t('osc-login:signIn')}\n              >\n                <LoginIFrame data-e2e=\"loginIframe\" {...defaultOptions} {...loginOptions} />\n              </NavItemWithModalAndGlow>\n            ) : null}\n            {userLinks?.signInLink && isSpeechBubble ? (\n              <li className=\"nav-list-item flex h-full items-center px-1 pt-1 text-sm\">\n                <NavItemWithSpeechBubble\n                  {...defaultOptions}\n                  variant={variant}\n                  buttonClassName=\"flex h-full items-center whitespace-nowrap px-1 text-sm\"\n                  onClick={() => {\n                    trackNavClick('gh_join_signin');\n                  }}\n                  {...loginOptions}\n                >\n                  <NavItemVisual\n                    label={t('osc-login:signIn')}\n                    icon=\"user-circle\"\n                    theme={theme}\n                    section=\"user\"\n                  />\n                </NavItemWithSpeechBubble>\n              </li>\n            ) : null}\n          </>\n        ) : null}\n      </ul>\n    </nav>\n  );\n}\n\ntype MainNavProps = Required<Pick<MegaMenuProps, 'mainNavLinks'>> & {\n  theme?: Exclude<CmsBrandComponentTheme, 'light'>;\n};\n\nfunction MainNav({ mainNavLinks, theme }: MainNavProps) {\n  const { locale = 'en' } = useRouter();\n\n  return (\n    <div className=\"flex min-h-[4.5rem] items-center\">\n      <div className=\"size-full overflow-x-visible\">\n        <ul className=\"flex h-full items-center rtl:space-x-reverse\">\n          {mainNavLinks.map(({ label, subMenu, link, onClick }) => {\n            if (!subMenu?.length && link?.url) {\n              return (\n                <NavItemWithLink\n                  {...link}\n                  url={replaceLang(link?.url, locale)}\n                  section=\"navigation\"\n                  label={label}\n                  isWide\n                  key={label}\n                  theme={theme}\n                  onClick={(event) => {\n                    sendInteractionReward();\n                    trackNavClickBasedOnLabel(label);\n                    onClick?.();\n                    link?.onClick?.(event);\n                  }}\n                />\n              );\n            }\n            if (subMenu?.length) {\n              return (\n                <Popup key={label}>\n                  <NavItemWithPopup\n                    section=\"navigation\"\n                    label={label}\n                    indicator=\"arrowhead-small-up\"\n                    rotateOnOpen\n                    theme={theme}\n                    onClick={() => {\n                      trackNavClickBasedOnLabel(label);\n                    }}\n                    experimentationConfiguration={link?.experimentationConfiguration}\n                  >\n                    <NavigationPopupContents subMenu={subMenu} label={label} />\n                  </NavItemWithPopup>\n                </Popup>\n              );\n            }\n            return null;\n          })}\n        </ul>\n      </div>\n    </div>\n  );\n}\n\nexport default MegaMenu;\n","import { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport type { TDrawerItem, TDrawerList } from '../types';\nimport { Link } from '@dx-ui/osc-link';\nimport Icon from '@dx-ui/osc-icon';\nimport { trackNavClickBasedOnLabel } from '../header.utilities';\nimport cx from 'classnames';\nimport { useRouter } from 'next/router';\nimport { replaceLang } from '@dx-ui/framework-i18n';\n\nexport const DrawerList = ({ menuItems, isOpen, onClose }: TDrawerList) => {\n  const [nextItem, setNextItem] = useState<TDrawerItem | undefined>();\n  const [nextItemIndex, setNextItemIndex] = useState<number>();\n  const [selectedItem, setSelectedItem] = useState<TDrawerItem | undefined>();\n  const [selectedItemIndex, setSelectedItemIndex] = useState<number>();\n  const backButtonRef = useRef<HTMLButtonElement>(null);\n  const [isFadingOut, setIsFadingOut] = useState(false);\n  const lastSelectedButton = useRef<HTMLButtonElement>(null);\n  const { t } = useTranslation('osc-header');\n  const { locale = 'en' } = useRouter();\n\n  useEffect(() => {\n    if (!isOpen) setSelectedItem(undefined);\n  }, [isOpen]);\n\n  const goBack = () => {\n    setIsFadingOut(true);\n    setNextItem(undefined);\n    setTimeout(() => {\n      lastSelectedButton?.current?.focus();\n    }, 350);\n  };\n\n  const focusOnBack = () => {\n    setTimeout(() => {\n      backButtonRef?.current?.focus();\n    }, 50);\n  };\n\n  const itemSelected = (menuItem: TDrawerItem, index: number) => {\n    setIsFadingOut(true);\n    setNextItem(menuItem);\n    setNextItemIndex(index);\n  };\n\n  return (\n    <div\n      className={isFadingOut ? 'animate-fadeout opacity-0' : 'animate-fadein'}\n      onAnimationEnd={() => {\n        if (isFadingOut) {\n          setIsFadingOut(false);\n          setSelectedItem(nextItem);\n          setSelectedItemIndex(nextItemIndex);\n          focusOnBack();\n        }\n      }}\n    >\n      <div className=\"relative border-b border-border px-4 py-3 brand-ey:border-b-primary-alt brand-ou:border-b-primary\">\n        <button onClick={onClose} type=\"button\" className=\"px-2\">\n          <Icon name=\"close\" className=\"m-auto\" />\n          <span className=\"text-xs font-semibold brand-ey:font-normal brand-wa:font-normal\">\n            {t('close')}\n            <span className=\"sr-only\">{t('menu')}</span>\n          </span>\n        </button>\n      </div>\n      {selectedItem ? (\n        <button\n          ref={backButtonRef}\n          onClick={goBack}\n          className={cx(\n            'nav-main-link flex h-12 w-full items-center border-s-8 border-primary bg-bg-alt pe-2 ps-4 text-left',\n            'brand-ey:border-b brand-ey:border-b-primary-alt brand-ey:bg-tertiary-alt',\n            'brand-hi-refresh:bg-bg-light',\n            'brand-lx:bg-bg-light',\n            'brand-ou:border-b brand-ou:border-b-primary brand-ou:bg-bg-light'\n          )}\n          aria-expanded=\"true\"\n          type=\"button\"\n        >\n          <Icon name=\"arrowhead-small-right\" className=\"me-3 rotate-180 rtl:rotate-0\" />\n          <span>{selectedItem.label}</span>\n        </button>\n      ) : null}\n\n      {selectedItem ? (\n        <ul>\n          {selectedItem.subMenu?.map((menuItem) =>\n            menuItem.link?.url ? (\n              <li key={menuItem.label}>\n                <Link\n                  anchorClassName=\"block nav-drawer-link brand-ey:focus:bg-tertiary-alt brand-lx:focus:bg-bg-light brand-ou:focus:bg-bg-light\"\n                  underline={false}\n                  className={cx(\n                    'flex h-12 items-center border-b border-border ps-4',\n                    'brand-ey:border-b-primary-alt brand-ey:hover:bg-tertiary-alt',\n                    'brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n                    'brand-lx:hover:bg-bg-light',\n                    'brand-ou:border-b-primary brand-ou:hover:bg-bg-light'\n                  )}\n                  url={replaceLang(menuItem.link.url, locale)}\n                  isNewWindow={menuItem.link.isNewWindow}\n                  onClick={(event) => {\n                    trackNavClickBasedOnLabel(menuItem.label, selectedItem.label);\n                    menuItem.onClick?.();\n                    menuItem.link?.onClick?.(event);\n                  }}\n                  data-conductrics-goal={menuItem.link.experimentationConfiguration?.goal}\n                  data-conductrics-value={menuItem.link.experimentationConfiguration?.value}\n                >\n                  {menuItem.label}\n                </Link>\n              </li>\n            ) : null\n          )}\n        </ul>\n      ) : (\n        // If no submenu is currently selected, show main set of menu items\n        <ul>\n          {menuItems.map((menuItem, index) => {\n            if (menuItem?.subMenu?.length) {\n              return (\n                <li key={menuItem.label}>\n                  <button\n                    ref={selectedItemIndex === index ? lastSelectedButton : null}\n                    onClick={() => {\n                      itemSelected(menuItem, index);\n                      trackNavClickBasedOnLabel(menuItem.label);\n                    }}\n                    className={cx(\n                      'nav-main-link flex h-12 w-full animate-fadein items-center justify-between border-b border-border ps-4 text-left',\n                      'brand-ey:border-b-primary-alt brand-ey:hover:bg-tertiary-alt brand-ey:focus:bg-tertiary-alt',\n                      'brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n                      'brand-lx:hover:bg-bg-light brand-lx:focus:bg-bg-light',\n                      'brand-ou:border-b-primary brand-ou:hover:bg-bg-light brand-ou:focus:bg-bg-light'\n                    )}\n                    aria-expanded=\"false\"\n                    type=\"button\"\n                    data-conductrics-goal={menuItem.link?.experimentationConfiguration?.goal}\n                    data-conductrics-value={menuItem.link?.experimentationConfiguration?.value}\n                  >\n                    <span>{menuItem.label}</span>\n                    <Icon name=\"arrowhead-small-right\" className=\"me-3 ms-auto rtl:rotate-180\" />\n                  </button>\n                </li>\n              );\n            } else if (menuItem.link?.url) {\n              return (\n                <li key={menuItem.label}>\n                  <Link\n                    anchorClassName=\"block brand-ey:focus:bg-tertiary-alt brand-ou:focus:bg-bg-light\"\n                    underline={false}\n                    className={cx(\n                      'nav-main-link flex h-12 items-center border-b border-border ps-4',\n                      'brand-ey:border-b-primary-alt brand-ey:hover:bg-tertiary-alt',\n                      'brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n                      'brand-ou:border-b-primary brand-ou:hover:bg-bg-light'\n                    )}\n                    url={replaceLang(menuItem.link.url, locale)}\n                    isNewWindow={menuItem.link.isNewWindow}\n                    onClick={(event) => {\n                      trackNavClickBasedOnLabel(menuItem.label);\n                      menuItem.onClick?.();\n                      menuItem.link?.onClick?.(event);\n                    }}\n                    data-conductrics-goal={menuItem.link.experimentationConfiguration?.goal}\n                    data-conductrics-value={menuItem.link.experimentationConfiguration?.value}\n                  >\n                    {menuItem.label}\n                  </Link>\n                </li>\n              );\n            }\n            return null;\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import { getBaseNavLinksFromEnv } from '../header.utilities';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport type { UserLinks } from '../types';\nimport { useRouter } from 'next/router';\n\nexport const useActiveUserLinks = (): UserLinks => {\n  const { guestInfo, isAuthenticated } = useAuth();\n  const { locale, asPath } = useRouter();\n\n  const navLinks = getBaseNavLinksFromEnv(locale || 'en', isAuthenticated);\n\n  const isB2BMember = guestInfo?.hhonors?.isB2BMember;\n  const isHGVMax = Boolean(guestInfo?.hhonors?.isOwnerHGVNew) || asPath.includes('hgv-max');\n\n  const isTMTPTeamMember =\n    guestInfo?.hhonors?.isOwner ||\n    guestInfo?.hhonors?.isTeamMember ||\n    guestInfo?.hhonors?.isOwnerHGV;\n\n  const isTMTPNonTeamMember =\n    guestInfo?.hhonors?.isTeamMemberSpouse ||\n    guestInfo?.hhonors?.isFamilyAndFriends ||\n    guestInfo?.hhonors?.isLongTenure10 ||\n    guestInfo?.hhonors?.isLongTenure20;\n\n  return {\n    ...navLinks,\n    smbMemberLink: isB2BMember ? navLinks?.smbMemberLink : undefined,\n    friendsAndFamilyLink: isTMTPTeamMember ? navLinks?.friendsAndFamilyLink : undefined,\n    goHiltonLink: isTMTPNonTeamMember || isTMTPTeamMember ? navLinks?.goHiltonLink : undefined,\n    hgvMaxLink: isHGVMax ? navLinks?.hgvMaxLink : undefined,\n  };\n};\n","import { useRef, useState } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport { Login } from '@dx-ui/osc-login';\nimport { useTranslation } from 'next-i18next';\nimport { Link } from '@dx-ui/osc-link';\nimport { DrawerPanel } from '@dx-ui/osc-drawer';\nimport cx from 'classnames';\nimport MegaMenu from './mega-menu';\nimport { DrawerList } from './nav-drawer-list';\nimport Icon from '@dx-ui/osc-icon';\nimport { getNHCBP5758MVTVariant, sendInteractionReward, trackNavClick } from '../header.utilities';\nimport { LanguageSelector } from '@dx-ui/osc-language-selector';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport { HeaderLogoLink } from '../header.logo';\nimport type { TBrandHeaderBody } from '../types';\nimport { useRouter } from 'next/router';\nimport { getLocaleFormattedNumber } from '@dx-ui/framework-i18n';\nimport { useActiveUserLinks } from '../hooks/useActiveUserLinks';\nimport { NavItemWithSpeechBubble } from './mvtest-nhcbp-5758/nav-item-speech-bubble';\n\nexport const BrandHeaderBody = ({\n  menuItems,\n  brand,\n  loginOptions,\n  user,\n  SignUpComponent,\n  wrapperId,\n  onSignInAttempt,\n  languageSelectorOptions,\n  onSignOut,\n  isFluid,\n  suppressLogo,\n  shouldSuppressFindStay,\n  shouldSuppressJoinAndSignIn,\n  shouldOpenAccountLinksInNewWindow,\n  shouldSuppressHonorsAccountLinks,\n  heading,\n  theme,\n  mvts,\n}: TBrandHeaderBody) => {\n  const [isMenuOpen, setIsMenuOpen] = useState(false);\n  const [isAccountOpen, setIsAccountOpen] = useState(false);\n  const { t } = useTranslation(['osc-header', 'osc-login']);\n  const userLoggedInButtonRef = useRef<HTMLButtonElement>(null);\n\n  const activeUserLinks = useActiveUserLinks();\n\n  const closeMenus = () => {\n    setIsMenuOpen(false);\n    setIsAccountOpen(false);\n    document.removeEventListener('keydown', handleKeyDown);\n  };\n\n  const handleKeyDown = (e: KeyboardEvent) => {\n    if (e.key === 'Escape') {\n      closeMenus();\n    }\n  };\n\n  const addEscapeKeyListener = () => {\n    document.addEventListener('keydown', handleKeyDown);\n  };\n\n  const removeEscapeKeyListener = () => {\n    document.removeEventListener('keydown', handleKeyDown);\n  };\n\n  const menuPressed = () => {\n    sendInteractionReward();\n    if (isAccountOpen) setIsAccountOpen(false);\n    if (isMenuOpen) {\n      setIsMenuOpen(false);\n      removeEscapeKeyListener();\n    } else {\n      addEscapeKeyListener();\n      setIsMenuOpen(true);\n    }\n  };\n\n  const accountPressed = () => {\n    sendInteractionReward();\n    sendReward('profile-name-click');\n    setIsMenuOpen(false);\n    if (isAccountOpen) {\n      setIsAccountOpen(false);\n      removeEscapeKeyListener();\n    } else {\n      setIsAccountOpen(true);\n      addEscapeKeyListener();\n    }\n  };\n\n  const closeMainMenu = () => {\n    setIsMenuOpen(false);\n  };\n\n  const closeAccount = () => {\n    setIsAccountOpen(false);\n  };\n\n  const isDark = theme === 'dark';\n\n  const joinButtonClasses = cx(\n    'm-auto inline-block border-e border-border pe-2 text-xs font-semibold brand-ey:font-normal brand-lx:border-primary brand-wa:font-normal',\n    {\n      'text-text-inverse': isDark,\n    }\n  );\n\n  const { isGlowVariant, isSpeechBubble, variant } = getNHCBP5758MVTVariant(mvts);\n\n  return (\n    <>\n      <nav\n        id=\"drawer-nav\"\n        className={cx('z-50 bg-bg lg:hidden', {\n          'bg-bg brand-ou:bg-secondary': !theme,\n          'bg-bg-dark': isDark,\n        })}\n      >\n        <div\n          className={cx('flex content-center items-center p-2 md:px-8 lg:px-10', {\n            'sm:h-16': !!languageSelectorOptions,\n            'h-min px-2 py-1': !languageSelectorOptions,\n          })}\n        >\n          {menuItems && menuItems.length > 0 ? (\n            <button\n              className={cx('me-2 w-12', {\n                'self-end sm:self-center': !!languageSelectorOptions,\n              })}\n              onClick={menuPressed}\n              type=\"button\"\n              aria-expanded={isMenuOpen}\n              id=\"menu-open-button\"\n            >\n              <Icon\n                name=\"menu\"\n                size=\"md\"\n                className={cx('m-auto block', {\n                  'text-text-inverse': isDark,\n                })}\n              />\n              <span\n                className={cx('text-xs font-semibold brand-ey:font-normal brand-wa:font-normal', {\n                  'text-text-inverse': isDark,\n                })}\n              >\n                <span className=\"sr-only\">{t('open')}</span>\n                {t('menu')}\n              </span>\n            </button>\n          ) : null}\n          {!suppressLogo ? (\n            <HeaderLogoLink\n              theme={theme}\n              brand={brand}\n              className={cx({\n                'self-end sm:self-center': !!languageSelectorOptions,\n              })}\n              heading={heading}\n            />\n          ) : null}\n          <div className=\"ms-auto flex flex-col items-center gap-x-2 sm:flex-row\">\n            {languageSelectorOptions ? (\n              <div className=\"pb-5 sm:pb-0\">\n                <LanguageSelector theme={theme} {...languageSelectorOptions} />\n              </div>\n            ) : null}\n            <div className=\"ms-auto flex items-center gap-x-2\">\n              {activeUserLinks?.findStayLink && !shouldSuppressFindStay ? (\n                <Link\n                  className=\"mb-1\"\n                  anchorClassName=\"text-center min-w-16 w-min align-middle\"\n                  underline={false}\n                  url={activeUserLinks?.findStayLink.url}\n                  isNewWindow={shouldOpenAccountLinksInNewWindow}\n                  showNewWindowIcon={false}\n                  onClick={() => {\n                    sendInteractionReward();\n                    sendReward('find-stay-click');\n                    trackNavClick('gh_findstay');\n                  }}\n                >\n                  {isGlowVariant && !user ? (\n                    <span className=\"inline-block text-xs font-semibold hover:text-primary hover:underline brand-ey:font-normal brand-wa:font-normal\">\n                      {t('findStay')}\n                    </span>\n                  ) : (\n                    <>\n                      <Icon\n                        name=\"calendar\"\n                        size=\"md\"\n                        className={cx('m-auto block', {\n                          'nav-icon': !theme,\n                          'text-text-inverse': isDark,\n                        })}\n                      />\n                      <span\n                        className={cx(\n                          'inline-block text-xs font-semibold brand-ey:font-normal brand-wa:font-normal',\n                          {\n                            'text-text-inverse': isDark,\n                          }\n                        )}\n                      >\n                        {t('findStay')}\n                      </span>\n                    </>\n                  )}\n                </Link>\n              ) : null}\n              {isGlowVariant && !user ? <div className=\"h-7 w-px bg-border\" /> : null}\n              {user ? (\n                <button\n                  className=\"items-center\"\n                  onClick={() => {\n                    trackNavClick('gh_membername');\n                    accountPressed();\n                  }}\n                  aria-expanded={isAccountOpen}\n                  type=\"button\"\n                >\n                  <Icon\n                    name=\"user-circle\"\n                    size=\"md\"\n                    className={cx('m-auto block', {\n                      'nav-icon': !theme,\n                      'nav-icon-dark': isDark,\n                    })}\n                  />\n                  <span\n                    className={cx(\n                      'break-all text-xs font-semibold brand-ey:font-normal brand-wa:font-normal',\n                      {\n                        'text-text-inverse': isDark,\n                      }\n                    )}\n                  >\n                    {t('greetings', { username: user.name })}\n                  </span>\n                </button>\n              ) : (activeUserLinks?.signInLink || activeUserLinks?.signUpLink) &&\n                !shouldSuppressJoinAndSignIn ? (\n                <div className={cx('flex flex-col', { 'pt-7': !isGlowVariant })}>\n                  <div className=\"flex items-center\">\n                    {activeUserLinks?.signUpLink && !SignUpComponent ? (\n                      <div className={cx('h-fit', { 'ms-1': isGlowVariant })}>\n                        <Link\n                          {...activeUserLinks.signUpLink}\n                          showNewWindowIcon={false}\n                          underline={false}\n                          className={\n                            isGlowVariant\n                              ? 'inline-block pe-2 text-xs font-semibold hover:text-primary hover:underline'\n                              : joinButtonClasses\n                          }\n                          onClick={() => {\n                            sendInteractionReward();\n                            sendReward('nav-join-click');\n                            trackNavClick('gh_join_signin');\n                          }}\n                        >\n                          {t('signUp')}\n                        </Link>\n                      </div>\n                    ) : null}\n                    {SignUpComponent ? (\n                      <div className=\"h-fit\">\n                        <SignUpComponent\n                          className={joinButtonClasses}\n                          loggedInButtonRef={userLoggedInButtonRef}\n                        >\n                          {t('signUp')}\n                        </SignUpComponent>\n                      </div>\n                    ) : null}\n                    {activeUserLinks.signInLink && isSpeechBubble ? (\n                      <div\n                        className=\"ps-2\"\n                        onClick={() => {\n                          sendInteractionReward();\n                          trackNavClick('gh_join_signin');\n                        }}\n                      >\n                        <NavItemWithSpeechBubble\n                          frameSrc={activeUserLinks?.signInLink?.url || ''}\n                          title={t('osc-login:signIn')}\n                          onLoginAttempt={onSignInAttempt}\n                          variant={variant}\n                          buttonClassName={cx(\n                            'text-xs font-semibold brand-ey:font-normal brand-wa:!font-normal',\n                            {\n                              'text-text-inverse': isDark,\n                            }\n                          )}\n                          onDialogOpen={() => {\n                            setIsMenuOpen(false);\n                            setIsAccountOpen(false);\n                          }}\n                          {...loginOptions}\n                        >\n                          <Icon\n                            name=\"user-circle\"\n                            size=\"md\"\n                            className={cx('-ms-[22px] -mt-7 block', {\n                              'nav-icon': !theme,\n                              'nav-icon-dark': isDark,\n                            })}\n                          />\n                          <span>{t('osc-login:signIn')}</span>\n                        </NavItemWithSpeechBubble>\n                      </div>\n                    ) : null}\n                    {activeUserLinks.signInLink && !isSpeechBubble ? (\n                      <div\n                        className=\"ps-2\"\n                        onClick={() => {\n                          sendInteractionReward();\n                          trackNavClick('gh_join_signin');\n                        }}\n                      >\n                        {!isGlowVariant ? (\n                          <Icon\n                            name=\"user-circle\"\n                            size=\"md\"\n                            className={cx('-ms-[22px] -mt-7 block', {\n                              'nav-icon': !theme,\n                              'nav-icon-dark': isDark,\n                            })}\n                          />\n                        ) : null}\n                        <Login\n                          frameSrc={activeUserLinks?.signInLink?.url || ''}\n                          title={t('osc-login:signIn')}\n                          onLoginAttempt={onSignInAttempt}\n                          hideIcon={true}\n                          onOpen={() => {\n                            setIsMenuOpen(false);\n                            setIsAccountOpen(false);\n                          }}\n                          buttonClassName={\n                            isGlowVariant\n                              ? 'btn btn-primary-outline text-xs font-semibold transition-shadow duration-300 ease-in-out shadow-[0_0_15px_rgb(0,144,147)] hover:shadow-none'\n                              : cx(\n                                  'text-xs font-semibold brand-ey:font-normal brand-wa:!font-normal',\n                                  {\n                                    'text-text-inverse': isDark,\n                                  }\n                                )\n                          }\n                          {...loginOptions}\n                        />\n                      </div>\n                    ) : null}\n                  </div>\n                </div>\n              ) : null}\n            </div>\n          </div>\n        </div>\n        {(isMenuOpen || isAccountOpen) && (\n          <div\n            className=\"absolute top-0 z-50 h-screen w-full animate-fadein overflow-hidden bg-overlay backdrop-blur-[2px]\"\n            data-testid=\"backgroundOverlay\"\n            onClick={closeMenus}\n          />\n        )}\n        {menuItems && menuItems.length > 0 ? (\n          <div\n            data-testid=\"menuWindow\"\n            className={cx({ visible: isMenuOpen, invisible: !isMenuOpen })}\n          >\n            <DrawerPanel\n              isOpen={isMenuOpen}\n              alignment=\"left\"\n              appWrapperId={wrapperId}\n              interactiveElementWrapperId=\"drawer-nav\"\n              returnFocus={() => {\n                document.getElementById('menu-open-button')?.focus();\n                return false;\n              }}\n            >\n              <DrawerList isOpen={isMenuOpen} menuItems={menuItems} onClose={closeMainMenu} />\n            </DrawerPanel>\n          </div>\n        ) : null}\n        <DrawerPanel\n          isOpen={isAccountOpen}\n          alignment=\"right\"\n          appWrapperId={wrapperId}\n          interactiveElementWrapperId=\"drawer-nav\"\n        >\n          {user && isAccountOpen ? (\n            <AccountSection\n              user={user}\n              userLinks={activeUserLinks}\n              onClose={closeAccount}\n              onSignOut={onSignOut}\n              shouldSuppressHonorsAccountLinks={shouldSuppressHonorsAccountLinks}\n              shouldOpenAccountLinksInNewWindow={shouldOpenAccountLinksInNewWindow}\n            />\n          ) : null}\n        </DrawerPanel>\n      </nav>\n\n      <nav className=\"hidden lg:block\">\n        <MegaMenu\n          isFluid={isFluid}\n          suppressLogo={suppressLogo}\n          shouldSuppressHonorsAccountLinks={shouldSuppressHonorsAccountLinks}\n          shouldSuppressFindStay={shouldSuppressFindStay}\n          shouldSuppressJoinAndSignIn={shouldSuppressJoinAndSignIn}\n          shouldOpenAccountLinksInNewWindow={shouldOpenAccountLinksInNewWindow}\n          brand={brand}\n          onSignInAttempt={onSignInAttempt}\n          onSignOut={onSignOut}\n          user={user}\n          userLinks={activeUserLinks}\n          mainNavLinks={menuItems}\n          languageSelectorOptions={languageSelectorOptions}\n          loginOptions={loginOptions}\n          heading={heading}\n          theme={theme}\n          mvts={mvts}\n          SignUpComponent={SignUpComponent}\n        />\n      </nav>\n    </>\n  );\n};\n\nexport type TAccountSection = Pick<\n  TBrandHeaderBody,\n  | 'userLinks'\n  | 'onSignOut'\n  | 'shouldSuppressHonorsAccountLinks'\n  | 'shouldOpenAccountLinksInNewWindow'\n> &\n  Required<Pick<TBrandHeaderBody, 'user'>> & {\n    onClose: () => void;\n  };\n\nconst AccountUserLink = ({\n  url,\n  onClick,\n  children,\n  isNewWindow,\n}: {\n  url: string;\n  onClick: () => void;\n  children: React.ReactNode;\n  isNewWindow?: boolean;\n}) => {\n  return (\n    <Link\n      anchorClassName={cx(\n        'block border-border px-6 py-2',\n        'brand-ey:border-primary-alt brand-ey:hover:bg-tertiary-alt brand-ey:focus:bg-tertiary-alt',\n        'brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n        'brand-lx:hover:bg-bg-light brand-lx:focus:bg-bg-light',\n        'brand-ou:border-primary brand-ou:hover:bg-bg-light brand-ou:focus:bg-bg-light'\n      )}\n      className=\"font-bold text-text brand-ey:font-normal brand-gu:font-mono brand-gu:font-normal brand-hi-refresh:font-normal brand-nd:font-mono brand-nd:font-medium\"\n      underline={false}\n      url={url}\n      onClick={onClick}\n      isNewWindow={isNewWindow}\n    >\n      {children}\n    </Link>\n  );\n};\n\nconst AccountSection = ({\n  user,\n  userLinks,\n  onClose,\n  onSignOut,\n  shouldSuppressHonorsAccountLinks,\n  shouldOpenAccountLinksInNewWindow,\n}: TAccountSection) => {\n  const { locale = 'en' } = useRouter();\n\n  const { t } = useTranslation('osc-header');\n  const formattedHonorsPointsTotal = getLocaleFormattedNumber(user.honorsPoints, { locale });\n\n  return (\n    <FocusLock returnFocus>\n      <div className=\"relative mb-2 border-b border-border px-4 py-3 brand-ey:border-primary-alt brand-ou:border-primary\">\n        <button onClick={onClose} type=\"button\" className=\"px-2\">\n          <Icon name=\"close\" size=\"md\" className=\"m-auto\" />\n          <span className=\"text-xs font-semibold brand-ey:font-normal brand-wa:font-normal\">\n            {t('close')}\n            <span className=\"sr-only\">{t('closeAccountDetails')}</span>\n          </span>\n        </button>\n      </div>\n      <div className=\"flex\">\n        <div className=\"px-4\">\n          <div className=\"flex size-12 items-center justify-center rounded-full bg-hilton-alt p-2\">\n            <Icon name=\"user\" size=\"xl\" />\n          </div>\n        </div>\n        <div className=\"font-bold brand-ey:font-normal brand-gu:font-mono brand-gu:font-normal brand-hi-refresh:font-normal brand-nd:font-mono brand-nd:font-medium\">\n          <span>{t('greetings', { username: user.name })}</span>\n          <div className=\"capitalize\">\n            <span className=\"underline\">{user.honorsTier}</span> {t('status')}\n          </div>\n          <div>{t('honorsPointsTotal', { honorsPointsTotal: formattedHonorsPointsTotal })}</div>\n          {user.hhonorsNumber ? (\n            <div>{t('hiltonHonorsNumber', { hhonorsNumber: user.hhonorsNumber })}</div>\n          ) : null}\n        </div>\n      </div>\n      <div className=\"mt-4 divide-y divide-solid border-y border-border brand-ey:border-primary-alt brand-ou:border-primary\">\n        {userLinks?.accountLink?.url ? (\n          <AccountUserLink\n            url={userLinks.accountLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hiltonhonorshome');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('hiltonHonorsHome')}\n          </AccountUserLink>\n        ) : null}\n        {userLinks?.honorsProfileLink?.url ? (\n          <AccountUserLink\n            url={userLinks.honorsProfileLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hiltonhonorsprofile');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('profile')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.honorsActivityLink?.url && !shouldSuppressHonorsAccountLinks ? (\n          <AccountUserLink\n            url={userLinks.honorsActivityLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hiltonhonorsactivity');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('activity')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.honorsPointsLink?.url && !shouldSuppressHonorsAccountLinks ? (\n          <AccountUserLink\n            url={userLinks.honorsPointsLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hiltonhonorspoints');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('pointsLabel')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.goHiltonLink?.url ? (\n          <AccountUserLink\n            url={userLinks.goHiltonLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_gohiltonprogramdetails');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('goHiltonProgramDetails')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.friendsAndFamilyLink?.url ? (\n          <AccountUserLink\n            url={userLinks.friendsAndFamilyLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_managefriendsandfamily');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('manageFriendsAndFamily')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.hgvMaxLink?.url ? (\n          <AccountUserLink\n            url={userLinks.hgvMaxLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hgvmaxratedetails');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('hgvMaxRateDetails')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.smbMemberLink?.url ? (\n          <AccountUserLink\n            url={userLinks.smbMemberLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_managehiltonforbusiness');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('manageHiltonForBusiness')}\n          </AccountUserLink>\n        ) : null}\n\n        <button\n          className={cx(\n            'block w-full border-border px-6 py-2 text-left font-bold text-text rtl:text-start',\n            'brand-ey:border-primary-alt brand-ey:font-normal brand-ey:hover:bg-tertiary-alt brand-ey:focus:bg-tertiary-alt',\n            'brand-gu:font-mono brand-gu:font-normal',\n            'brand-hi-refresh:font-normal brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n            'brand-lx:hover:bg-bg-light brand-lx:focus:bg-bg-light',\n            'brand-nd:font-mono brand-nd:font-medium',\n            'brand-ou:border-primary brand-ou:hover:bg-bg-light brand-ou:focus:bg-bg-light'\n          )}\n          onClick={async () => {\n            trackNavClick('gh_membername_signout');\n            onClose();\n            await onSignOut();\n          }}\n          type=\"button\"\n        >\n          {t('signOut')}\n        </button>\n      </div>\n    </FocusLock>\n  );\n};\n","import type * as Types from './types';\n\nimport {\n  useQuery,\n  useMutation,\n  type QueryClient,\n  type FetchQueryOptions,\n  type UseQueryOptions,\n  type UseMutationOptions,\n} from '@tanstack/react-query';\nimport type { DXError } from '@dx-ui/types-graphql';\n\nexport const Countries_AddressOptionsDocument = {\n  operationName: 'countries_AddressOptions',\n  operationString: `query countries_AddressOptions($language: String!, $code: String, $type: AddressOptionsAddressType) {\n  countries(language: $language, filter: {code: $code}) {\n    code\n    name\n    addressOptions(type: $type) {\n      name\n      label\n      maxLength\n      required\n    }\n    states(sort: {by: name, order: asc}) {\n      value: code\n      name\n    }\n    enrollmentConfig {\n      isPostalCodeLookupEnabled\n      isShortenedEnrollmentEnabled\n      addressOptions {\n        disabled\n        label\n        maxLength\n        name\n        readOnly\n        required\n        selected\n        type\n        value\n      }\n    }\n  }\n}`,\n  originalOpName: 'countries_AddressOptions',\n};\nexport function useCountries_AddressOptionsQuery<\n  TData = Types.Countries_AddressOptionsQuery,\n  TError = DXError\n>(\n  variables: Types.Countries_AddressOptionsQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Countries_AddressOptionsQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Countries_AddressOptionsQuery, TError, TData>({\n    queryKey: [Countries_AddressOptionsDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideCountries_AddressOptionsQuery(\n  queryClient: QueryClient,\n  variables: Types.Countries_AddressOptionsQueryVariables,\n  options?: FetchQueryOptions<Types.Countries_AddressOptionsQuery>\n) {\n  return queryClient.fetchQuery<Types.Countries_AddressOptionsQuery>({\n    queryKey: [Countries_AddressOptionsDocument, variables],\n    ...options,\n  });\n}\n\nexport const GeocodeDocument = {\n  operationName: 'geocode',\n  operationString: `query geocode($postalCode: String, $language: String!) {\n  geocode(language: $language, postalCode: $postalCode) {\n    match {\n      address {\n        city\n        state\n      }\n    }\n  }\n}`,\n  originalOpName: 'geocode',\n};\nexport function useGeocodeQuery<TData = Types.GeocodeQuery, TError = DXError>(\n  variables: Types.GeocodeQueryVariables,\n  options?: Omit<UseQueryOptions<Types.GeocodeQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.GeocodeQuery, TError, TData>({\n    queryKey: [GeocodeDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGeocodeQuery(\n  queryClient: QueryClient,\n  variables: Types.GeocodeQueryVariables,\n  options?: FetchQueryOptions<Types.GeocodeQuery>\n) {\n  return queryClient.fetchQuery<Types.GeocodeQuery>({\n    queryKey: [GeocodeDocument, variables],\n    ...options,\n  });\n}\n\nexport const FeatureTogglesDocument = {\n  operationName: 'featureToggles',\n  operationString: `query featureToggles($names: [String!]!) {\n  featureToggles(names: $names) {\n    enabled\n    name\n  }\n}`,\n  originalOpName: 'featureToggles',\n};\nexport function useFeatureTogglesQuery<TData = Types.FeatureTogglesQuery, TError = DXError>(\n  variables: Types.FeatureTogglesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.FeatureTogglesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.FeatureTogglesQuery, TError, TData>({\n    queryKey: [FeatureTogglesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideFeatureTogglesQuery(\n  queryClient: QueryClient,\n  variables: Types.FeatureTogglesQueryVariables,\n  options?: FetchQueryOptions<Types.FeatureTogglesQuery>\n) {\n  return queryClient.fetchQuery<Types.FeatureTogglesQuery>({\n    queryKey: [FeatureTogglesDocument, variables],\n    ...options,\n  });\n}\n\nexport const Brand_CountriesDocument = {\n  operationName: 'brand_countries',\n  operationString: `query brand_countries($after: String, $containsHotels: Boolean, $first: Int, $language: String!, $countryFilter: CountryFilterInput, $regionFilter: CountryStateFilterInput, $cityFilter: CountryCityFilterInput, $getStates: Boolean = false, $getCities: Boolean = false, $getMarketing: Boolean = false, $getCCSMarketing: Boolean = false) {\n  countries(\n    after: $after\n    containsHotels: $containsHotels\n    filter: $countryFilter\n    first: $first\n    language: $language\n    sort: {by: name}\n  ) {\n    code\n    callingCode\n    dataSubjectRights\n    marketingConsent @include(if: $getMarketing)\n    marketingOptIn @include(if: $getMarketing)\n    marketingOptInForHGV @include(if: $getMarketing)\n    marketingOptin @include(if: $getCCSMarketing) {\n      dataSubjectRights\n      marketingOptinRules {\n        category\n        optIns {\n          autoOptIn\n          _id\n          customerTextExternal\n          name\n          subscriptionCodes\n          termsAndConditionsBook\n          termsAndConditionsJoin\n        }\n      }\n    }\n    name: displayName\n    states(filter: $regionFilter) @include(if: $getStates) {\n      name\n      code\n      personalDataRequest\n      value: code\n      cities(filter: $cityFilter, sort: {by: name, order: asc}) @include(if: $getCities) {\n        name\n        value: name\n        brandCodes\n      }\n    }\n    cities(filter: $cityFilter, onlyIfNoStates: true, sort: {by: name, order: asc}) @include(if: $getCities) {\n      name\n      value: name\n      brandCodes\n    }\n  }\n}`,\n  originalOpName: 'brand_countries',\n};\nexport function useBrand_CountriesQuery<TData = Types.Brand_CountriesQuery, TError = DXError>(\n  variables: Types.Brand_CountriesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Brand_CountriesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Brand_CountriesQuery, TError, TData>({\n    queryKey: [Brand_CountriesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideBrand_CountriesQuery(\n  queryClient: QueryClient,\n  variables: Types.Brand_CountriesQueryVariables,\n  options?: FetchQueryOptions<Types.Brand_CountriesQuery>\n) {\n  return queryClient.fetchQuery<Types.Brand_CountriesQuery>({\n    queryKey: [Brand_CountriesDocument, variables],\n    ...options,\n  });\n}\n\nexport const CreateGuestDocument = {\n  operationName: 'createGuest',\n  operationString: `mutation createGuest($input: EnrollInput!, $language: String!, $recaptchaInput: RecaptchaInput) {\n  createGuest(input: $input, language: $language, recaptchaInput: $recaptchaInput) {\n    data {\n      guestId\n      hhonorsNumber\n    }\n    error {\n      code\n      context\n      message\n      notifications {\n        code\n        fields\n        message\n      }\n    }\n  }\n}`,\n  originalOpName: 'createGuest',\n};\nexport function useCreateGuestMutation<TError = DXError, TContext = unknown>(\n  options: UseMutationOptions<\n    Types.CreateGuestMutation,\n    TError,\n    [typeof CreateGuestDocument, Types.CreateGuestMutationVariables],\n    TContext\n  > = {}\n) {\n  return useMutation<\n    Types.CreateGuestMutation,\n    TError,\n    [typeof CreateGuestDocument, Types.CreateGuestMutationVariables],\n    TContext\n  >({\n    ...options,\n  });\n}\nexport const Languages_DefaultCountryCodeDocument = {\n  operationName: 'languages_defaultCountryCode',\n  operationString: `query languages_defaultCountryCode($language: String!) {\n  languages(language: $language, filter: {languageCodeOHW: $language}) {\n    defaultCountryCode\n  }\n}`,\n  originalOpName: 'languages_defaultCountryCode',\n};\nexport function useLanguages_DefaultCountryCodeQuery<\n  TData = Types.Languages_DefaultCountryCodeQuery,\n  TError = DXError\n>(\n  variables: Types.Languages_DefaultCountryCodeQueryVariables,\n  options?: Omit<\n    UseQueryOptions<Types.Languages_DefaultCountryCodeQuery, TError, TData>,\n    'queryKey'\n  >\n) {\n  return useQuery<Types.Languages_DefaultCountryCodeQuery, TError, TData>({\n    queryKey: [Languages_DefaultCountryCodeDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideLanguages_DefaultCountryCodeQuery(\n  queryClient: QueryClient,\n  variables: Types.Languages_DefaultCountryCodeQueryVariables,\n  options?: FetchQueryOptions<Types.Languages_DefaultCountryCodeQuery>\n) {\n  return queryClient.fetchQuery<Types.Languages_DefaultCountryCodeQuery>({\n    queryKey: [Languages_DefaultCountryCodeDocument, variables],\n    ...options,\n  });\n}\n","export const AutoComplete = {\n  ADDRESSLINE1: 'address-line1',\n  ADDRESSLINE2: 'address-line2',\n  CITY: 'address-level2',\n  COUNTRY: 'country',\n  CURRENTPASSWORD: 'current-password',\n  EMAIL: 'email',\n  FAMILYNAME: 'family-name',\n  GIVENNAME: 'given-name',\n  NAME: 'name',\n  NEWPASSWORD: 'new-password',\n  OFF: 'off',\n  POSTALCODE: 'postal-code',\n  STATE: 'address-level1',\n  STREETADDRESS: 'street-address',\n  TEL: 'tel',\n  TELNATIONAL: 'tel-national',\n  USERNAME: 'username',\n  CREDITCARD: 'cc-number',\n} as const;\n","import type { FeatureConfig, FeatureToggle } from '@dx-ui/gql-types';\n\nexport type FeatureTogglesQueryData = {\n  featureToggles: Pick<FeatureToggle, 'name' | 'enabled'>[];\n};\n\nexport type FeatureConfigsQueryData = FeatureTogglesQueryData & {\n  featureConfigs: Pick<FeatureConfig, 'name' | 'conditions' | 'config'>[];\n};\n\nexport function getIsFeatureToggleEnabled({\n  featureToggleData,\n  name,\n}: {\n  featureToggleData: FeatureTogglesQueryData | null | undefined;\n  name: string;\n}) {\n  return (\n    featureToggleData?.featureToggles?.find((toggle) => toggle.name === name)?.enabled || false\n  );\n}\n\nexport function getFeatureConfig<T = Record<string, unknown>>({\n  featureToggleData,\n  name,\n}: {\n  featureToggleData: FeatureConfigsQueryData | undefined;\n  name: string;\n}): T | null {\n  const toggleEnabled = getIsFeatureToggleEnabled({ featureToggleData, name });\n  const allConfigs = featureToggleData?.featureConfigs || [];\n  const searchedConfig = allConfigs.find((toggle) => toggle.name === name);\n  return toggleEnabled ? searchedConfig?.config : null;\n}\n","export const ENABLE_SHORTEN_ENROLLMENT = 'NHCGUEST-8086';\n","import { getIsFeatureToggleEnabled } from '@dx-ui/utilities-feature-toggles-configs';\nimport { useFeatureTogglesQuery } from '../queries/generated/queries';\nimport { ENABLE_SHORTEN_ENROLLMENT } from '../constants/featureToggles';\n\nexport function useShortenEnrollmentToggle() {\n  const { data } = useFeatureTogglesQuery({\n    names: [ENABLE_SHORTEN_ENROLLMENT],\n  });\n\n  return {\n    enabled: getIsFeatureToggleEnabled({\n      featureToggleData: data,\n      name: ENABLE_SHORTEN_ENROLLMENT,\n    }),\n  };\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormInput, FormSelect } from '@dx-ui/osc-form';\nimport { useCountries_AddressOptionsQuery, useGeocodeQuery } from './queries/generated/queries';\nimport type { AddressOptionsAddressType } from '@dx-ui/gql-types';\nimport { useCallback, useState, useEffect } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { AutoComplete } from './auto-complete';\nimport { useShortenEnrollmentToggle } from './hooks/use-disable-addresses-toggle';\n\nconst getAutoComplete = (name: string) => {\n  switch (name) {\n    case 'addressLine1':\n    case 'businessAddressLine1':\n      return AutoComplete.ADDRESSLINE1;\n    case 'addressLine2':\n    case 'businessAddressLine2':\n      return AutoComplete.ADDRESSLINE2;\n    case 'city':\n      return AutoComplete.CITY;\n    case 'state':\n      return AutoComplete.STATE;\n    case 'postalCode':\n      return AutoComplete.POSTALCODE;\n    default:\n      return '';\n  }\n};\n\nexport const Modes = {\n  Add: 'add',\n  Edit: 'edit',\n} as const;\n\nexport type ModesType = (typeof Modes)[keyof typeof Modes];\n\nexport function AddressFields({\n  code = 'US',\n  language = 'en',\n  type = 'nonBusiness',\n  groupName,\n  componentState = Modes.Add,\n  setLoadingGeocode,\n}: {\n  code: string;\n  groupName?: string;\n  language?: string;\n  type?: AddressOptionsAddressType;\n  componentState?: ModesType;\n  setLoadingGeocode?: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n  const [t] = useTranslation('osc-join-form-form');\n  const {\n    setError,\n    clearErrors,\n    setValue,\n    watch,\n    formState: { touchedFields },\n    register,\n    getFieldState,\n  } = useFormContext();\n\n  const [isZipInvalid, setIsZipInvalid] = useState(false);\n\n  const enableShortenEnrollmentFlowToggle = useShortenEnrollmentToggle().enabled;\n\n  const shouldHideCityAndStateFields =\n    code === 'US' && !isZipInvalid && componentState === Modes.Add;\n\n  const getFieldKey = useCallback(\n    (field: string): string => (groupName ? `${groupName}.${field}` : field),\n    [groupName]\n  );\n\n  const isPostalCodeTouched = getFieldState(getFieldKey('postalCode'))?.isTouched;\n\n  const zipCode = watch(getFieldKey('postalCode'));\n  const city = watch(getFieldKey('city'));\n  const state = watch(getFieldKey('state'));\n\n  const { data: addressFieldData } = useCountries_AddressOptionsQuery(\n    { language, code, type },\n    { enabled: !!code }\n  );\n  const states = addressFieldData?.countries?.[0]?.states || [];\n  const enrollmentConfig = addressFieldData?.countries?.[0]?.enrollmentConfig;\n  const enableShortenEnrollmentFlow =\n    enrollmentConfig?.isShortenedEnrollmentEnabled && enableShortenEnrollmentFlowToggle;\n\n  // Set 'Please select' option as default for state select element\n  useEffect(() => {\n    if (componentState === Modes.Add) {\n      if (!touchedFields[getFieldKey('state')]) {\n        setValue(getFieldKey('state'), states.length > 0 ? 'pleaseSelect' : '');\n      }\n    }\n  }, [getFieldKey, setValue, states, touchedFields, componentState]);\n\n  const {\n    data: geoLocationData,\n    isLoading,\n    error,\n  } = useGeocodeQuery(\n    {\n      language,\n      postalCode: watch(getFieldKey('postalCode')),\n    },\n    {\n      enabled:\n        !!/^(?!0{5,})\\d{5}(-\\d{4})?$/.test(zipCode) &&\n        code === 'US' &&\n        !(componentState === Modes.Edit && !isPostalCodeTouched),\n    }\n  );\n\n  useEffect(() => {\n    if (geoLocationData) {\n      if (\n        !geoLocationData?.geocode?.match?.address?.city ||\n        !geoLocationData?.geocode?.match?.address?.state\n      ) {\n        setIsZipInvalid(true);\n        setValue(getFieldKey('city'), '');\n        setValue(getFieldKey('state'), 'pleaseSelect');\n        setError(getFieldKey('postalCode'), {\n          type: 'validate',\n          message: t('address.zipCode.error_lookup'),\n        });\n      } else {\n        clearErrors(getFieldKey('postalCode'));\n        clearErrors(getFieldKey('city'));\n        setValue(getFieldKey('city'), geoLocationData?.geocode?.match?.address?.city);\n        setValue(getFieldKey('state'), geoLocationData?.geocode?.match?.address?.state);\n        setIsZipInvalid(false);\n      }\n    } else if (error) {\n      const errors = JSON.parse(JSON.stringify(error));\n      for (const error of errors.graphQLErrors) {\n        if (error?.message === 'Not Found') {\n          setIsZipInvalid(true);\n          setValue(getFieldKey('city'), '');\n          setValue(getFieldKey('state'), 'pleaseSelect');\n          setError(getFieldKey('postalCode'), {\n            type: 'validate',\n            message: t('address.zipCode.error_lookup'),\n          });\n        }\n      }\n    }\n  }, [geoLocationData, setValue, getFieldKey, setError, t, clearErrors, error]);\n\n  useEffect(() => {\n    // set state to enable/ disable submit button depending on geocode query\n    if (setLoadingGeocode) {\n      if (isLoading) setLoadingGeocode(true);\n      else setLoadingGeocode(false);\n    }\n  }, [isLoading, setLoadingGeocode]);\n\n  const fields = addressFieldData?.countries?.[0]?.addressOptions;\n  if (!fields || !/^\\w{2}$/.test(code)) {\n    return null;\n  }\n\n  return (\n    <>\n      {fields.map(({ name, label, required }) => {\n        if (shouldHideCityAndStateFields && (name === 'state' || name === 'city')) {\n          return <input key={getFieldKey(name)} type=\"hidden\" {...register(getFieldKey(name))} />;\n        }\n\n        if (name === 'state' && states.length > 0) {\n          return (\n            <FormSelect\n              label={label}\n              labelClassName=\"w-full\"\n              name={getFieldKey(name)}\n              key={getFieldKey(name)}\n              autoComplete={AutoComplete.STATE}\n              optional={!required}\n              registerOptions={{\n                validate: (value) => {\n                  if (!required) {\n                    return true;\n                  }\n                  return value === 'pleaseSelect' || !value\n                    ? code === 'US'\n                      ? t('address.state.error')\n                      : t('address.province.error')\n                    : true;\n                },\n              }}\n            >\n              <option disabled hidden value=\"pleaseSelect\">\n                {t('pleaseSelect')}\n              </option>\n              {states.map((state) => (\n                <option value={state.value} key={state.value}>\n                  {state.name}\n                </option>\n              ))}\n            </FormSelect>\n          );\n        }\n\n        if (enableShortenEnrollmentFlow) {\n          return enrollmentConfig?.addressOptions?.some((option) => option.name === name) ? (\n            <FormInput\n              label={label}\n              labelClassName=\"w-full flex-grow\"\n              name={getFieldKey(name)}\n              autoComplete={getAutoComplete(name)}\n              loading={name === 'postalCode' && isLoading}\n              optional={!required}\n              key={getFieldKey(name)}\n              registerOptions={{\n                validate: (value: string) => {\n                  if (!required || (!!value && name !== 'postalCode')) {\n                    return true;\n                  }\n                  switch (name) {\n                    case 'addressLine1':\n                    case 'businessAddressLine1':\n                      if (code === 'JP') {\n                        return t('address.district.error');\n                      }\n                      return t('address.addressLine1.error');\n                    case 'state':\n                      return t('address.province.error');\n                    case 'city':\n                      if (code === 'JP') {\n                        return t('address.ward.error');\n                      }\n                      return t('address.city.error');\n                    case 'postalCode':\n                      if (code === 'US') {\n                        if (/^(?!0{5,})\\d{5}(-\\d{4})?$/.test(value)) {\n                          if (type === 'nonBusiness') {\n                            if ((isZipInvalid || !geoLocationData?.geocode) && !state) {\n                              return t('address.zipCode.error_lookup');\n                            }\n                          } else if (\n                            (isZipInvalid || !geoLocationData?.geocode) &&\n                            (!city || !state)\n                          ) {\n                            return t('address.zipCode.error_lookup');\n                          }\n\n                          return true;\n                        }\n                        if (value === '' && !state && type === 'nonBusiness') {\n                          return t('address.zipCode.invalid');\n                        }\n                        return value === ''\n                          ? t('address.zipCode.error')\n                          : t('address.zipCode.invalid');\n                      }\n                      return required && value ? true : t('address.postalCode.error');\n                    default:\n                      if (name === 'businessAddressLine1') return t('address.addressLine1.error');\n                      if (name === 'businessAddressLine2') return t('address.addressLine2.error');\n                      return t(`address.${name}.error` as unknown as TemplateStringsArray);\n                  }\n                },\n              }}\n              {...(name === 'addressLine1' ||\n              name === 'businessAddressLine1' ||\n              name === 'addressLine2' ||\n              name === 'businessAddressLine2' ||\n              name === 'city'\n                ? { maxLength: 35 }\n                : {})}\n            />\n          ) : null;\n        }\n\n        //Non-shortened enrollment flow\n        return (\n          <FormInput\n            label={label}\n            labelClassName=\"w-full flex-grow\"\n            name={getFieldKey(name)}\n            autoComplete={getAutoComplete(name)}\n            loading={name === 'postalCode' && isLoading}\n            optional={!required}\n            key={getFieldKey(name)}\n            registerOptions={{\n              validate: (value: string) => {\n                if (!required || (!!value && name !== 'postalCode')) {\n                  return true;\n                }\n                switch (name) {\n                  case 'addressLine1':\n                  case 'businessAddressLine1':\n                    if (code === 'JP') {\n                      return t('address.district.error');\n                    }\n                    return t('address.addressLine1.error');\n                  case 'state':\n                    return t('address.province.error');\n                  case 'city':\n                    if (code === 'JP') {\n                      return t('address.ward.error');\n                    }\n                    return t('address.city.error');\n                  case 'postalCode':\n                    if (code === 'US') {\n                      if (/^(?!0{5,})\\d{5}(-\\d{4})?$/.test(value)) {\n                        if ((isZipInvalid || !geoLocationData?.geocode) && (!city || !state)) {\n                          return t('address.zipCode.error_lookup');\n                        }\n                        return true;\n                      }\n                      if (value === '' && (!city || !state) && type === 'nonBusiness') {\n                        return t('address.zipCode.invalid');\n                      }\n                      return value === ''\n                        ? t('address.zipCode.error')\n                        : t('address.zipCode.invalid');\n                    }\n                    return required && value ? true : t('address.postalCode.error');\n                  default:\n                    if (name === 'businessAddressLine1') return t('address.addressLine1.error');\n                    if (name === 'businessAddressLine2') return t('address.addressLine2.error');\n                    return t(`address.${name}.error` as unknown as TemplateStringsArray);\n                }\n              },\n            }}\n            {...(name === 'addressLine1' ||\n            name === 'businessAddressLine1' ||\n            name === 'addressLine2' ||\n            name === 'businessAddressLine2' ||\n            name === 'city'\n              ? { maxLength: 35 }\n              : {})}\n          />\n        );\n      })}\n    </>\n  );\n}\n","import { useId } from 'react';\nimport { get, useFormContext } from 'react-hook-form';\nimport { FormErrorIcon, FormLabel } from '@dx-ui/osc-form';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\n\nimport type { FormInputBase } from '@dx-ui/osc-form';\nimport type { FieldError } from 'react-hook-form';\nimport type { InputHTMLAttributes } from 'react';\n\ntype FormInputPasswordProps<T> = {\n  passwordCriteriaClassName?: string;\n} & Omit<T, 'name'>;\n\nexport const FormInputPassword: React.FC<\n  React.PropsWithChildren<\n    FormInputBase<FormInputPasswordProps<InputHTMLAttributes<HTMLInputElement>>>\n  >\n> = ({\n  label,\n  name,\n  required,\n  optional,\n  registerOptions,\n  labelClassName,\n  className,\n  containerClassName,\n  passwordCriteriaClassName,\n  ...rest\n}) => {\n  const id = useId();\n  const helperId = `input-helper-${id}`;\n  const [t] = useTranslation('osc-join-form-form');\n  const {\n    register,\n    formState: { errors, touchedFields },\n  } = useFormContext();\n\n  const fieldError: FieldError = get(errors, name);\n  const touchedField = get(touchedFields, name);\n  const hasError = !!fieldError;\n\n  const passRequirements = [\n    { type: 'mustBe', message: t('password.requirements.mustBe') },\n    { type: 'containUpper', message: t('password.requirements.containUpper') },\n    { type: 'containLower', message: t('password.requirements.containLower') },\n    { type: 'containOneNumber', message: t('password.requirements.containOneNumber') },\n  ];\n\n  return (\n    <div className={cx({ [containerClassName as string]: !!containerClassName })}>\n      <FormLabel\n        label={label}\n        required={required}\n        optional={optional}\n        hasError={hasError}\n        className={cx('self-start', {\n          [labelClassName as string]: !!labelClassName,\n        })}\n      >\n        <input\n          {...rest}\n          className={cx('form-input', {\n            [className as string]: !!className,\n            'form-error': hasError,\n          })}\n          aria-invalid={hasError}\n          aria-describedby={helperId}\n          {...register(name, {\n            validate: {\n              required: (value: string) =>\n                /^(?=.*[A-Z])(?=.*[a-z])((?=.*[0-9])|(?=.*[#?!@$%^&*-])).{8,32}$/.test(value) ||\n                t('password.error'),\n              mustBe: (value: string) => /.{8,32}/.test(value) || t('password.requirements.mustBe'),\n              containUpper: (value: string) =>\n                /(?=.*[A-Z])/.test(value) || t('password.requirements.containUpper'),\n              containLower: (value: string) =>\n                /(?=.*[a-z])/.test(value) || t('password.requirements.containLower'),\n              containOneNumber: (value: string) =>\n                /(?=.*[0-9])|(?=.*[#?!@$%^&*-])/.test(value) ||\n                t('password.requirements.containOneNumber'),\n            },\n            ...registerOptions,\n          })}\n        />\n      </FormLabel>\n      <ul\n        id={helperId}\n        className={cx('mt-2 grid gap-2 text-sm md:grid-cols-2', {\n          [passwordCriteriaClassName as string]: !!passwordCriteriaClassName,\n        })}\n      >\n        {passRequirements.map(({ message, type }) => {\n          const hasRequirementError = fieldError?.types?.[type];\n          return (\n            <li\n              key={`passRequirement-${type}`}\n              className={cx('flex items-center space-x-2 rtl:space-x-reverse', {\n                'text-danger': hasRequirementError,\n                'text-success': !hasRequirementError && touchedField,\n              })}\n            >\n              {hasRequirementError && <FormErrorIcon className=\"mt-0.5 shrink-0\" />}\n              {!hasRequirementError && !touchedField && (\n                <svg\n                  role=\"img\"\n                  aria-hidden\n                  viewBox=\"-2 0 8 8\"\n                  height=\"16\"\n                  width=\"16\"\n                  className=\"mt-0.5 shrink-0\"\n                >\n                  <circle cx=\"4\" cy=\"4\" r=\"1\" fill=\"#1D1D1D\" />\n                </svg>\n              )}\n              {!hasRequirementError && touchedField && (\n                <svg\n                  role=\"img\"\n                  aria-hidden\n                  viewBox=\"0 -1 8 7\"\n                  width=\"16\"\n                  height=\"16\"\n                  className=\"mt-0.5 shrink-0\"\n                >\n                  <path\n                    d=\"M1 3l2 2 4-5\"\n                    stroke=\"#1A9448\"\n                    fill=\"none\"\n                    fillRule=\"evenodd\"\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                  />\n                </svg>\n              )}\n              <span>{message}</span>\n            </li>\n          );\n        })}\n      </ul>\n    </div>\n  );\n};\n","export const email =\n  /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9-]{2,}$/;\nexport const phone = /^[0-9-()\\s]{7,15}$/;\nexport const postalCode =\n  /^(?!0{5,})(?:[ \\x2D0-9A-Za-z\\xA0\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2000-\\u200A\\u202F\\u205F\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3000\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]){2,10}$/;\nexport const country = /^[A-Z]{2}$/;\n","import { FormError, FormHelpMessage, FormLabel } from '@dx-ui/osc-form';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { useId, useMemo } from 'react';\nimport { get, useFormContext } from 'react-hook-form';\n\nimport { AutoComplete } from './auto-complete';\nimport { phone } from './form-validation-regex';\n\nimport type { FieldError } from 'react-hook-form';\nimport type { Brand_CountriesQuery } from './queries/generated/types';\n\ntype Options = Brand_CountriesQuery['countries'][number];\n\ntype Props = {\n  containerClassName?: string;\n  classname?: string;\n  defaultValue?: string;\n  label?: string;\n  labelClassName?: string;\n  loading?: boolean;\n  options: Options[];\n  required?: boolean;\n  personalInformationPage?: boolean;\n  name?: string;\n  addDefaultOption?: boolean;\n  isDisabled?: boolean;\n  phoneCountryError?: string;\n};\n\nexport const FormInputPhone: React.FC<React.PropsWithChildren<Props>> = ({\n  required,\n  options,\n  containerClassName,\n  classname,\n  labelClassName,\n  defaultValue,\n  label,\n  loading,\n  personalInformationPage,\n  name = 'phone',\n  addDefaultOption,\n  isDisabled,\n  phoneCountryError,\n}) => {\n  const id = useId();\n  const helperId = `input-helper-${id}`;\n  const helperPhoneId = `input-helper-phone-${id}`;\n  const errorId = `input-error-${id}`;\n  const [t] = useTranslation('osc-join-form-form');\n  const {\n    register,\n    formState: { errors },\n  } = useFormContext();\n\n  const phoneNumberFieldError: FieldError = get(errors, `${name}.phoneNumber`);\n  const phoneCountryFieldError: FieldError = get(errors, `${name}.phoneCountry`);\n  const hasError = !!phoneNumberFieldError || !!phoneCountryFieldError;\n\n  const getOptions = useMemo(\n    () =>\n      options?.map(({ name, code, callingCode }) => (\n        <option\n          key={`option-${code}`}\n          value={`${callingCode}${code}`}\n          {...(`${callingCode}${code}` === defaultValue ? { selected: true } : {})}\n        >{`+${callingCode} ${name}`}</option>\n      )),\n    [defaultValue, options]\n  );\n\n  return (\n    <div\n      className={cx({\n        [containerClassName as string]: !!containerClassName,\n      })}\n    >\n      <div\n        className={cx('flex flex-col gap-y-4', {\n          'lg:hidden': personalInformationPage,\n          hidden: !personalInformationPage,\n        })}\n      >\n        <FormLabel\n          label={t('phone.phoneCountryLabel')}\n          required={required}\n          hasError={!!phoneCountryFieldError}\n          className={cx({\n            [labelClassName as string]: !!labelClassName,\n          })}\n        >\n          <span className={cx('flex flex-col gap-y-4')}>\n            <select\n              defaultValue={defaultValue}\n              autoComplete={AutoComplete.COUNTRY}\n              className={cx('form-select w-1/3 overflow-hidden focus:relative focus:z-0', {\n                'w-1/3': !personalInformationPage,\n                'w-full lg:w-1/3': personalInformationPage,\n                'form-error': !!phoneCountryFieldError,\n                disabled: loading,\n                [classname as string]: !!classname,\n              })}\n              disabled={loading}\n              data-testid=\"phone.phoneCountry\"\n              aria-invalid={!!phoneCountryFieldError}\n              aria-describedby={helperId}\n              {...register(`${name}.phoneCountry`, {\n                required: { value: true, message: t('phone.phoneCountryError') },\n              })}\n            >\n              {addDefaultOption ? (\n                <option key=\"selectCountry\" value=\"\" disabled>\n                  {t('phone.phoneCountrySelectOption')}\n                </option>\n              ) : null}\n\n              {options?.map(({ name, code, callingCode }) => (\n                <option\n                  key={`option-${code}`}\n                  value={`${callingCode}${code}`}\n                >{`+${callingCode} ${name}`}</option>\n              ))}\n            </select>\n          </span>\n        </FormLabel>\n        {phoneCountryFieldError && <FormError id={errorId} error={phoneCountryFieldError} />}\n\n        <FormLabel\n          label={label || t('phone.label')}\n          required={required}\n          hasError={!!phoneNumberFieldError}\n          className={cx({\n            [labelClassName as string]: !!labelClassName,\n          })}\n        >\n          <span className={cx('flex flex-col gap-y-4 lg:flex-row')}>\n            <input\n              autoComplete={AutoComplete.TEL}\n              type=\"tel\"\n              className={cx('form-input -ml-0.5 -mt-2 flex-1 focus:relative focus:z-0 lg:mt-0', {\n                'form-error': !!phoneNumberFieldError,\n                [classname as string]: !!classname,\n              })}\n              aria-invalid={!!phoneNumberFieldError}\n              aria-describedby={`${errorId} ${helperId}`}\n              data-testid=\"phone.phoneNumber\"\n              maxLength={15}\n              {...register(`${name}.phoneNumber`, {\n                required: { value: true, message: t('phone.phoneNumberError') },\n                pattern: { value: phone, message: t('phone.phoneNumberError') },\n              })}\n            />\n          </span>\n        </FormLabel>\n        {phoneNumberFieldError && <FormError id={errorId} error={phoneNumberFieldError} />}\n        <FormHelpMessage id={helperId} loading={loading} />\n      </div>\n      <div className={cx({ 'hidden lg:block': personalInformationPage })}>\n        <FormLabel\n          label={label || t('phone.label')}\n          required={required}\n          hasError={hasError}\n          className={cx({\n            [labelClassName as string]: !!labelClassName,\n          })}\n        >\n          <span\n            className={cx('flex', {\n              'flex-row': !personalInformationPage,\n              'flex-col lg:flex-row gap-y-4': personalInformationPage,\n            })}\n          >\n            <select\n              defaultValue={defaultValue}\n              autoComplete={AutoComplete.COUNTRY}\n              className={cx('form-select w-1/3 overflow-hidden focus:relative focus:z-0', {\n                'w-1/3': !personalInformationPage,\n                'w-full lg:w-1/3': personalInformationPage,\n                'form-error': !!phoneCountryFieldError,\n                disabled: loading || isDisabled,\n                [classname as string]: !!classname,\n              })}\n              disabled={loading || isDisabled}\n              data-testid=\"phone.phoneCountry\"\n              aria-invalid={!!phoneCountryFieldError}\n              aria-describedby={helperId}\n              {...register(`${name}.phoneCountry`, {\n                required: {\n                  value: true,\n                  message: phoneCountryError ? phoneCountryError : t('phone.phoneCountryError'),\n                },\n              })}\n            >\n              {addDefaultOption ? (\n                <option key=\"selectCountry\" value=\"\" disabled>\n                  {t('phone.phoneCountrySelectOption')}\n                </option>\n              ) : null}\n              {getOptions}\n            </select>\n\n            <input\n              autoComplete={AutoComplete.TEL}\n              type=\"tel\"\n              className={cx('form-input -ml-0.5 flex-1 focus:relative focus:z-0', {\n                '-mt-2 lg:mt-0': personalInformationPage,\n                'form-error': !!phoneNumberFieldError,\n                [classname as string]: !!classname,\n              })}\n              aria-invalid={!!phoneNumberFieldError}\n              aria-describedby={`${errorId} ${helperPhoneId}`}\n              data-testid=\"phone.phoneNumber\"\n              maxLength={15}\n              {...register(`${name}.phoneNumber`, {\n                required: { value: true, message: t('phone.phoneNumberError') },\n                pattern: { value: phone, message: t('phone.phoneNumberError') },\n              })}\n              disabled={isDisabled}\n            />\n          </span>\n        </FormLabel>\n        {phoneCountryFieldError && <FormError id={errorId} error={phoneCountryFieldError} />}\n        {phoneNumberFieldError && <FormError id={errorId} error={phoneNumberFieldError} />}\n        <FormHelpMessage id={helperId} loading={loading} />\n        <FormHelpMessage\n          id={helperPhoneId}\n          loading={loading}\n          message={label || t('phone.label')}\n          className=\"!hidden\"\n        />\n      </div>\n    </div>\n  );\n};\n","import type * as React from 'react';\nimport type { MarkdownToJSX } from 'markdown-to-jsx';\nimport MarkdownToJsx from 'markdown-to-jsx';\nimport type { Rule } from '@dx-ui/utilities-url-config';\nimport { getUrlConfig, RuleEngine } from '@dx-ui/utilities-url-config';\nimport { Link } from '@dx-ui/osc-link';\nimport merge from 'lodash/merge';\nimport { Speedbump, useSpeedbump } from '@dx-ui/osc-speedbump';\n\nexport type Markdown = {\n  /** Specific config rule that is used by the [RuleEngine](https://jira.hilton.com/stash/projects/HIW/repos/dx-shared/browse/packages/rule-engine) to process urls in the markdown */\n  rule?: Rule;\n  /** current language */\n  language: string;\n  /** url origin to use for determining url props to use when constructing links */\n  origin: string;\n} & MarkdownAttributes;\n\ntype MarkdownAttributes = {\n  [key: string]: unknown;\n  children: string;\n  options?: MarkdownToJSX.Options;\n};\n\ntype MarkdownLink = {\n  language: string;\n  origin: string;\n  rule: Rule;\n} & React.AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst MarkdownLink: React.FC<React.PropsWithChildren<MarkdownLink>> = ({\n  children,\n  rule,\n  language,\n  origin,\n  href,\n  ...props\n}) => {\n  const { onShow, onHide, isVisible, onContinue, isEnabled } = useSpeedbump(language);\n  if (!href) {\n    return null;\n  }\n  const linkProps: Link = { url: href };\n  if (rule) {\n    const ruleEngine = new RuleEngine(rule);\n    const data = getUrlConfig(ruleEngine, href, origin, language);\n    linkProps.url = data.url;\n    if (data.speedbump) {\n      linkProps.onClick = onShow;\n    }\n  }\n  return (\n    <>\n      <Link {...linkProps} {...props}>\n        {children}\n      </Link>\n      {isEnabled && <Speedbump isShowing={isVisible} onContinue={onContinue} onClose={onHide} />}\n    </>\n  );\n};\n\n/**\n * Used to display markdown content. This is a wrapper around [markdown-to-jsx](https://www.npmjs.com/package/markdown-to-jsx) that provides standard overrides\n * to handle links in the markdown. This incorporates the @see RuleEngine to process the urls in the markdown and provide\n * information to construct the [HTMLAnchorElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement).\n * @returns JSX that is used to render the html\n */\nexport const Markdown: React.FC<Markdown> = ({\n  children,\n  options,\n  language,\n  origin,\n  rule,\n  ...props\n}) => {\n  const defaultOptions = {\n    overrides: {\n      a: {\n        component: MarkdownLink,\n        props: {\n          rule,\n          language,\n          origin,\n          className: '!text-base',\n        },\n      },\n    },\n  };\n  const mergedOptions = merge(defaultOptions, options);\n  return (\n    <MarkdownToJsx options={mergedOptions} {...props}>\n      {children}\n    </MarkdownToJsx>\n  );\n};\n\nexport default Markdown;\n","export * from './lib/markdown';\n","import { Markdown } from '@dx-ui/osc-markdown';\nimport type { Brand_CountriesQuery } from './queries/generated/types';\nimport { Link } from '@dx-ui/osc-link';\nimport { FormInput } from '@dx-ui/osc-form';\nimport { useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nconst Paragraph = ({ children }: { children: ReactNode }) => <p className=\"mb-4\">{children}</p>;\nconst WrappedLink = ({ href, ...rest }: { href: string }) => <Link url={href} {...rest} />;\nconst CustomerExternalParagraph = ({ children }: { children: ReactNode }) => (\n  <p className=\"!mt-0 ml-8 text-sm\">{children}</p>\n);\n\nexport const MarketingContent = ({\n  selectedCountry,\n  setMarketingOptinsSelected,\n  language,\n  origin,\n}: {\n  selectedCountry: NonNullable<Brand_CountriesQuery>['countries'][0];\n  setMarketingOptinsSelected: React.Dispatch<React.SetStateAction<number[]>>;\n  language: string;\n  origin: string;\n}) => {\n  const marketingOptin = selectedCountry?.marketingOptin;\n  const rules = marketingOptin?.marketingOptinRules[0];\n  const optIns = useMemo(\n    () => rules?.optIns.filter((optIn) => !optIn?.autoOptIn) || [],\n    [rules?.optIns]\n  );\n  const termsAndConditions = useMemo(\n    () =>\n      rules?.optIns.find((optIn) => optIn?.termsAndConditionsJoin)?.termsAndConditionsJoin ?? '',\n    [rules?.optIns]\n  );\n\n  const handleMarketingOptinChange = (\n    event: React.ChangeEvent<HTMLInputElement>,\n    index: number\n  ) => {\n    setMarketingOptinsSelected((prevSelected) => {\n      const isChecked = event.target?.checked;\n      if (isChecked) {\n        return [...prevSelected, index];\n      } else {\n        return prevSelected.filter((i) => i !== index);\n      }\n    });\n  };\n\n  return (\n    <>\n      {optIns &&\n        optIns.map((optIn, index) => {\n          const { autoOptIn, customerTextExternal, name } = optIn;\n          if (autoOptIn) {\n            return null;\n          }\n          return (\n            <section key={optIn._id}>\n              <FormInput\n                name={`marketing.${index}`}\n                label={name}\n                type=\"checkbox\"\n                labelClassName=\"w-full\"\n                optional={true}\n                aria-describedby={`marketing-${index}`}\n                registerOptions={{\n                  onChange: (event) => handleMarketingOptinChange(event, index),\n                }}\n              />\n              {customerTextExternal && (\n                <Markdown\n                  language={language}\n                  origin={origin}\n                  options={{\n                    forceBlock: true,\n                    overrides: {\n                      p: CustomerExternalParagraph,\n                      a: {\n                        component: WrappedLink,\n                        props: {\n                          className: 'underline text-primary hover:text-primary-alt text-base',\n                          isNewWindow: true,\n                        },\n                      },\n                    },\n                  }}\n                >\n                  {customerTextExternal}\n                </Markdown>\n              )}\n            </section>\n          );\n        })}\n      <Markdown\n        origin={origin}\n        language={language}\n        options={{\n          forceBlock: true,\n          overrides: {\n            p: Paragraph,\n            a: {\n              component: WrappedLink,\n              props: {\n                className: 'underline text-primary hover:text-primary-alt text-base',\n                isNewWindow: true,\n              },\n            },\n          },\n        }}\n      >\n        {termsAndConditions}\n      </Markdown>\n    </>\n  );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { ActionDialog } from '@dx-ui/osc-dialog-v2';\nimport { FormInput } from '@dx-ui/osc-form';\nimport { Link } from '@dx-ui/osc-link';\nimport { Trans, useTranslation } from 'next-i18next';\n\nimport type { Dispatch, SetStateAction } from 'react';\nimport type { Brand_CountriesQuery } from './queries/generated/types';\n\ntype Props = {\n  isUSA: boolean;\n  isChina: boolean;\n  selectedCountry: Brand_CountriesQuery['countries'][0];\n  isMarketingOffersModalOpen: boolean;\n  setIsMarketingOffersModalOpen: Dispatch<SetStateAction<boolean>>;\n  language: string;\n  origin: string;\n};\n\nexport const MarketingContent = ({\n  isUSA,\n  isChina,\n  selectedCountry,\n  isMarketingOffersModalOpen,\n  setIsMarketingOffersModalOpen,\n  language,\n  origin,\n}: Props) => {\n  const [t] = useTranslation('osc-join-form-join');\n  const form = useFormContext();\n\n  if (!isUSA) {\n    if (selectedCountry?.marketingOptIn !== 'greenMarketingOptIn') {\n      return (\n        <>\n          <FormInput\n            name=\"marketingConsent\"\n            label={t('marketing.label')}\n            type=\"checkbox\"\n            labelClassName=\"w-full\"\n            optional={true}\n            aria-describedby=\"marketing\"\n          />\n          <p id=\"marketing\" className=\"!mt-0 ml-8 text-sm\">\n            <Trans t={t} i18nKey={isChina ? 'marketing_china.agreement' : 'marketing.agreement'}>\n              <Link url={`${origin}/${language}/p/global-privacy-statement/`} isNewWindow />\n            </Trans>\n          </p>\n          {/* Hide Offers checkbox - China only */}\n          {!isChina ? (\n            <>\n              <FormInput\n                name=\"marketingOffers\"\n                label={t('marketing_offers.label')}\n                type=\"checkbox\"\n                labelClassName=\"w-full\"\n                optional={true}\n                aria-describedby=\"marketing_offers\"\n              />\n              <p id=\"marketing_offers\" className=\"!mt-0 ml-8 text-sm\">\n                <Trans t={t} i18nKey=\"marketing_offers.agreement\">\n                  <Link url={`${origin}/${language}/p/global-privacy-statement/`} isNewWindow />\n                </Trans>\n              </p>\n              <FormInput\n                name=\"marketingGrandVacations\"\n                label={t('marketing_grandVacations.label')}\n                type=\"checkbox\"\n                labelClassName=\"w-full\"\n                optional={true}\n                aria-describedby=\"marketing_grandVacations\"\n              />\n              <p id=\"marketing_grandVacations\" className=\"!mt-0 ml-8 text-sm\">\n                <Trans t={t} i18nKey=\"marketing_grandVacations.agreement\">\n                  <Link\n                    url=\"https://www.hiltongrandvacations.com/en/privacy-policy.html\"\n                    isNewWindow\n                  />\n                </Trans>\n              </p>\n              <ActionDialog\n                buttonOptions={{\n                  cancel: {\n                    label: t('dialog.decline'),\n                  },\n                  confirm: {\n                    label: t('dialog.agree'),\n                  },\n                }}\n                onConfirm={() => setIsMarketingOffersModalOpen(false)}\n                onCancel={() => {\n                  setIsMarketingOffersModalOpen(false);\n                  form.setValue('marketingOffers', false);\n                }}\n                title={t('dialog.title')}\n                isOpen={isMarketingOffersModalOpen}\n                onDismiss={() => {\n                  setIsMarketingOffersModalOpen(!isMarketingOffersModalOpen);\n                  form.setValue('marketingOffers', false);\n                }}\n                size=\"lg\"\n              >\n                <p>{t('dialog.body')}</p>\n                <p className=\"my-4 text-sm\">{t('dialog.disclaimer')}</p>\n              </ActionDialog>\n            </>\n          ) : null}\n          <p>{t(isChina ? 'consent_china' : 'consent')}</p>\n          <p>\n            <Trans t={t} i18nKey={isChina ? 'agreement_china' : 'agreement'}>\n              <Link\n                url={`/${language}/hilton-honors/terms/`}\n                className=\"text-base text-primary hover:text-primary-alt\"\n                isNewWindow\n              />\n              <Link\n                url={`${origin}/${language}/p/global-privacy-statement/`}\n                className=\"text-base text-primary hover:text-primary-alt\"\n                isNewWindow\n              />\n            </Trans>\n          </p>\n        </>\n      );\n    }\n  }\n\n  return (\n    <>\n      {selectedCountry?.marketingOptInForHGV && (\n        <>\n          <FormInput\n            name=\"marketingGrandVacations\"\n            label={t('marketing_grandVacations.label')}\n            type=\"checkbox\"\n            labelClassName=\"w-full\"\n            optional={true}\n            aria-describedby=\"marketing_grandVacations\"\n          />\n          <p id=\"marketing_grandVacations\" className=\"!mt-0 ml-8 text-sm\">\n            <Trans t={t} i18nKey=\"marketing_grandVacations.agreement\">\n              <Link url=\"https://www.hiltongrandvacations.com/en/privacy-policy.html\" isNewWindow />\n            </Trans>\n          </p>\n          <p>{t('consent')}</p>\n        </>\n      )}\n      <p>\n        <Trans t={t} i18nKey={isUSA ? 'agreement_US' : 'agreement'}>\n          <Link\n            url={`/${language}/hilton-honors/terms/`}\n            className=\"text-base text-primary hover:text-primary-alt\"\n            isNewWindow\n          />\n          <Link\n            url={`${origin}/${language}/p/global-privacy-statement/`}\n            className=\"text-base text-primary hover:text-primary-alt\"\n            isNewWindow\n          />\n          <Link\n            url={`${origin}/${language}/p/global-privacy-statement/#CaliforniaRights`}\n            className=\"text-base text-primary hover:text-primary-alt\"\n            isNewWindow\n          />\n        </Trans>\n      </p>\n    </>\n  );\n};\n","import type { JoinFormMetrics } from '../types/join-form-analytics';\n\nexport const sendErrorAnalytics = (\n  metrics: JoinFormMetrics,\n  formErrors: string[],\n  formErrorsMessages: string[]\n) => {\n  metrics.setPageInfo('alertBoxText', formErrors);\n  metrics.trackEvent('alertBoxText');\n  metrics.setFormErrors([{ errors: formErrors.join('|') }]);\n  metrics.setFormErrorMessages(formErrorsMessages.join('|'));\n  metrics.setProperty('page.attributes.actionDetail', 'formError');\n  metrics.trackEvent('formErrorEvent');\n};\n","import { BannerNotification } from '@dx-ui/osc-banner-notification';\nimport { FormErrorIcon, FormInput, FormSelect } from '@dx-ui/osc-form';\nimport { Link } from '@dx-ui/osc-link';\nimport cx from 'classnames';\nimport { Trans, useTranslation } from 'next-i18next';\nimport { useEffect, useState } from 'react';\nimport type { FieldError, SubmitErrorHandler } from 'react-hook-form';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport type { ReactNode } from 'react';\n\nimport { AddressFields } from './address-fields';\nimport { FormInputPassword } from './password-fields';\nimport { FormInputPhone } from './phone-fields';\nimport { MarketingContent as MarketingContentCCS } from './marketing-content-css';\nimport { MarketingContent } from './marketing-content';\n\nimport {\n  CreateGuestDocument,\n  useBrand_CountriesQuery,\n  useCreateGuestMutation,\n  useLanguages_DefaultCountryCodeQuery,\n} from './queries/generated/queries';\n\nimport { AutoComplete } from './auto-complete';\nimport type { CreateGuestMutation, CreateGuestMutationVariables } from './queries/generated/types';\nimport { email } from './form-validation-regex';\nimport { Spinner } from '@dx-ui/osc-spinner';\nimport type { PageInfo } from '@dx-ui/config-metrics';\nimport type { JoinFormMetrics } from './types/join-form-analytics';\nimport { sendErrorAnalytics } from './utils/join-form-analytics';\nimport { logError } from '@dx-ui/framework-logger';\nimport { generateError } from '@dx-ui/utilities-generate-error';\nimport unset from 'lodash/unset';\nimport type { DXError } from '@dx-ui/types-graphql';\n\ntype BannerContent = { message: string; type: 'success' | 'error' } | null;\n\nconst GRAPH_ERRORS = {\n  WANTS_TOTP: 996,\n  TOTP_REMOVED: 995,\n  COMMUNICATIONS_ERROR: 1002,\n  RESERVATION_LOGIN_ERROR: 22,\n  RESERVATIONWITH24HRS_LOGIN_ERROR: 16,\n  CONFLICT_WITH_RESOURCE: 409,\n  SUCCESSFULL_REGISRATION_DELAYED_CONFIRMATION: 1000,\n} as const;\n\nconst EmailSubscription = {\n  PERSONALIZED_OFFERS: 'SGMT',\n  HILTON_MARKETING: 'HHPRM',\n  GRAND_VACATIONS: 'HGVC',\n  HHONORS_EMAIL: 'CUST',\n  THIRD_PARTY_MARKETING: '3PROM',\n} as const;\n\nconst USMarketingOptIn = {\n  hhonorsSubscriptions: [\n    EmailSubscription.HHONORS_EMAIL,\n    EmailSubscription.HILTON_MARKETING,\n    EmailSubscription.PERSONALIZED_OFFERS,\n    EmailSubscription.GRAND_VACATIONS,\n  ],\n  optOuts: {},\n};\n\ntype PageInfoKeys = keyof PageInfo;\n\nconst FORM_ERRORS_TO_FILTER = ['alertBoxText', 'formError', 'formErrorMessage'] as PageInfoKeys[];\n\nconst oCodes = [\n  'ADAPW',\n  'ANDEW',\n  'BRDEW',\n  'CIHCW',\n  'CNMP',\n  'DSKEW',\n  'DTITW',\n  'ESHCW',\n  'HHHTW',\n  'HHPCW',\n  'HITEW',\n  'HPHCW',\n  'IOSEW',\n  'JNHHW',\n  'NHBHW',\n  'NMUPW',\n  'OHWBW',\n  'OHWE',\n  'OHWGW',\n  'PYHTW',\n  'QQHTW',\n  'RUHCW',\n  'WAHCW',\n  'WFPAW',\n  'JHTNW',\n  'ASPEW',\n  'SMBEW',\n  'PEPEW',\n];\n\nexport type JoinInput = Omit<\n  CreateGuestMutationVariables['input'],\n  'username, propCode, country'\n> & {\n  country: string;\n  marketingOffers: boolean;\n  marketingConsent?: boolean;\n  marketingGrandVacations?: boolean;\n};\n\nexport interface Props {\n  /*\n   * Feature toggle on guest, disabled by default\n   */\n  isMarketabilityCCSEnabled?: boolean;\n  language: string;\n  /**\n   * Enrollment OCode, required\n   */\n  oCode: string;\n  /**\n   * Called after successful enrollment\n   */\n  onSuccess: (enrollResult: CreateGuestMutation) => void;\n  /*\n   * Metrics object, at a minimum needed these functions\n   */\n  metrics: JoinFormMetrics;\n\n  headline: ReactNode;\n  origin: string;\n}\n\nexport function JoinForm({\n  isMarketabilityCCSEnabled = false,\n  language,\n  oCode,\n  onSuccess,\n  metrics,\n  headline,\n  origin,\n}: Props) {\n  const [t] = useTranslation('osc-join-form-join');\n  const { t: tForm } = useTranslation('osc-join-form-form');\n  const [bannerContent, setBannerContent] = useState<BannerContent>(null);\n  const [marketingOptinsSelected, setMarketingOptinsSelected] = useState<number[]>([]);\n  const [isMarketingOffersModalOpen, setIsMarketingOffersModalOpen] = useState(false);\n  const { data: defaultCountryCodeData } = useLanguages_DefaultCountryCodeQuery({\n    language,\n  });\n\n  const isJapanesePage = language === 'ja';\n\n  const form = useForm<JoinInput>({\n    mode: 'onTouched',\n    criteriaMode: 'all',\n    defaultValues: {\n      address: {},\n      country: defaultCountryCodeData?.languages?.[0]?.defaultCountryCode || 'US',\n      phone: {\n        phoneCountry: `1US`,\n      },\n    },\n  });\n\n  const { watch, formState, setValue, handleSubmit } = form;\n  const { errors, isSubmitted } = formState;\n\n  const hasErrors = Object.keys(errors).length > 0;\n\n  useEffect(() => {\n    if (defaultCountryCodeData?.languages?.[0]?.defaultCountryCode) {\n      setValue('country', defaultCountryCodeData?.languages?.[0]?.defaultCountryCode);\n    }\n    if (isJapanesePage) {\n      setValue('phone.phoneCountry', '81JP');\n    }\n  }, [defaultCountryCodeData, isJapanesePage, setValue]);\n\n  const marketingOffersValue = watch('marketingOffers');\n  useEffect(() => {\n    if (marketingOffersValue) {\n      return setIsMarketingOffersModalOpen(true);\n    }\n  }, [marketingOffersValue]);\n\n  const hasPasswordFields = oCodes?.includes(oCode);\n\n  const [loadingGeocode, setLoadingGeocode] = useState(false);\n\n  const { data, isLoading: isLoadingCountries } = useBrand_CountriesQuery({\n    language,\n    getMarketing: true,\n    getCCSMarketing: isMarketabilityCCSEnabled,\n    countryFilter: { prohibited: false },\n  });\n\n  const createGuest = useCreateGuestMutation();\n\n  const countries =\n    [...(data?.countries || [])].sort((a, b) => Intl.Collator(language).compare(a.name, b.name)) ||\n    [];\n\n  const selectedCountry = countries.find(({ code }) => code === watch('country'))!;\n  const marketingOptIns = selectedCountry?.marketingOptin?.marketingOptinRules?.[0]?.optIns;\n\n  const isChina = selectedCountry?.code === 'CN';\n  const isUSA = selectedCountry?.code === 'US';\n\n  const getErrors = () => {\n    const elements: ReactNode[] = [];\n    Object.entries(errors).forEach(([key, value]) => {\n      if (value.message) {\n        const message = value.message;\n        elements.push(<li key={`joinPageErrorMsg${key}`}>{message}</li>);\n      }\n\n      // need to go in one level deeper\n      Object.entries(value).forEach(([innerKey, innerValue]) => {\n        if ((innerValue as FieldError).message) {\n          const message = (innerValue as FieldError).message;\n          elements.push(<li key={`joinPageErrorMsg${innerKey}`}>{message}</li>);\n        }\n      });\n    });\n    return elements;\n  };\n\n  const updateCreateGuestMutation = ({\n    address,\n    email,\n    name,\n    password,\n    phone,\n    country,\n    marketingGrandVacations,\n    marketingOffers,\n    marketingConsent,\n  }: JoinInput) => {\n    let hhonorsSubscriptions: string[] = [];\n    if (isMarketabilityCCSEnabled) {\n      const marketgOptinsAutoEnrolled = marketingOptIns?.filter((optin) => optin?.autoOptIn);\n      if (marketgOptinsAutoEnrolled && marketgOptinsAutoEnrolled.length) {\n        hhonorsSubscriptions = marketgOptinsAutoEnrolled.flatMap(\n          (optin) => optin.subscriptionCodes\n        );\n      }\n      if (marketingOptinsSelected.length && marketingOptIns && marketingOptIns.length) {\n        marketingOptinsSelected.forEach((i) => {\n          const codes = marketingOptIns[i]?.subscriptionCodes || [];\n          const list = [...hhonorsSubscriptions, ...codes];\n          hhonorsSubscriptions = [...list];\n        });\n      }\n    } else {\n      const isGreenMarketingOptIn = selectedCountry?.marketingOptIn === 'greenMarketingOptIn';\n      if (isGreenMarketingOptIn) {\n        hhonorsSubscriptions = [\n          ...hhonorsSubscriptions,\n          EmailSubscription.PERSONALIZED_OFFERS,\n          EmailSubscription.HILTON_MARKETING,\n        ];\n        if (selectedCountry?.marketingOptInForHGV) {\n          marketingGrandVacations && hhonorsSubscriptions.push(EmailSubscription.GRAND_VACATIONS);\n        } else {\n          hhonorsSubscriptions.push(EmailSubscription.GRAND_VACATIONS);\n        }\n      } else {\n        marketingOffers && hhonorsSubscriptions.push(EmailSubscription.PERSONALIZED_OFFERS);\n        marketingConsent && hhonorsSubscriptions.push(EmailSubscription.HILTON_MARKETING);\n        marketingGrandVacations && hhonorsSubscriptions.push(EmailSubscription.GRAND_VACATIONS);\n      }\n      hhonorsSubscriptions.push(EmailSubscription.HHONORS_EMAIL);\n    }\n    address.country = country;\n    const input: CreateGuestMutationVariables['input'] = {\n      address: {\n        ...address,\n        ...(address.state !== 'address' && { state: address.state }),\n        addressType: 'home',\n      },\n      email,\n      enrollSourceCode: oCode,\n      name,\n      password,\n      phone: {\n        phoneNumber: phone?.phoneNumber || '',\n        phoneCountry: phone?.phoneCountry?.replace(/\\D+/, ''),\n        phoneType: 'home',\n      },\n      preferredLanguage: language === 'id' ? 'en' : language,\n      privacyRequested: false,\n      subscriptions:\n        !isMarketabilityCCSEnabled && isUSA\n          ? USMarketingOptIn\n          : { hhonorsSubscriptions, optOuts: {} },\n    };\n\n    return new Promise((_resolve) => {\n      createGuest?.mutate([CreateGuestDocument, { language, input }], {\n        onSuccess: (data: CreateGuestMutation) => {\n          const errorCode = data?.createGuest?.error?.code;\n          if (errorCode) {\n            switch (errorCode) {\n              case GRAPH_ERRORS.SUCCESSFULL_REGISRATION_DELAYED_CONFIRMATION:\n              case GRAPH_ERRORS.CONFLICT_WITH_RESOURCE:\n                return setBannerContent({\n                  message: t(`submit_errors.${errorCode}`),\n                  type: 'error',\n                });\n              case 997:\n                if (\n                  isJapanesePage &&\n                  data?.createGuest?.error?.notifications?.some(({ code }) => code === 512)\n                ) {\n                  return setBannerContent({\n                    message: t(`submit_errors.997`),\n                    type: 'error',\n                  });\n                }\n                return setBannerContent({\n                  message: t(`submit_errors.500`),\n                  type: 'error',\n                });\n              default:\n                return setBannerContent({\n                  message: t(`submit_errors.500`),\n                  type: 'error',\n                });\n            }\n          }\n\n          const hHonorsNumber = data?.createGuest?.data?.hhonorsNumber;\n          const encodedName = window.btoa(encodeURIComponent(name.firstName));\n          const encodedNum = window.btoa(hHonorsNumber || '');\n          const encodedEmail = window.btoa(encodeURIComponent(email?.emailAddress ?? ''));\n          const encodedEnroll = window.btoa('true');\n\n          sessionStorage.setItem('first_name', encodedName);\n          sessionStorage.setItem('hhonors', encodedNum);\n          sessionStorage.setItem('email', encodedEmail);\n          sessionStorage.setItem('firstEnroll', encodedEnroll);\n          onSuccess(data);\n        },\n        onError: (data) => {\n          setBannerContent({\n            message: t('submit_errors.500'),\n            type: 'error',\n          });\n          logError('JOIN_FORM', generateError(data));\n        },\n      });\n    });\n  };\n\n  const handleFormSubmit = (formData: JoinInput) => {\n    if (window.digitalData?.page?.pageInfo) {\n      FORM_ERRORS_TO_FILTER.forEach((key) => unset(window?.digitalData?.page?.pageInfo, key));\n    }\n    updateCreateGuestMutation(formData)\n      .then((res) => res)\n      .catch((error: DXError) => {\n        throw error;\n      });\n  };\n\n  const handleInvalidForm: SubmitErrorHandler<JoinInput> = (fieldErrors) => {\n    // hasErrors above reads errors before validation is completed, missing new errors on submit.\n    // Using onInvalid ensures we get the final, updated errors.\n    const hasFieldErrors = Object.keys(fieldErrors).length > 0;\n    if (hasFieldErrors) {\n      const formErrors = Object.keys(errors).flatMap((key) => key);\n      const formErrorsMessages = (Object.keys(errors) as (keyof typeof errors)[])\n        .flatMap((key) => errors[key]?.message)\n        .filter((val): val is string => Boolean(val));\n\n      sendErrorAnalytics(metrics, formErrors, formErrorsMessages);\n    }\n  };\n\n  return (\n    <div className=\"container\">\n      {bannerContent ? (\n        <BannerNotification status={bannerContent?.type}>\n          <p className=\"font-bold sm:text-lg\">{bannerContent?.message}</p>\n        </BannerNotification>\n      ) : null}\n      <div className=\"mx-auto my-10 max-w-xl\">\n        {headline}\n        {hasErrors && isSubmitted && (\n          <div\n            role=\"alert\"\n            data-testid=\"form-errors\"\n            className={cx('w-full bg-danger-alt text-danger', {\n              'mb-4 p-4': hasErrors && isSubmitted,\n            })}\n          >\n            <h2 className=\"flex items-center space-x-2 font-semibold text-danger rtl:space-x-reverse\">\n              <FormErrorIcon />\n              <span>{t('form_error')}</span>\n            </h2>\n            <ul className=\"ml-10 text-danger rtl:space-x-reverse\">{getErrors()}</ul>\n          </div>\n        )}\n        <FormProvider {...form}>\n          <form\n            noValidate\n            method=\"post\"\n            onSubmit={handleSubmit(handleFormSubmit, handleInvalidForm)}\n            className=\"flex w-full flex-col space-y-4\"\n          >\n            <p>{tForm('requiredFields')}</p>\n            {isJapanesePage ? <p>{tForm('enterHiraganaCharacters')}</p> : null}\n            <FormInput\n              name=\"name.firstName\"\n              autoComplete={AutoComplete.GIVENNAME}\n              label={tForm('firstName.label')}\n              labelClassName=\"w-full\"\n              optional={false}\n              maxLength={18}\n              registerOptions={{\n                required: { value: true, message: tForm('firstName.error') },\n                minLength: { value: 1, message: tForm('firstName.error_minLength') },\n                pattern: { value: /^\\D+$/, message: tForm('firstName.error_noDigits') },\n              }}\n            />\n            <FormInput\n              name=\"name.lastName\"\n              autoComplete={AutoComplete.FAMILYNAME}\n              label={tForm('lastName.label')}\n              labelClassName=\"w-full\"\n              optional={false}\n              maxLength={18}\n              registerOptions={{\n                required: { value: true, message: tForm('lastName.error') },\n                minLength: { value: 1, message: tForm('lastName.error_minLength') },\n                pattern: { value: /^\\D+$/, message: tForm('lastName.error_noDigits') },\n              }}\n            />\n\n            <FormInputPhone\n              options={countries}\n              defaultValue=\"1US\"\n              loading={isLoadingCountries}\n              labelClassName=\"w-full\"\n            />\n\n            <FormInput\n              name=\"email.emailAddress\"\n              autoComplete={AutoComplete.EMAIL}\n              label={tForm('email.label')}\n              type=\"email\"\n              labelClassName=\"w-full\"\n              optional={false}\n              maxLength={64}\n              registerOptions={{\n                required: { value: true, message: tForm('email.error') },\n                pattern: { value: email, message: tForm('email.error') },\n              }}\n            />\n\n            <FormSelect\n              autoComplete={AutoComplete.COUNTRY}\n              labelClassName=\"w-full\"\n              label={tForm('address.country.label')}\n              name=\"country\"\n              loading={isLoadingCountries}\n              disabled={isLoadingCountries}\n            >\n              {countries.map(({ name, code }) => (\n                <option\n                  key={`option-${code}`}\n                  value={code}\n                  {...(code === watch('country') ? { selected: true } : {})}\n                >\n                  {name}\n                </option>\n              ))}\n            </FormSelect>\n\n            <AddressFields\n              code={watch('country')}\n              groupName=\"address\"\n              setLoadingGeocode={setLoadingGeocode}\n            />\n\n            {hasPasswordFields && (\n              <>\n                <FormInputPassword\n                  autoComplete={AutoComplete.NEWPASSWORD}\n                  type=\"password\"\n                  name=\"password\"\n                  label={tForm('password.label')}\n                  labelClassName=\"w-full\"\n                />\n                <FormInput\n                  autoComplete={AutoComplete.NEWPASSWORD}\n                  type=\"password\"\n                  name=\"confirmPassword\"\n                  label={tForm('confirmPassword.label')}\n                  labelClassName=\"w-full\"\n                  optional={false}\n                  containerClassName=\"!mb-10\"\n                  registerOptions={{\n                    validate: {\n                      shouldMatch: (value) =>\n                        (!!value && value === watch('password')) || tForm('confirmPassword.error'),\n                    },\n                  }}\n                />\n              </>\n            )}\n            <div className=\"space-y-10\">\n              {isMarketabilityCCSEnabled ? (\n                <MarketingContentCCS\n                  selectedCountry={selectedCountry}\n                  setMarketingOptinsSelected={setMarketingOptinsSelected}\n                  language={language}\n                  origin={origin}\n                />\n              ) : (\n                <MarketingContent\n                  isUSA={isUSA}\n                  isChina={isChina}\n                  selectedCountry={selectedCountry}\n                  isMarketingOffersModalOpen={isMarketingOffersModalOpen}\n                  setIsMarketingOffersModalOpen={setIsMarketingOffersModalOpen}\n                  language={language}\n                  origin={origin}\n                />\n              )}\n\n              <button\n                type=\"submit\"\n                className=\"btn btn-2xl btn-primary w-full\"\n                disabled={loadingGeocode || createGuest.isPending}\n              >\n                {createGuest.isPending ? (\n                  <>\n                    {tForm('submitting')} <Spinner className=\"ml-2 inline\" size=\"sm\" />\n                  </>\n                ) : (\n                  t('submit', { context: null })\n                )}\n              </button>\n\n              <p className=\"text-xs\">\n                <Trans t={t} i18nKey=\"termsAndConditions_disclaimer\">\n                  <Link\n                    url={`/${language}/hilton-honors/honors-discount-terms/`}\n                    className=\"text-xs text-primary hover:text-primary-alt\"\n                    isNewWindow\n                  />\n                </Trans>\n              </p>\n              <p className=\"!mt-6 text-xs\">{t('wiFi_disclaimer')}</p>\n              {(selectedCountry?.marketingConsent || selectedCountry?.marketingOptIn) && (\n                <>\n                  <p className=\"text-xs text-text-alt\">{t('gdprFootnote')}</p>\n                  <p className=\"!mt-6 text-xs text-text-alt\">{t('gdprFootnote2')}</p>\n                </>\n              )}\n            </div>\n          </form>\n        </FormProvider>\n      </div>\n    </div>\n  );\n}\n","export * from './join-form';\n","export * from './lib';\n","import { useEffect, useRef, useState, type ReactNode } from 'react';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport { JoinForm, type Props } from '@dx-ui/osc-join-form';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { LoginIFrame } from '@dx-ui/osc-login';\nimport { useTranslation } from 'next-i18next';\nimport Icon from '@dx-ui/osc-icon';\nimport { logError } from '@dx-ui/framework-logger';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\n/** This is a generic button component that will launch a modal with the join form when clicked. */\nexport function JoinModalButton({\n  children,\n  className,\n  language,\n  loginIFrameSrc,\n  metrics,\n  headline,\n  oCode = 'OHWGW',\n  onSuccessfulLogin,\n  onSuccessfulJoin,\n  onClick,\n}: {\n  children: ReactNode;\n  /** Wrapper button classname */\n  className?: string;\n  language: string;\n  loginIFrameSrc: string;\n  /** Metrics object from join form */\n  metrics: Props['metrics'];\n  headline?: Props['headline'];\n  oCode?: Props['oCode'];\n  onSuccessfulLogin?: () => void;\n  onSuccessfulJoin?: () => void;\n  onClick?: () => void;\n}) {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [showJoinFormContent, setShowJoinFormContent] = useState(false);\n  const [showLoginIframe, setShowLoginIframe] = useState(false);\n  const [newHonorsNumber, setNewHonorsNumber] = useState('');\n  const { login } = useAuth();\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const successMessageRef = useRef<HTMLParagraphElement>(null);\n  const { t } = useTranslation('osc-join-modal-button');\n  const origin = useOrigin();\n\n  const handleOpenModal = () => {\n    setIsModalOpen(true);\n    setShowJoinFormContent(true);\n    onClick?.();\n  };\n\n  const handleOpenLoginIframe = () => {\n    setShowLoginIframe(true);\n  };\n\n  const handleCloseModal = () => {\n    setIsModalOpen(false);\n    setShowLoginIframe(false);\n  };\n\n  return (\n    <Dialog\n      onDismiss={handleCloseModal}\n      isOpen={isModalOpen}\n      size={showLoginIframe ? 'md' : '2xl'}\n      title={showLoginIframe ? t('signIn') : t('joinForFree')}\n      dialogTrigger={\n        <button type=\"button\" className={className} onClick={handleOpenModal} ref={buttonRef}>\n          {children}\n        </button>\n      }\n    >\n      {showJoinFormContent ? (\n        <JoinForm\n          language={language}\n          oCode={oCode}\n          origin={origin}\n          headline={\n            headline || (\n              <h1 className=\"mb-2 text-center font-headline text-3xl\">{t('joinHiltonHonors')}</h1>\n            )\n          }\n          onSuccess={(data) => {\n            const honorsNumber = data?.createGuest?.data?.hhonorsNumber;\n            if (honorsNumber) {\n              onSuccessfulJoin?.();\n              setNewHonorsNumber(honorsNumber);\n              setShowJoinFormContent(false);\n              handleOpenLoginIframe();\n            }\n          }}\n          metrics={metrics}\n        />\n      ) : null}\n      {showLoginIframe ? (\n        <>\n          <div ref={successMessageRef} className=\"mt-5 flex bg-success-alt p-2 text-success\">\n            <Icon name=\"check-circle\" variant=\"solid\" />\n            <p className=\"ml-2\">{t('welcomeMessage')}</p>\n          </div>\n          {newHonorsNumber ? (\n            <LoginIFrame\n              frameSrc={loginIFrameSrc}\n              title={t('signIn')}\n              options={{\n                username: newHonorsNumber,\n              }}\n              onLoginAttempt={(result) => {\n                if (result.data) {\n                  login(result)\n                    .then(() => {\n                      handleCloseModal();\n                      setShowLoginIframe(false);\n                      onSuccessfulLogin?.();\n                    })\n                    .catch((error) => {\n                      logError(\n                        'OSC_JOIN_MODAL_BUTTON',\n                        error,\n                        'Error logging in after successful join'\n                      );\n                    });\n                }\n              }}\n            />\n          ) : null}\n        </>\n      ) : null}\n    </Dialog>\n  );\n}\n\nfunction useOrigin() {\n  const [origin, setOrigin] = useState('https://www.hilton.com');\n  useEffect(() => {\n    if (isBrowser && window.location) {\n      const { protocol, hostname, port } = window.location;\n      const origin = `${protocol}//${hostname}${port ? `:${port}` : ''}`;\n      setOrigin(origin);\n    }\n  }, []);\n  return origin;\n}\n","export * from './lib/osc-join-modal-button';\n","import * as React from 'react';\nimport { Link } from '@dx-ui/osc-link';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { Login } from '@dx-ui/osc-login';\nimport Icon from '@dx-ui/osc-icon';\nimport { LanguageSelector } from '@dx-ui/osc-language-selector';\nimport type { HeaderProps, LinkWithExperimentationConfiguration } from './types';\nimport { BrandHeaderBody } from './brand-header-body/brand-header-body';\nimport { sendInteractionReward } from './header.utilities';\nimport {\n  Status,\n  sendReward,\n  setConductricsSelectionOK,\n  useConductricsSelection,\n} from '@dx-ui/framework-conductrics';\nimport { HeaderLogoLink } from './header.logo';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { JoinModalButton } from '@dx-ui/osc-join-modal-button';\nimport { useRouter } from 'next/router';\nimport { getLocaleFormattedNumber } from '@dx-ui/framework-i18n';\n\nconst HeaderMenuLink: React.FunctionComponent<\n  React.PropsWithChildren<LinkWithExperimentationConfiguration>\n> = (link) => {\n  const [t] = useTranslation('osc-header');\n  return (\n    <DropdownMenu.Item asChild={true}>\n      <a\n        href={link.url}\n        onClick={link.onClick}\n        className={cx(\n          'block px-2 py-3 text-text hover:text-text-alt highlighted:bg-bg-alt',\n          link.className\n        )}\n        {...(link.adaDescription && {\n          'aria-label': `${link.adaDescription}${link.isNewWindow ? `, ${t('newTab')}` : ''}`,\n        })}\n        {...(link.isNewWindow && { target: '_blank', rel: 'noopener noreferrer' })}\n        data-conductrics-goal={link.experimentationConfiguration?.goal}\n        data-conductrics-value={link.experimentationConfiguration?.value}\n      >\n        {link.label}\n        {link.isNewWindow && !link.adaDescription ? (\n          <span className=\"sr-only\">\n            , <span>{t('newTab')}</span>\n          </span>\n        ) : null}\n      </a>\n    </DropdownMenu.Item>\n  );\n};\n\nconst joinModalConductricsTestAgent = 'a-ZPwsLcHilZ0e';\nfunction onSignInLinkClick() {\n  void setConductricsSelectionOK(joinModalConductricsTestAgent);\n}\n\nexport const Header = React.forwardRef<HTMLElement, HeaderProps>(\n  (\n    {\n      megaNavLinks,\n      brand,\n      isFluid,\n      mainNavLinks,\n      onSignOut,\n      onSignInAttempt,\n      suppressLogo = false,\n      shouldSuppressHonorsAccountLinks,\n      shouldSuppressFindStay,\n      shouldSuppressJoinAndSignIn,\n      shouldOpenAccountLinksInNewWindow,\n      user,\n      userLinks,\n      loginOptions,\n      children,\n      languageSelectorOptions,\n      showNewHeader,\n      theme,\n      heading,\n      wrapperId = '__next',\n      mvts,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const [t] = useTranslation(['osc-header', 'osc-login']);\n    const defaultOptions = {\n      frameSrc: userLinks?.signInLink?.url || '',\n      title: t('osc-login:signIn'),\n      onLoginAttempt: onSignInAttempt,\n    };\n    const commonHeaderBodyProps = {\n      brand,\n      isFluid,\n      mainNavLinks,\n      onSignOut,\n      onSignInAttempt,\n      suppressLogo,\n      user,\n      userLinks,\n      loginOptions,\n      children,\n      heading,\n    };\n\n    const isDark = theme === 'dark';\n    const joinFromModal = useJoinFromModalTest();\n\n    if (userLinks?.signUpLink) {\n      userLinks.signUpLink.onMouseDown = onSignInLinkClick;\n      userLinks.signUpLink.onKeyDown = function onKeyDown(event) {\n        if (event.key === 'Enter' || event.key === ' ') {\n          onSignInLinkClick();\n        }\n      };\n    }\n\n    const SignUpComponent = ({\n      children,\n      className,\n      loggedInButtonRef,\n    }: {\n      children: React.ReactNode;\n      className: string;\n      loggedInButtonRef: React.RefObject<HTMLButtonElement | null>;\n    }): React.ReactNode => {\n      return (\n        <JoinModalButton\n          onClick={onSignInLinkClick}\n          className={className}\n          language={languageSelectorOptions?.locale || 'en'}\n          loginIFrameSrc={userLinks?.signInLink?.url || ''}\n          onSuccessfulJoin={() => sendReward('g-XuedMeNnr5')}\n          onSuccessfulLogin={() => {\n            sendReward('g-bgQSVS0Q4h');\n            setTimeout(() => loggedInButtonRef?.current?.focus(), 1000);\n          }}\n          metrics={{\n            setPageInfo: () => {},\n            trackEvent: () => {},\n            setFormErrors: () => {},\n            setProperty: () => {},\n            setFormErrorMessages: () => {},\n          }}\n        >\n          {children}\n        </JoinModalButton>\n      );\n    };\n\n    return (\n      <>\n        <a href=\"#skipped\" className=\"btn-xl btn-primary-text sr-only focus:not-sr-only\">\n          {t('skipToContent')}\n        </a>\n        <header\n          className={cx('border-b border-solid border-border', {\n            'bg-bg-dark': isDark,\n          })}\n          data-testid=\"shared-header\"\n          ref={forwardedRef}\n          {...rest}\n        >\n          {megaNavLinks || showNewHeader ? (\n            <BrandHeaderBody\n              menuItems={megaNavLinks}\n              brand={brand}\n              onSignInAttempt={onSignInAttempt}\n              onSignOut={onSignOut}\n              wrapperId={wrapperId}\n              user={user}\n              SignUpComponent={joinFromModal ? SignUpComponent : undefined}\n              loginOptions={loginOptions}\n              languageSelectorOptions={languageSelectorOptions}\n              isFluid={isFluid}\n              suppressLogo={suppressLogo}\n              shouldSuppressHonorsAccountLinks={shouldSuppressHonorsAccountLinks}\n              shouldSuppressFindStay={shouldSuppressFindStay}\n              shouldSuppressJoinAndSignIn={shouldSuppressJoinAndSignIn}\n              shouldOpenAccountLinksInNewWindow={shouldOpenAccountLinksInNewWindow}\n              heading={heading}\n              theme={theme}\n              mvts={mvts}\n            />\n          ) : languageSelectorOptions ? (\n            <NewHeaderBody\n              {...commonHeaderBodyProps}\n              defaultOptions={defaultOptions}\n              languageSelectorOptions={languageSelectorOptions}\n            />\n          ) : (\n            <OldHeaderBody {...commonHeaderBodyProps} defaultOptions={defaultOptions} />\n          )}\n        </header>\n        {children}\n        <div id=\"skipped\" tabIndex={-1} />\n      </>\n    );\n  }\n);\n\ntype BodyProps = Pick<\n  HeaderProps,\n  | 'brand'\n  | 'isFluid'\n  | 'mainNavLinks'\n  | 'onSignOut'\n  | 'suppressLogo'\n  | 'user'\n  | 'userLinks'\n  | 'loginOptions'\n  | 'heading'\n> & {\n  defaultOptions: {\n    frameSrc: string;\n    title: string;\n    onLoginAttempt: HeaderProps['onSignInAttempt'];\n  };\n};\n\nfunction OldHeaderBody({\n  brand,\n  isFluid,\n  mainNavLinks,\n  onSignOut,\n  suppressLogo,\n  user,\n  userLinks,\n  loginOptions,\n  defaultOptions,\n  heading,\n}: BodyProps) {\n  return (\n    <div\n      className={cx('flex flex-wrap items-center pt-2 lg:py-2', {\n        'container-fluid': isFluid,\n        container: !isFluid,\n      })}\n    >\n      {suppressLogo ? null : <HeaderLogoLink brand={brand} heading={heading} />}\n      {mainNavLinks?.length ? <MainNav links={mainNavLinks} suppressLogo={suppressLogo} /> : null}\n      <UserNav\n        user={user}\n        userLinks={userLinks}\n        onSignOut={onSignOut}\n        loginOptions={loginOptions}\n        defaultOptions={defaultOptions}\n      />\n    </div>\n  );\n}\n\nfunction NewHeaderBody({\n  brand,\n  isFluid,\n  mainNavLinks,\n  onSignOut,\n  suppressLogo,\n  user,\n  userLinks,\n  loginOptions,\n  defaultOptions,\n  languageSelectorOptions,\n  heading,\n}: BodyProps & {\n  languageSelectorOptions: NonNullable<HeaderProps['languageSelectorOptions']>;\n}) {\n  return (\n    <div\n      className={cx('flex flex-wrap pt-1.5', {\n        'container-fluid': isFluid,\n        container: !isFluid,\n      })}\n    >\n      <div className=\"flex w-full flex-wrap items-center justify-between gap-x-5 gap-y-2 pb-2 sm:justify-end sm:gap-x-12 sm:pb-0\">\n        <LanguageSelector {...languageSelectorOptions} />\n        <div className=\"flex flex-wrap justify-end gap-x-2 gap-y-1.5 sm:flex-nowrap sm:gap-x-3\">\n          <UserNav\n            user={user}\n            userLinks={userLinks}\n            onSignOut={onSignOut}\n            loginOptions={loginOptions}\n            defaultOptions={defaultOptions}\n          />\n        </div>\n      </div>\n      <div className=\"w-full items-center lg:flex lg:pb-2\">\n        {suppressLogo ? null : <HeaderLogoLink brand={brand} heading={heading} />}\n        {mainNavLinks?.length ? <MainNav links={mainNavLinks} suppressLogo={suppressLogo} /> : null}\n      </div>\n    </div>\n  );\n}\n\nfunction UserNav({\n  user,\n  userLinks,\n  onSignOut,\n  loginOptions,\n  defaultOptions,\n}: Pick<BodyProps, 'user' | 'userLinks' | 'onSignOut' | 'loginOptions' | 'defaultOptions'>) {\n  const { i18n, t } = useTranslation('osc-header');\n  const { locale = 'en' } = useRouter();\n  const formattedHonorsPointsTotal = getLocaleFormattedNumber(user?.honorsPoints, { locale });\n  return (\n    <nav aria-label=\"Hilton Honors\" className=\"relative ms-auto\">\n      {user ? (\n        <DropdownMenu.Root dir={i18n.dir()} modal={false}>\n          <DropdownMenu.Trigger asChild>\n            <button\n              onClick={() => {\n                sendInteractionReward();\n                sendReward('profile-name-click');\n              }}\n              className=\"btn-xl btn-text-text flex items-center\"\n              type=\"button\"\n            >\n              <span className=\"brand-wa:font-normal\">\n                {t('greetings', { username: user.name })}\n              </span>\n              <Icon name=\"user-circle\" size=\"md\" variant=\"solid\" className=\"ms-2\" />\n            </button>\n          </DropdownMenu.Trigger>\n          <DropdownMenu.Portal>\n            <DropdownMenu.Content\n              align=\"end\"\n              className=\"absolute end-0 z-50 w-56 divide-y divide-border rounded border border-solid border-border bg-bg p-2 shadow-lg outline-none\"\n            >\n              <div className=\"flex flex-col px-2 py-3\">\n                <p className=\"leading-tight\">\n                  <span className=\"block font-bold\">{user.honorsTier}</span>\n                  <span>\n                    {t('points', {\n                      count: user.honorsPoints,\n                      points: formattedHonorsPointsTotal,\n                    })}\n                  </span>\n                </p>\n              </div>\n              {userLinks?.accountLink?.url ? (\n                <HeaderMenuLink\n                  onClick={(e) => {\n                    userLinks.accountLink?.onClick?.(e);\n                    sendInteractionReward();\n                  }}\n                  {...userLinks.accountLink}\n                  label={t('account')}\n                />\n              ) : null}\n              {/* Optional user links */}\n              {userLinks?.additionalLinks?.length\n                ? userLinks.additionalLinks.map((link) => (\n                    <HeaderMenuLink\n                      onClick={(e) => {\n                        link.onClick?.(e);\n                        sendInteractionReward();\n                      }}\n                      key={link.label}\n                      {...link}\n                    />\n                  ))\n                : null}\n              <button\n                className={cx(\n                  'w-full px-2 py-3 text-start text-text hover:text-text-alt highlighted:bg-bg-alt'\n                )}\n                onClick={onSignOut}\n                id=\"sign-out\"\n                type=\"button\"\n              >\n                {t('signOut')}\n              </button>\n            </DropdownMenu.Content>\n          </DropdownMenu.Portal>\n        </DropdownMenu.Root>\n      ) : userLinks?.signInLink || userLinks?.signUpLink ? (\n        <ul className=\"flex items-baseline divide-x divide-border rtl:divide-x-reverse\">\n          {userLinks.signUpLink ? (\n            <li className=\"px-2 first:ps-0 last:pe-0 sm:px-3\">\n              <Link\n                {...userLinks.signUpLink}\n                showNewWindowIcon={false}\n                data-osc-product=\"header-signup-link\"\n                underline={false}\n                className=\"btn btn-text-text flex items-center sm:btn-xl brand-wa:!font-normal sm:inline-flex\"\n                onClick={(e) => {\n                  userLinks.signUpLink?.onClick?.(e);\n                  sendReward('nav-join-click');\n                  sendInteractionReward();\n                }}\n              >\n                {t('signUp')}\n              </Link>\n            </li>\n          ) : null}\n          {userLinks.signInLink ? (\n            <li className=\"px-2 first:ps-0 last:pe-0 sm:px-3\">\n              <Login onOpen={sendInteractionReward} {...{ ...defaultOptions, ...loginOptions }} />\n            </li>\n          ) : null}\n        </ul>\n      ) : null}\n    </nav>\n  );\n}\n\nfunction MainNav({\n  links,\n  suppressLogo,\n}: {\n  links: LinkWithExperimentationConfiguration[];\n  suppressLogo: HeaderProps['suppressLogo'];\n}) {\n  const navRef = React.useRef<React.ElementRef<'div'>>(null);\n  const [isBeforeVisible, setBeforeVisible] = React.useState(false);\n  const [isAfterVisible, setAfterVisible] = React.useState(false);\n\n  const onChange = React.useCallback((rect: DOMRect | undefined) => {\n    const scrollLeft = navRef.current?.scrollLeft ?? 0;\n    const scrollWidth = navRef.current?.scrollWidth ?? 0;\n    const navWidth = rect?.width || 0;\n    const widthDiff = scrollWidth - navWidth;\n    const newBefore = scrollLeft > 5 && widthDiff > 0;\n    const newAfter = widthDiff > 0 && widthDiff - scrollLeft > 5;\n    setBeforeVisible(newBefore);\n    setAfterVisible(newAfter);\n  }, []);\n  const navRect = useRect({ ref: navRef, onResize: onChange });\n  const onNavScroll = React.useCallback(() => navRect && onChange(navRect), [onChange, navRect]);\n  return (\n    <nav\n      className={cx(\n        'relative order-last -mx-4 mt-2 overflow-hidden border-t border-solid border-border px-4 py-2 flex-basis-full sm:-mx-8 sm:px-8 lg:order-none lg:mx-0 lg:mt-0 lg:grow lg:overflow-auto lg:border-t-0 lg:px-4 lg:flex-basis-auto',\n        {\n          'lg:ps-0': suppressLogo,\n          'header-nav-before': isBeforeVisible,\n          'header-nav-after': isAfterVisible,\n        }\n      )}\n    >\n      <div\n        ref={navRef}\n        onScroll={onNavScroll}\n        className=\"w-full overflow-x-scroll py-1 lg:overflow-x-visible lg:py-0\"\n      >\n        <ul className=\"flex flex-nowrap items-center space-x-6 rtl:space-x-reverse\">\n          {links.map(({ label, experimentationConfiguration, ...linkProps }) => (\n            <li\n              key={`main-nav-link-${label}`}\n              className=\"text-text focus-within:text-text-alt hover:text-text-alt\"\n            >\n              <Link\n                {...linkProps}\n                underline={false}\n                className=\"whitespace-nowrap text-base font-bold brand-wa:font-normal\"\n                onClick={(e) => {\n                  linkProps.onClick?.(e);\n                  sendInteractionReward();\n                }}\n                data-conductrics-goal={experimentationConfiguration?.goal}\n                data-conductrics-value={experimentationConfiguration?.value}\n              >\n                {label}\n              </Link>\n            </li>\n          ))}\n        </ul>\n      </div>\n    </nav>\n  );\n}\nfunction useJoinFromModalTest() {\n  const { selection, isLoaded } = useConductricsSelection(\n    joinModalConductricsTestAgent,\n    Status.PENDING\n  );\n  return isLoaded && selection?.choice === 'B';\n}\n\nHeader.displayName = 'Header';\n\nexport default Header;\n","import type { AgentsSelection } from '@dx-ui/framework-conductrics';\nimport type { TDrawerItem } from '../types';\n\nexport function filterMegaNavExperiments(\n  megaNavLinks: TDrawerItem[] | undefined,\n  experimentationAgents: AgentsSelection,\n  filterExperiments: (agents: AgentsSelection, config?: CmsExperimentationConfiguration) => boolean\n) {\n  if (!megaNavLinks) {\n    return;\n  }\n\n  return megaNavLinks\n    ?.map((item) => {\n      if (\n        item.link?.experimentationConfiguration &&\n        !filterExperiments(experimentationAgents, item.link?.experimentationConfiguration)\n      ) {\n        return null;\n      }\n\n      const subMenu =\n        item.subMenu?.filter((secondary) => {\n          if (!secondary.link?.experimentationConfiguration) {\n            return true;\n          }\n\n          return filterExperiments(\n            experimentationAgents,\n            secondary.link?.experimentationConfiguration\n          );\n        }) ?? [];\n\n      const drawerItem: TDrawerItem = {\n        ...item,\n      };\n\n      if (subMenu.length) {\n        drawerItem.subMenu = subMenu;\n      }\n\n      return drawerItem;\n    })\n    .filter((item) => !!item);\n}\n","import type { Agent, ConductricsSelection } from '@dx-ui/framework-conductrics';\nimport { useConductricsSelection, useShouldRenderExperiment } from '@dx-ui/framework-conductrics';\nimport { filterMegaNavExperiments } from '../util/filter-mega-nav-experiments';\nimport type { TDrawerItem } from '../types';\n\n/**\n * Filters mega nav links by Conductrics agent(s).\n * Conductrics agents are automatically fetched by this hook if links have an agent defined.\n */\nexport function useFilterMegaNavExperiments(megaNavLinks: TDrawerItem[] | undefined) {\n  const agents = findAgentsToFetch(megaNavLinks);\n  const selections = useConsistentConductricsSelection(agents);\n  const shouldRenderExperiment = useShouldRenderExperiment();\n  return filterMegaNavExperiments(megaNavLinks, selections, shouldRenderExperiment);\n}\n\n/**\n * Loop over navigation drawer items to find agent IDs that need to be fetched via Conductrics\n */\nfunction findAgentsToFetch(megaNavLinks?: TDrawerItem[]): Agent[] {\n  if (!megaNavLinks) {\n    return [];\n  }\n\n  const agents = new Set<string>();\n\n  for (const item of megaNavLinks) {\n    if (item.link?.experimentationConfiguration?.agentId) {\n      agents.add(item.link.experimentationConfiguration.agentId);\n    }\n\n    if (Array.isArray(item.subMenu)) {\n      for (const subMenuItem of item.subMenu) {\n        if (subMenuItem.link?.experimentationConfiguration?.agentId) {\n          agents.add(subMenuItem.link.experimentationConfiguration.agentId);\n        }\n      }\n    }\n  }\n\n  return Array.from(agents).map((agentId) => ({ agentId }));\n}\n\n/**\n * Always returns a Record<string, ConductricsSelection>\n *\n * useConductricsSelection will return an object that is of type `ConductricsSelection` instead of\n * Record<AgentID, ConductricsSelection> when there is an array with a single agent ID passed to it.\n * We need to convert this to a record for the filter function.\n */\nfunction useConsistentConductricsSelection(agents: Agent[]) {\n  const isSingleAgent = agents.length === 1;\n  const selections = useConductricsSelection(agents);\n\n  if (isSingleAgent && isConductricsSingleSelection(selections)) {\n    const agentId = agents?.[0]?.agentId;\n\n    return {\n      [`${agentId}`]: selections,\n    };\n  }\n\n  return selections;\n}\n\nfunction isConductricsSingleSelection(value: unknown): value is ConductricsSelection {\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    'isLoaded' in value &&\n    'error' in value &&\n    'selection' in value\n  );\n}\n","export * from './lib/header';\nexport { getBaseNavLinksFromEnv } from './lib/header.utilities';\nexport * from './lib/types';\nexport * from './lib/util/filter-mega-nav-experiments';\nexport * from './lib/hooks/use-filter-mega-nav-experiments';\n","import type { GuestHHonorsPackage } from '@dx-ui/gql-types';\n\n/**\nCheck a guest’s product codes against a predefined list to see if any match\n@param {string[]} guestPackages - Packages from guestInfo.hhonors.packages \n@param {string[]} productCodes - List of product codes to check against\n@example\n// Returns true\nhasValidProductCode([\"HGD\", \"TMH\"], [\"HGD\", \"XYZ\", \"ABC\"])\n@example\n// Returns false\nhasValidProductCode([\"HGD\", \"TMH\"], [\"XYZ\", \"ABC\"])\n*/\nexport const hasValidProductCode = (\n  guestPackages: Pick<GuestHHonorsPackage, 'packageName'>[],\n  productCodes: string[]\n): boolean => {\n  if (!guestPackages || !productCodes || guestPackages.length === 0 || productCodes.length === 0)\n    return false;\n  return guestPackages?.filter(({ packageName }) => productCodes.includes(packageName))?.length > 0;\n};\n","import type { TDrawerItem } from '@dx-ui/osc-header';\nimport { useFilterMegaNavExperiments } from '@dx-ui/osc-header';\nimport { useFeatureTogglesQuery, useNavigationQuery } from '../generated/react-query';\nimport type { SyntheticEvent } from 'react';\nimport { ENABLE_JAPANESE_CO_BRAND_PAGE_LINK, FEATURE_TOGGLES } from '../utils/constants';\nimport { isFeatureEnabled } from '../utils/feature-toggles';\nimport { env } from '@dx-ui/framework-env';\n\ntype ActiveNavLinksProps = {\n  brandCode: string;\n  language: string;\n  onShow: (e: SyntheticEvent<HTMLAnchorElement, Event>) => boolean;\n};\n\nconst useFetchActiveNavLinks = ({\n  brandCode,\n  language,\n  onShow,\n}: {\n  brandCode: string;\n  language: string;\n  onShow: (e: SyntheticEvent<HTMLAnchorElement, Event>) => boolean;\n}) => {\n  const { data } = useNavigationQuery({ brandCode, language });\n\n  const handleCreditCardClick = (event: SyntheticEvent<HTMLAnchorElement, Event>) => {\n    if (['ja', 'de'].includes(language)) {\n      return;\n    }\n    onShow(event);\n  };\n\n  const { data: featureTogglesData } = useFeatureTogglesQuery({\n    flags: FEATURE_TOGGLES,\n  });\n\n  if (data?.brand?.header?.sections.length === 1) {\n    return data?.brand?.header?.sections?.[0]?.links.map((link) => {\n      return {\n        label: link.label,\n        link: { ...link, onClick: onShow },\n        subMenu: link.secondaryLinks.map((secondaryLink) => {\n          return { label: secondaryLink.label, link: { ...secondaryLink, onClick: onShow } };\n        }),\n      };\n    }) as TDrawerItem[];\n  } else if (data?.brand?.header?.sections.length && data?.brand?.header?.sections.length > 1) {\n    return data?.brand?.header?.sections?.flatMap((section) => {\n      return section.links.map((link) => {\n        return {\n          label: link.label,\n          link: link?.url\n            ? link?.url.includes('credit-cards')\n              ? {\n                  ...getCreditCardUrl(\n                    link,\n                    (toggle: string): boolean =>\n                      isFeatureEnabled(featureTogglesData?.featureToggles || [], toggle),\n                    language\n                  ),\n                  onClick: handleCreditCardClick,\n                }\n              : { ...link, onClick: onShow }\n            : { ...link, onClick: onShow },\n          subMenu: link.secondaryLinks.map((secondaryLink) => {\n            return { label: secondaryLink.label, link: { ...secondaryLink, onClick: onShow } };\n          }),\n        };\n      });\n    }) as TDrawerItem[];\n  }\n};\n\nexport const useActiveNavLinks = ({ brandCode, language, onShow }: ActiveNavLinksProps) => {\n  const activeNavItems = useFetchActiveNavLinks({ brandCode, language, onShow });\n  return useFilterMegaNavExperiments(activeNavItems);\n};\n\nexport const getCreditCardUrl = (\n  link: any,\n  toggleCheck: (toggle: string) => boolean,\n  locale: string | undefined\n) => {\n  switch (locale) {\n    case 'ja':\n      link.url = toggleCheck(ENABLE_JAPANESE_CO_BRAND_PAGE_LINK)\n        ? `${env('OHW_BASE_URL')}${locale}/hilton-honors/credit-cards/`\n        : 'https://www.americanexpress.com/ja-jp/credit-cards/card-types/cobrand-hilton-mclp/index.html';\n      return link;\n    case 'de':\n      link.url = 'https://www.hiltonhonorscreditcard.de/';\n      return link;\n    default:\n      return link;\n  }\n};\n","import { Header } from '@dx-ui/osc-header';\nimport type { HeaderProps } from '@dx-ui/osc-header';\nimport { useRouter } from 'next/router';\nimport { useCallback, useEffect, useState } from 'react';\nimport { OHW_BASE_URL, APP_NAME } from '../../utils/env';\nimport { Speedbump, makeAnchorEventTarget, useSpeedbump } from '@dx-ui/osc-speedbump';\nimport { useAuth, getGuestFirstName } from '@dx-ui/framework-auth-provider';\nimport type { LoginResponse } from '@dx-ui/osc-login';\nimport { hasValidProductCode } from '../../utils/honors';\nimport { useSmb_ProgramAccountsQuery } from '../../generated/react-query';\nimport { useIsClient } from 'usehooks-ts';\nimport { useMetrics } from '../../utils/metrics';\nimport { Goals } from '../../typings/app/goals';\nimport { logError } from '@dx-ui/framework-logger';\nimport { sendConductricsReward } from '../../hooks/use-conductrics';\nimport { useActiveNavLinks } from '../../hooks/use-active-nav-links';\n\ntype THonorsHeader = {\n  forwardPageURI?: string | null;\n  hasMinimalHeader: boolean;\n  language: string;\n  isFluid?: boolean;\n  hideSpeedbump?: boolean;\n};\n\nexport const HonorsHeader = ({\n  forwardPageURI,\n  hasMinimalHeader,\n  isFluid,\n  hideSpeedbump,\n}: THonorsHeader) => {\n  const { asPath, locale = 'en', query } = useRouter();\n  const [user, setUser] = useState<HeaderProps['user']>();\n  const { login, logout, guestInfo, guestId } = useAuth();\n  const { isVisible, onContinue, onHide, onShow } = useSpeedbump(locale, APP_NAME);\n  const metrics = useMetrics();\n  const packages = guestInfo?.hhonors?.packages || [];\n  const isSMBMember = hasValidProductCode(packages, ['SMBA', 'SMBO', 'SMBE']);\n  const isClient = useIsClient();\n  const megaNavLinks = useActiveNavLinks({ brandCode: 'WW', language: locale || 'en', onShow });\n\n  useSmb_ProgramAccountsQuery(\n    { guestId: guestId as number, language: locale || 'en' },\n    { enabled: isSMBMember && !!guestId }\n  );\n\n  useEffect(() => {\n    setUser(\n      guestInfo\n        ? {\n            name: getGuestFirstName({ guestInfo }),\n            honorsTier: guestInfo?.hhonors?.summary?.tierName || '',\n            honorsPoints: guestInfo?.hhonors?.summary?.totalPoints || 0,\n            honorsPointsFmt: guestInfo?.hhonors?.summary?.totalPointsFmt || '',\n          }\n        : undefined\n    );\n  }, [guestInfo]);\n\n  const onSignInAttempt = useCallback(\n    async (resp: LoginResponse) => {\n      if (resp?.data) {\n        await login(resp).catch((error: Error) =>\n          logError('HONORS_HEADER', error, 'auth client login failed')\n        );\n        sendConductricsReward(Goals.SignInSuccess);\n        metrics.trackEvent(['trackUserLoggedIn', undefined, true]);\n        if (forwardPageURI) {\n          const fakeEventTarget = makeAnchorEventTarget(forwardPageURI);\n          if (!hideSpeedbump && !onShow(fakeEventTarget)) {\n            onContinue();\n            if (forwardPageURI) window.location.assign(forwardPageURI);\n          }\n        }\n      }\n    },\n    [login, metrics, forwardPageURI, onShow, hideSpeedbump, onContinue]\n  );\n\n  const onSignOut = useCallback(async () => {\n    await logout().then(() => {\n      if (asPath.includes('hgv-max')) {\n        const hgvRedirectUrl = `/${locale ?? 'en'}/hgv-max/`;\n        window.location.assign(hgvRedirectUrl);\n      }\n\n      if (asPath.includes('go-hilton')) {\n        const goHiltonRedirectUrl = `/${locale ?? 'en'}/go-hilton/`;\n        window.location.assign(goHiltonRedirectUrl);\n      }\n\n      if (asPath.includes('business')) {\n        const smbLoginRedirectUrl = `/${locale ?? 'en'}/business/login/`;\n        window.location.assign(smbLoginRedirectUrl);\n      }\n\n      if (/hilton-honors\\/guest/.test(asPath)) {\n        const redirectSearchQuery = new URLSearchParams(query as Record<string, string>);\n        redirectSearchQuery.set('forwardPageURI', encodeURIComponent(`/${locale}${asPath}`));\n\n        const redirectUrl = /guest\\/points/.test(asPath)\n          ? `/${locale ?? 'en'}/hilton-honors/points/`\n          : `/${locale}/hilton-honors/login/?${redirectSearchQuery.toString()}`;\n        window.location.assign(redirectUrl);\n      }\n    });\n  }, [asPath, locale, logout, query]);\n\n  return (\n    <>\n      {!hasMinimalHeader && isClient ? (\n        <Header\n          brand={{\n            url: `/${locale}/hilton-honors/`,\n            name: 'Hilton Honors',\n            code: 'HH',\n            onClick: onShow,\n          }}\n          isFluid={isFluid}\n          loginOptions={{\n            options: {\n              showCreatePassword: true,\n              forgetInfoLink: {\n                url: `${OHW_BASE_URL}${locale}/hilton-honors/login/forgot-information/`,\n              },\n              secureInfoLink: {\n                url: `${OHW_BASE_URL}${locale}/p/global-privacy-statement/`,\n              },\n              joinLink: {\n                url: `${OHW_BASE_URL}${locale}/hilton-honors/join/?ocode=JHTNW`,\n              },\n            },\n          }}\n          showNewHeader\n          megaNavLinks={megaNavLinks}\n          user={user}\n          onSignOut={onSignOut}\n          onSignInAttempt={onSignInAttempt}\n        />\n      ) : (\n        <Header\n          brand={{\n            url: `/${locale}/hilton-honors/`,\n            name: 'Hilton Honors',\n            code: 'HH',\n          }}\n          isFluid={isFluid}\n          user={undefined}\n          userLinks={{\n            accountLink: undefined,\n            signInLink: undefined,\n            signUpLink: undefined,\n          }}\n          data-testid=\"newosc\"\n          onSignOut={() => Promise.resolve()}\n          onSignInAttempt={() => Promise.resolve()}\n        />\n      )}\n      <Speedbump isShowing={isVisible} onClose={onHide} onContinue={onContinue} />\n    </>\n  );\n};\n","import Head from 'next/head';\nimport Footer from '../../components/footer';\nimport { baseAssetsUrl } from '../../utils/constants';\nimport { buildForwardUrl } from '../../utils/forwardUri';\nimport { useRouter } from 'next/router';\nimport { useEffect, useRef, useState } from 'react';\nimport { HonorsHeader } from '../honors-header';\nimport { useMetrics } from '../../utils/metrics';\nimport { OHW_BASE_URL } from '../../utils/env';\n\nexport const HonorsLayout = ({\n  children,\n  forwardUrl,\n  hasMinimalHeader,\n  language,\n  title,\n  isFluid,\n  hideSpeedbump,\n  metaDescription,\n}: {\n  children: React.ReactNode;\n  forwardUrl?: string;\n  hasMinimalHeader: boolean;\n  language: string;\n  title: string;\n  isFluid?: boolean;\n  hideSpeedbump?: boolean;\n  metaDescription?: string;\n}) => {\n  const { asPath, locale = 'en', pathname } = useRouter();\n  const [forwardPageURI, setForwardPageURI] = useState<string | null>(null);\n\n  useEffect(() => {\n    setForwardPageURI(buildForwardUrl(forwardUrl || `/${locale ?? 'en'}${asPath}`));\n  }, [asPath, forwardUrl, locale]);\n\n  const metrics = useMetrics();\n  const hasSetMetrics = useRef(false);\n  if (!hasSetMetrics.current) {\n    hasSetMetrics.current = true;\n    void metrics.track('honorsPageView');\n  }\n\n  const defaultFavicon = `${baseAssetsUrl}/modules/assets/img/brand/WW/favicon_WW`;\n  const defaultFaviconPng = `${baseAssetsUrl}/modules/assets/img/brand/WW/favicon_WW`;\n  return (\n    <div>\n      <Head>\n        <link\n          rel=\"icon\"\n          href={`${defaultFavicon}.svg`}\n          sizes=\"any\"\n          media=\"(prefers-color-scheme: light)\"\n        />\n        <link\n          rel=\"icon\"\n          href={`${defaultFavicon}-dark.svg`}\n          sizes=\"any\"\n          media=\"(prefers-color-scheme: dark)\"\n        />\n        <link rel=\"icon\" href={`${defaultFaviconPng}.png`} media=\"(prefers-color-scheme: light)\" />\n        <link\n          rel=\"icon\"\n          href={`${defaultFaviconPng}-dark.png`}\n          media=\"(prefers-color-scheme: dark)\"\n        />\n        <link rel=\"canonical\" href={`${OHW_BASE_URL}${language}${pathname}/`} />\n        <title>{title}</title>\n        {metaDescription ? <meta name=\"description\" content={metaDescription} /> : null}\n        <script>{`\n          var digitalData = {\n            event: [],\n            user: [\n              {\n                profile: []\n              }\n            ],\n            page: {\n              attributes: {},\n              category: {},\n              pageInfo: {}\n            }\n          }\n        `}</script>\n        <script\n          data-name=\"launch\"\n          src={process.env.TRACKING_SEED_FILE}\n          type=\"text/javascript\"\n          async\n        />\n      </Head>\n      <HonorsHeader\n        forwardPageURI={forwardPageURI}\n        hasMinimalHeader={hasMinimalHeader}\n        language={language}\n        isFluid={isFluid}\n        hideSpeedbump={hideSpeedbump}\n      />\n      {children}\n      <Footer />\n    </div>\n  );\n};\n"],"names":["STATUS_ROLE_MAPPER","Object","freeze","error","success","normal","BannerNotification","status","children","className","customIcon","rest","div","cx","aria-live","aria-atomic","data-testid","Icon","name","variant","FeatureTogglesDocument","operationName","operationString","originalOpName","useFeatureTogglesQuery","variables","options","useQuery","queryKey","NavigationDocument","useNavigationQuery","Smb_ProgramAccountsDocument","useSmb_ProgramAccountsQuery","isValidHost","host","endsWith","allowedHost","isRelative","url","startsWith","buildForwardUrl","window","location","origin","relativeUrl","forwardPageURI","forwardURL","URL","getDisplayPartnerRecaptcha","suppressRecaptcha","toggles","NHCGUEST_5857_PARTNER_RECAPTCHA_OFF","isFeatureEnabled","toggleName","find","enabled","PopupContext","React","usePopup","context","undefined","Error","getCollisions","targetRect","popoverRect","offsetLeft","offsetBottom","collisions","top","height","right","innerWidth","left","width","bottom","innerHeight","directionRight","directionLeft","directionUp","directionDown","directionX","directionY","getPopupStyles","side","styles","getXStyles","xPosition","popupOnLeft","maxWidth","overflowX","transform","visibility","getYStyles","yPosition","popupOnTop","maxHeight","overflowY","Popup","isOpen","isInitiallyOpen","id","setOpen","triggerRef","triggerClickedRef","popoverRef","Provider","popupId","closePopup","focus","element","current","setRefs","ref","value","useForkedRef","forwardedRef","localRef","PopupButton","onArrowDownWhenOpen","button","type","onKeyDown","e","key","preventDefault","stopPropagation","onMouseDown","isRightClick","nativeEvent","which","aria-expanded","aria-controls","displayName","PopupContent","style","popupStyles","popoverRefCurrent","contains","target","requestAnimationFrame","document","activeElement","addEventListener","removeEventListener","useRect","block","hidden","rafId","props","rectChanged","a","b","some","prop","observedNodes","Map","run","changedStates","forEach","state","node","newRect","getBoundingClientRect","rect","push","callbacks","cb","onResize","useRectBase","setElement","nodeRef","initialRectIsSet","initialRefIsSet","setRect","onChangeRef","onChange","useIsomorphicLayoutEffect","elem","observer","observeRect","observe","wasEmpty","size","has","get","set","hasRectChanged","unobserve","index","indexOf","splice","length","delete","cancelAnimationFrame","Footer","customerSupportLink","isFluid","legalLinks","links","footerLinks","contactPhoneLink","socialLinks","theme","isClient","useIsClient","teConsentRef","t","useTranslation","filter","Boolean","footerNavLength","footerNavHalfPoint","Math","ceil","footerNavFirstHalf","slice","footerNavSecondHalf","isDark","MutationObserver","callback","mutation","mutationList","parentElement","removeAttribute","childList","subtree","disconnect","footer","container","h2","data-osc-product","Link","underline","span","label","isNewWindow","p","ul","map","channel","li","href","rel","aria-label","img","alt","src","adaDescription","experimentationConfiguration","handleTeconsentParentProps","anchorClassName","data-conductrics-goal","goal","data-conductrics-value","suppressHydrationWarning","Date","getFullYear","FooterLinks","locale","handleClick","webAccessibility","env","onClick","customerSupport","globalPrivacy","creditCards","careers","development","media","usageAgreement","partnerAccommodations","modernSlavery","discountTermsAndConditions","termsAndConditions","tourismMediator","adChoices","useRouter","onShow","handleShowSpeedbump","onHide","isVisible","onContinue","useSpeedbump","APP_NAME","returnObjects","Speedbump","isShowing","onClose","OSCFooter","event","LoginFormEventType","DIGITALDATA","LOGIN","CLOSE","HEIGHT","frameSrc","onLoginAttempt","onLogin","title","onLoginError","readyCount","iframeRef","noOptions","keys","frameHeight","setFrameHeight","handleMessage","data","handler","JSON","stringify","digitalData","sendMessageToIframe","contentWindow","postMessage","isBrowser","iframe","onLoad","AccountIcon","forwardRef","svg","role","aria-hidden","viewBox","g","fill","path","d","Login","buttonName","buttonClassName","hideIcon","onOpen","showDialog","setShowDialog","close","handleLogin","response","Dialog","onDismiss","dialogTrigger","open","sendReward","LoginIFrame","data-e2e","GetLanguageSelectorOneLinkConfigDocument","GetLanguageSelectorHotelDataDocument","LANGUAGE_CODE_NAMES","ar","bg","cs","da","de","en","es","fi","fr","it","ja","ko","nl","no","pl","pt","ro","ru","sv","th","tr","vi","getLanguageDirection","RTL_LANGUAGES","includes","lang","toLowerCase","filterLanguagesWithLabel","languages","logWarning","getI18nSafeLangCode","code","safeLangCode","split","makeLanguageUrl","newLocale","removeUrlParams","languageUrl","replace","RegExp","pathname","sortRtlFirst","isRtl","getIsReducedMotion","matchMedia","matches","getKeyDownNavigation","elements","initiatingRef","onPreviousFocus","onNextFocus","isArrowUp","isArrowDown","isArrowLeft","isArrowRight","focusPrevious","currentIndex","findIndex","el","at","focusNext","LanguageSelector","appName","buttonOptions","ctyhocn","labelOptions","popupOptions","wrapperClassName","urlOverrides","onLanguageSelection","selectedLanguage","setSelectedLanguage","buttonHover","setButtonHover","popupButtonRef","useRef","linksContainerRef","loading","allLanguages","sortedFullSiteLanguages","sortedResOnlyLanguages","useLanguageSelectorLanguages","featureConfigsData","isFetching","featureConfigsLoading","useGetLanguageSelectorOneLinkConfigQuery","hotelDataLoading","useGetLanguageSelectorHotelDataQuery","toUpperCase","oneLinkLanguagesConfig","featureConfigs","fc","config","oneLinkLanguages","appWhitelist","whitelist","languagesObj","languagesToExclude","language","entries","appsArray","conditions","supportedLanguages","ruleEngine","RuleEngine","supportsRuleEngineConfig","cmsLanguages","hotelData","hotel","localization","languageSupport","reduce","acc","cmsFullSiteLanguages","siteUrl","cmsResOnlyLanguages","bookingUrl","ENOverride","fullSite","fullSiteLanguages","opensNewTab","override","hasOverride","resOnlyLanguages","resOnly","supportedFullSiteLanguages","netNewFullSiteLanguages","supportedResOnlyLanguages","netNewResOnlyLanguages","sort","localeCompare","useMemo","useEffect","getSafeLanguage","getSelectedLanguage","focusFirstLink","querySelector","handleLinkKeyDown","Array","from","querySelectorAll","trackLinkClick","_satellite","track","console","warn","classnames","PopupContextState","hoverStyles","onMouseEnter","onMouseLeave","DownArrowIcon","includeTitles","ListItem","linkProps","bdi","version","stroke","strokeWidth","fillRule","polyline","strokeLinecap","points","DrawerPanel","alignment","appWrapperId","interactiveElementWrapperId","panelProps","returnFocus","isRightPanelVisible","setIsRightPanelVisible","useState","body","overflow","nonInteractiveElems","nonInteractiveElement","setAttribute","drawerWrapper","els","navParentElement","nonInteractiveElements","FocusLock","disabled","onAnimationEnd","sendInteractionReward","Smb_MemberIdAndStatusDocument","trackNavClickBasedOnLabel","dropdownLabel","trackNavClick","str","replaceLang","stringValue","getNHCBP5758MVTVariant","mvts","isDefaultVariant","isGlowVariant","isSpeechBubble","Logo","brand","altText","heading","Wrapper","NavItem","listItemProps","spacedChild","NavItemVisual","icon","indicator","hasRotatedIndicator","section","wrapper","NavItemWithLink","namedIcon","isWide","NavItemWithModal","buttonLabel","buttonIcon","arrayChildren","toArray","child","rotateOnOpen","NavItemWithLinkGlow","NavigationPopupContents","subMenu","MenuList","subMenuLabel","link","MenuListItem","UserPopupContents","user","userLinks","shouldOpenAccountLinksInNewWindow","shouldSuppressHonorsAccountLinks","onSignOut","formattedHonorsPointsTotal","getLocaleFormattedNumber","honorsPoints","username","honorsTier","honorsPointsTotal","hhonorsNumber","accountLink","MegaUserLink","honorsActivityLink","honorsPointsLink","honorsProfileLink","goHiltonLink","friendsAndFamilyLink","hgvMaxLink","smbMemberLink","listProps","getDisplayedFocusableElements","focusableElements","getComputedStyle","display","offsetWidth","offsetHeight","SpeechBubble","closeSpeechBubble","showSpeechBubble","contentStyles","containerRef","onInlineButtonClick","onSpeechBubbleButtonClick","onKeyDownInlineButton","displayedFocusableElements","shiftKey","nextIndex","prototype","call","remove","parentNode","mutationsList","addedNodes","nodeType","hasAttribute","Popover","asChild","align","hideWhenDetached","onEscapeKeyDown","onOpenAutoFocus","onKeyDownCloseButton","previousIndex","onDialogOpen","setShowSpeechBubble","speechBubbleContainer","setSpeechBubbleContainer","buttonRef","onSignInClick","aria-describedby","setRef","UserNav","loginOptions","onSignInAttempt","languageSelectorOptions","shouldSuppressFindStay","shouldSuppressJoinAndSignIn","SignUpComponent","defaultOptions","signInLink","userButtonLinkRef","variant1","variant2","variant3","useFindStayTest","selection","isLoaded","useConductricsSelection","Status","OK","choice","nav","findStayLink","showNewWindowIcon","NavItemWithPopup","signUpLink","loggedInButtonRef","signUpComponent","NavItemWithModalAndGlow","NavItemWithSpeechBubble","MainNav","mainNavLinks","MegaMenu","suppressLogo","headingLevelProps","DrawerList","menuItems","nextItem","setNextItem","nextItemIndex","setNextItemIndex","selectedItem","setSelectedItem","selectedItemIndex","setSelectedItemIndex","backButtonRef","isFadingOut","setIsFadingOut","lastSelectedButton","focusOnBack","setTimeout","itemSelected","menuItem","goBack","guestInfo","isAuthenticated","useAuth","asPath","navLinks","getBaseNavLinksFromEnv","signInUrl","signUpUrl","DEFAULT_OCODE","environmentBaseUrl","isB2BMember","hhonors","isHGVMax","isOwnerHGVNew","isTMTPTeamMember","isOwner","isTeamMember","isOwnerHGV","isTMTPNonTeamMember","isTeamMemberSpouse","isFamilyAndFriends","isLongTenure10","isLongTenure20","wrapperId","isMenuOpen","setIsMenuOpen","isAccountOpen","setIsAccountOpen","userLoggedInButtonRef","activeUserLinks","useActiveUserLinks","closeMenus","handleKeyDown","addEscapeKeyListener","removeEscapeKeyListener","accountPressed","joinButtonClasses","menuPressed","HeaderLogoLink","visible","invisible","getElementById","closeMainMenu","AccountSection","closeAccount","AccountUserLink","Countries_AddressOptionsDocument","AutoComplete","ADDRESSLINE1","ADDRESSLINE2","CITY","COUNTRY","EMAIL","FAMILYNAME","GIVENNAME","NEWPASSWORD","POSTALCODE","STATE","TEL","ENABLE_SHORTEN_ENROLLMENT","Modes","Add","Edit","AddressFields","groupName","componentState","setLoadingGeocode","setError","clearErrors","setValue","watch","formState","touchedFields","register","getFieldState","useFormContext","isZipInvalid","setIsZipInvalid","enableShortenEnrollmentFlowToggle","useShortenEnrollmentToggle","names","getIsFeatureToggleEnabled","featureToggleData","featureToggles","toggle","shouldHideCityAndStateFields","getFieldKey","useCallback","field","isPostalCodeTouched","isTouched","zipCode","city","addressFieldData","useCountries_AddressOptionsQuery","states","countries","enrollmentConfig","enableShortenEnrollmentFlow","isShortenedEnrollmentEnabled","geoLocationData","isLoading","useGeocodeQuery","postalCode","test","GeocodeDocument","geocode","match","address","message","parse","graphQLErrors","fields","addressOptions","required","input","FormSelect","labelClassName","autoComplete","optional","registerOptions","validate","option","FormInput","getAutoComplete","maxLength","FormInputPassword","containerClassName","passwordCriteriaClassName","useId","helperId","errors","fieldError","touchedField","hasError","passRequirements","FormLabel","aria-invalid","mustBe","containUpper","containLower","containOneNumber","hasRequirementError","types","FormErrorIcon","circle","cy","r","strokeLinejoin","classname","defaultValue","personalInformationPage","addDefaultOption","isDisabled","phoneCountryError","helperPhoneId","errorId","phoneNumberFieldError","phoneCountryFieldError","getOptions","callingCode","selected","select","FormError","pattern","phone","FormHelpMessage","MarkdownLink","rule","isEnabled","getUrlConfig","speedbump","Markdown","mergedOptions","merge","overrides","component","MarkdownToJsx","WrappedLink","CustomerExternalParagraph","MarketingContent","selectedCountry","setMarketingOptinsSelected","marketingOptin","rules","marketingOptinRules","optIns","optIn","autoOptIn","termsAndConditionsJoin","handleMarketingOptinChange","isChecked","checked","prevSelected","i","customerTextExternal","forceBlock","_id","Paragraph","isUSA","isChina","isMarketingOffersModalOpen","setIsMarketingOffersModalOpen","form","marketingOptIn","marketingOptInForHGV","Trans","i18nKey","ActionDialog","cancel","confirm","onConfirm","onCancel","sendErrorAnalytics","metrics","formErrors","formErrorsMessages","setPageInfo","trackEvent","setFormErrors","join","setFormErrorMessages","setProperty","GRAPH_ERRORS","CONFLICT_WITH_RESOURCE","SUCCESSFULL_REGISRATION_DELAYED_CONFIRMATION","EmailSubscription","PERSONALIZED_OFFERS","HILTON_MARKETING","GRAND_VACATIONS","HHONORS_EMAIL","USMarketingOptIn","hhonorsSubscriptions","optOuts","FORM_ERRORS_TO_FILTER","oCodes","JoinForm","isMarketabilityCCSEnabled","oCode","onSuccess","headline","tForm","bannerContent","setBannerContent","marketingOptinsSelected","defaultCountryCodeData","useLanguages_DefaultCountryCodeQuery","Languages_DefaultCountryCodeDocument","useForm","mode","criteriaMode","defaultValues","country","defaultCountryCode","phoneCountry","handleSubmit","isSubmitted","hasErrors","isJapanesePage","marketingOffersValue","hasPasswordFields","loadingGeocode","isLoadingCountries","useBrand_CountriesQuery","Brand_CountriesDocument","getMarketing","getCCSMarketing","countryFilter","prohibited","createGuest","useCreateGuestMutation","useMutation","Intl","Collator","compare","marketingOptIns","updateCreateGuestMutation","email","password","marketingGrandVacations","marketingOffers","marketingConsent","marketgOptinsAutoEnrolled","optin","flatMap","subscriptionCodes","codes","addressType","enrollSourceCode","phoneNumber","phoneType","preferredLanguage","privacyRequested","subscriptions","Promise","mutate","CreateGuestDocument","errorCode","notifications","hHonorsNumber","encodedName","btoa","encodeURIComponent","firstName","encodedNum","encodedEmail","emailAddress","encodedEnroll","sessionStorage","setItem","onError","logError","generateError","getErrors","innerKey","innerValue","FormProvider","noValidate","method","onSubmit","page","handleInvalidForm","pageInfo","unset","formData","then","res","catch","fieldErrors","val","minLength","FormInputPhone","shouldMatch","MarketingContentCCS","isPending","Spinner","JoinModalButton","loginIFrameSrc","onSuccessfulLogin","onSuccessfulJoin","isModalOpen","setIsModalOpen","showJoinFormContent","setShowJoinFormContent","showLoginIframe","setShowLoginIframe","newHonorsNumber","setNewHonorsNumber","login","successMessageRef","useOrigin","setOrigin","protocol","hostname","port","handleOpenLoginIframe","handleCloseModal","handleOpenModal","h1","honorsNumber","result","HeaderMenuLink","DropdownMenu","joinModalConductricsTestAgent","onSignInLinkClick","setConductricsSelectionOK","Header","megaNavLinks","showNewHeader","commonHeaderBodyProps","joinFromModal","useJoinFromModalTest","PENDING","header","BrandHeaderBody","NewHeaderBody","OldHeaderBody","tabIndex","i18n","dir","modal","count","additionalLinks","navRef","isBeforeVisible","setBeforeVisible","isAfterVisible","setAfterVisible","scrollLeft","widthDiff","scrollWidth","navWidth","newBefore","newAfter","navRect","onNavScroll","onScroll","hasValidProductCode","guestPackages","productCodes","packageName","useFetchActiveNavLinks","brandCode","handleCreditCardClick","featureTogglesData","flags","FEATURE_TOGGLES","sections","secondaryLinks","secondaryLink","getCreditCardUrl","useActiveNavLinks","useFilterMegaNavExperiments","selections","activeNavItems","isSingleAgent","agents","isConductricsSingleSelection","agentId","findAgentsToFetch","Set","item","add","isArray","subMenuItem","filterMegaNavExperiments","experimentationAgents","filterExperiments","secondary","drawerItem","useShouldRenderExperiment","shouldRenderExperiment","toggleCheck","ENABLE_JAPANESE_CO_BRAND_PAGE_LINK","hasMinimalHeader","hideSpeedbump","query","setUser","logout","guestId","useMetrics","isSMBMember","packages","getGuestFirstName","summary","tierName","totalPoints","honorsPointsFmt","totalPointsFmt","resp","sendConductricsReward","Goals","SignInSuccess","fakeEventTarget","makeAnchorEventTarget","assign","hgvRedirectUrl","goHiltonRedirectUrl","smbLoginRedirectUrl","redirectSearchQuery","URLSearchParams","redirectUrl","toString","showCreatePassword","forgetInfoLink","OHW_BASE_URL","secureInfoLink","joinLink","resolve","HonorsLayout","forwardUrl","metaDescription","setForwardPageURI","hasSetMetrics","defaultFavicon","baseAssetsUrl","defaultFaviconPng","Head","sizes","meta","content","script","data-name","process","async","HonorsHeader"],"sourceRoot":"","ignoreList":[]}