@royaloperahouse/harmonic 0.1.1-b-test → 0.1.1-c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/atoms/Typography/Typography.d.ts +0 -1
- package/dist/harmonic.cjs.development.css +88 -209
- package/dist/harmonic.cjs.development.js +2 -3
- package/dist/harmonic.cjs.development.js.map +1 -1
- package/dist/harmonic.cjs.production.min.js +1 -1
- package/dist/harmonic.cjs.production.min.js.map +1 -1
- package/dist/harmonic.esm.js +3 -7
- package/dist/harmonic.esm.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/Typography/AltHeaders/AltHeaders.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harmonic.cjs.production.min.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/types/types.ts","../src/styles/themes.ts","../src/components/atoms/Icons/Icons.style.tsx","../src/components/atoms/Icons/SvgIcons/index.tsx","../src/components/atoms/Icons/SvgIcons/Actions/AddToMyList.svg.tsx","../src/components/atoms/Icons/SvgIcons/Arrows/Arrow.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/AudioDescription.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Back10.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/BalletAndDance.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Basket.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/BasketFull.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/BookTickets.svg.tsx","../src/components/atoms/Icons/SvgIcons/Arrows/CarouselArrow.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/ChooseDates.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Cinema.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Clips.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Clock.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Close.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Confirm.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/CreditCard.svg.tsx","../src/components/atoms/Icons/SvgIcons/Text/Delete.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Detract.svg.tsx","../src/components/atoms/Icons/SvgIcons/Arrows/DropdownArrow.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/EditMyList.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Email.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Expand.svg.tsx","../src/components/atoms/Icons/SvgIcons/12px/Expand.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/ExternalLink.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Facebook.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Favourite.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/FavouriteFull.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Filter.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/FindAScreening.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Forward10.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/FullScreen.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/GridView.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Home.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Info.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Instagram.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/List.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/ListView.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/LiveStream.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Location.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Menu.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Minimise.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Muted.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/OnMyList.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/OperaAndMusic.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Pause.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/PDF.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Phone.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Play.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Print.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Refresh.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Reminder.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Remove.svg.tsx","../src/components/atoms/Icons/SvgIcons/12px/Remove.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Restart.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Search.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Seat.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Secure.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Settings.svg.tsx","../src/components/atoms/Icons/SvgIcons/Text/Shift.svg.tsx","../src/components/atoms/Icons/SvgIcons/Text/Space.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Standing.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Star.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Subscribe.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Subtitles.svg.tsx","../src/components/atoms/Icons/SvgIcons/12px/Tick.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Tickets.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Tiktok.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Trailer.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Twitter.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/User.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/UserSignedIn.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Volume.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Watch.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Wheelchair.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/X.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Youtube.svg.tsx","../src/components/atoms/Icons/Icons.tsx","../src/components/atoms/Badge/Badge.style.tsx","../src/types/carousel.ts","../src/types/image.ts","../src/types/tickbox.ts","../src/types/buttonTypes.ts","../src/types/information.ts","../src/components/atoms/Badge/StreamBadge.tsx","../src/components/atoms/Badge/CinemaBadge.tsx","../src/styles/viewports.ts","../src/components/atoms/Buttons/Button.style.tsx","../src/components/atoms/Buttons/ButtonIconWrapper.style.tsx","../src/components/atoms/Buttons/Button.tsx","../src/components/atoms/Buttons/Primary/PrimaryButtonWrapper.style.tsx","../src/components/atoms/Buttons/Primary/PrimaryButton.tsx","../src/components/atoms/Buttons/Secondary/SecondaryButtonWrapper.style.tsx","../src/components/atoms/Buttons/Secondary/SecondaryButton.tsx","../src/components/atoms/Buttons/Tertiary/TertiaryButton.style.tsx","../src/components/atoms/Buttons/Tertiary/TertiaryButton.tsx","../src/styles/zIndexes.ts","../src/components/atoms/Dropdown/Dropdown.style.tsx","../src/components/atoms/ControlledDropdown/ControlledDropdown.style.tsx","../src/components/atoms/ControlledDropdown/ControlledDropdown.tsx","../src/components/atoms/Grid/Grid.tsx","../src/components/atoms/Grid/GridItem.tsx","../src/components/atoms/ImageAspectRatioWrapper/ImageAspectRatioWrapper.tsx","../src/components/atoms/Progress/Progress.styles.tsx","../src/components/atoms/Progress/Progress.tsx","../src/components/atoms/Radio/Radio.style.tsx","../src/components/atoms/Typography/Typography.style.tsx","../src/components/atoms/Typography/Typography.tsx","../src/components/atoms/TextLogo/TextLogo.tsx","../src/components/atoms/Radio/Radio.tsx","../src/components/atoms/Radio2/Radio2.style.tsx","../src/components/atoms/Radio2/Radio2.tsx","../src/components/atoms/RotatorButtons/RotatorButtons.style.tsx","../src/components/atoms/RotatorButtons/RotatorButtons.tsx","../src/components/atoms/SecondaryLogo/SecodaryLogo.style.tsx","../src/components/atoms/SectionSplitter/SectionSplitter.style.tsx","../src/components/atoms/SponsorLogo/SponsorLogo.style.tsx","../src/components/atoms/SponsorLogo/SponsorLogo.tsx","../src/components/atoms/Sponsorship/Sponsorship.style.tsx","../src/components/atoms/Sponsorship/Sponsorship.tsx","../src/components/atoms/Tab/Tab.style.tsx","../src/components/atoms/Tab/Tab.tsx","../src/components/atoms/TabLink/TabLink.style.tsx","../src/components/atoms/TabLink/TabLink.tsx","../src/components/atoms/TextArea/TextArea.style.tsx","../src/components/atoms/TextField/TextField.style.tsx","../src/components/atoms/TextField/TextField.tsx","../src/components/atoms/TextField/TextFieldLegacy.style.tsx","../src/components/atoms/TextLink/TextLink.style.tsx","../src/components/atoms/TextLink/TextLink.tsx","../src/components/atoms/Tickbox/Tickbox.style.tsx","../src/components/atoms/Tickbox2/Tickbox2.style.tsx","../src/components/atoms/Tickbox2/Tickbox2.tsx","../src/components/atoms/Timer/Timer.style.tsx","../src/components/atoms/Timer/Timer.tsx","../src/components/atoms/TypeTags/TypeTags.style.tsx","../src/components/atoms/TypeTags/TypeTags.tsx","../src/components/atoms/VideoControls/VideoControls.style.tsx","../src/components/atoms/VideoControls/VideoControls.tsx","../src/components/atoms/Stepper/Stepper.style.tsx","../src/components/organisms/Navigation/Navigation.style.tsx","../src/components/atoms/Logo/Logo.style.tsx","../src/components/atoms/Logo/Logo.tsx","../src/components/molecules/NavTop/NavTop.style.tsx","../src/components/molecules/Basket/Basket.style.tsx","../src/components/molecules/Basket/helpers.ts","../src/components/molecules/Basket/Basket.tsx","../src/components/molecules/Basket/hooks.tsx","../src/components/atoms/Search/Search.style.tsx","../src/components/atoms/Search/Search.tsx","../src/components/atoms/Dropdown/Dropdown.tsx","../src/components/atoms/Account/Account.tsx","../src/components/molecules/NavTop/NavTop.tsx","../src/components/molecules/Tabs/Tabs.style.tsx","../src/components/molecules/Tabs/Tabs.tsx","../src/components/molecules/SearchBar/SearchBar.style.tsx","../src/components/molecules/SearchBar/SearchBar.tsx","../src/components/organisms/Footer/Footer.style.tsx","../src/components/molecules/PolicyLinks/PolicyLinks.style.tsx","../src/components/molecules/PolicyLinks/PolicyLinks.tsx","../src/components/molecules/ContactNewsletter/ContactNewsletter.style.tsx","../src/components/molecules/ContactNewsletter/ContactNewsletter.tsx","../src/components/organisms/AnchorTabBar/AnchorTabBar.style.tsx","../src/components/organisms/TitleWithCTA/TitleWithCTA.style.tsx","../src/components/molecules/UpsellCard/UpsellCard.style.tsx","../src/components/molecules/UpsellCard/OfferText.tsx","../src/helpers/formatStrings.ts","../src/components/molecules/UpsellCard/UpsellCard.tsx","../src/components/molecules/UpsellCards/UpsellCards.style.tsx","../src/components/molecules/UpsellCards/UpsellCards.tsx","../src/components/organisms/UpsellSection/UpsellSection.style.tsx","../src/components/molecules/Accordion/Accordion.style.tsx","../src/components/molecules/Accordion/Accordion.tsx","../src/components/molecules/Accordions/Accordions.style.tsx","../src/styles/ThemeProvider.tsx","../src/components/molecules/AnnouncementBanner/AnnouncementBanner.style.tsx","../src/components/atoms/Buttons/Auxiliary/AuxiliaryButton.style.tsx","../src/components/atoms/Buttons/Auxiliary/AuxiliaryButton.tsx","../src/components/molecules/Card/Card.style.tsx","../src/helpers/htmlStrings.ts","../src/components/molecules/Card/Card.tsx","../src/components/molecules/Cards/Cards.style.tsx","../src/components/molecules/ContactCard/ContactCard.style.tsx","../src/components/molecules/ContentSummary/ContentSummary.style.tsx","../src/components/molecules/Editorial/Editorial.style.tsx","../src/components/molecules/Information/Information.style.tsx","../src/components/molecules/Information/InfoCta.tsx","../src/components/molecules/PageHeading/PageHeading.style.tsx","../src/components/molecules/PageHeading/PageHeading.tsx","../src/components/molecules/PageHeading/Impact/Impact.style.tsx","../src/components/molecules/PageHeading/Panel/Panel.style.tsx","../src/components/molecules/PageHeading/Stream/Stream.style.tsx","../src/components/molecules/PageHeading/Compact/Compact.style.tsx","../src/components/molecules/PageHeading/Compact/components/CompactHeaderBranding.tsx","../src/helpers/urls.ts","../src/helpers/devices.ts","../src/components/molecules/PageHeading/Compact/Compact.tsx","../src/components/molecules/Pagination/Pagination.style.tsx","../src/components/molecules/Pagination/Pagination.tsx","../src/components/molecules/PeopleListing/PeopleListing.style.tsx","../src/components/molecules/PeopleListing/Person.tsx","../src/components/molecules/PeopleListing/PeopleListing.tsx","../src/components/molecules/PeopleListing/CreditListing/CreditListing.style.tsx","../src/components/molecules/PromoWithTags/PromoWithTags.style.tsx","../src/components/molecules/PromoWithTags/PromoWithTags.tsx","../src/components/molecules/PromoWithTitle/PromoWithTitle.style.tsx","../src/components/molecules/VideoWithControls/VideoWithControls.style.tsx","../src/components/molecules/VideoWithControls/VideoWithControls.tsx","../src/helpers/generateDomElementId.ts","../src/helpers/aspectRatio.ts","../src/components/molecules/PromoWithTitle/PromoChild.tsx","../src/components/molecules/RadioGroup/RadioGroup.style.tsx","../src/components/molecules/RadioGroup2/RadioGroup2.style.tsx","../src/components/molecules/StatusBanner/StatusBanner.style.tsx","../src/components/molecules/SectionTitle/SectionTitle.style.tsx","../src/components/molecules/Select/Select.style.tsx","../src/components/molecules/Select2/Select2.style.tsx","../src/components/molecules/Select2/Select2.tsx","../src/components/molecules/TextOnly/TextOnly.style.tsx","../src/components/molecules/TextOnly/TextOnly.tsx","../src/components/molecules/ImageWithCaption/ImageWithCaption.style.tsx","../src/components/molecules/Quote/Quote.style.tsx","../src/components/molecules/MiniCard/MiniCard.style.tsx","../src/components/molecules/ReadMore/ReadMore.style.tsx","../src/components/molecules/AuxiliaryNav/AuxiliaryNav.styles.tsx","../src/components/molecules/AuxiliaryNav/AuxiliaryNav.tsx","../src/components/molecules/PasswordStrength/PasswordStrength.styles.tsx","../src/components/molecules/Table/Table.style.tsx","../src/components/molecules/Table/components/TableHelpers.tsx","../src/components/molecules/Table/components/TableCell.tsx","../src/components/molecules/Table/components/TableRow.tsx","../src/components/organisms/LiveChat/LiveChat.tsx","../src/components/organisms/StickyBar/StickyBar.style.tsx","../src/components/organisms/ModalWindow/ModalWindow.style.tsx","../src/components/organisms/ModalWindow/ModalWindow.tsx","../src/styles/GlobalStyles.tsx","../src/components/molecules/Accordions/Accordions.tsx","../src/components/organisms/AnchorTabBar/AnchorTabBar.tsx","../src/components/molecules/AnnouncementBanner/AnnouncementBanner.tsx","../src/components/molecules/Cards/Cards.tsx","../src/components/molecules/ContactCard/ContactCard.tsx","../src/components/molecules/ContentSummary/ContentSummary.tsx","../src/components/molecules/PeopleListing/CreditListing/CreditListing.tsx","../src/helpers/arrays.ts","../src/components/molecules/Editorial/Editorial.tsx","../src/components/organisms/Footer/Footer.tsx","../src/components/molecules/ImageWithCaption/ImageWithCaption.tsx","../src/components/molecules/Information/Information.tsx","../src/components/molecules/MiniCard/MiniCard.tsx","../src/components/organisms/Navigation/Navigation.tsx","../src/components/molecules/PageHeading/Cinema/Cinema.tsx","../src/components/molecules/PageHeading/Core/Core.tsx","../src/components/molecules/PageHeading/Impact/Impact.tsx","../src/components/molecules/PageHeading/Panel/Panel.tsx","../src/components/molecules/PageHeading/Stream/Stream.tsx","../src/components/molecules/PasswordStrength/PasswordStrength.tsx","../src/components/molecules/PromoWithTitle/PromoWithTitle.tsx","../src/components/molecules/Quote/Quote.tsx","../src/components/molecules/RadioGroup/RadioGroup.tsx","../src/components/molecules/RadioGroup2/RadioGroup2.tsx","../src/components/molecules/ReadMore/ReadMore.tsx","../src/helpers/keyboards.ts","../src/components/atoms/SecondaryLogo/SecondaryLogo.tsx","../src/components/atoms/SectionSplitter/SectionSplitter.tsx","../src/components/molecules/SectionTitle/SectionTitle.tsx","../src/components/molecules/Select/Select.tsx","../src/components/molecules/Select2Async/Select2Async.tsx","../src/components/molecules/StatusBanner/StatusBanner.tsx","../src/components/atoms/Stepper/Stepper.tsx","../src/components/organisms/StickyBar/StickyBar.tsx","../src/components/molecules/Table/Table.tsx","../src/components/atoms/TextArea/TextArea.tsx","../src/components/atoms/TextField/TextFieldLegacy.tsx","../src/components/atoms/Tickbox/Tickbox.tsx","../src/components/organisms/TitleWithCTA/TitleWithCTA.tsx","../src/components/organisms/UpsellSection/UpsellSection.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ReactNode, AnchorHTMLAttributes, MouseEventHandler, ReactElement } from 'react';\nimport { StyledProps } from 'styled-components';\nimport { IconNameType, DirectionType } from './iconTypes';\nimport { TypographyLevel, TypographyType } from './typography';\n\n// eslint-disable-next-line no-shadow\nexport enum Colors {\n White = 'white',\n Black = 'black',\n DarkGrey = 'darkgrey',\n MidGrey = 'midgrey',\n LightGrey = 'lightgrey',\n Trasparent = 'transparent',\n ErrorState = 'errorstate',\n MediumState = 'mediumstate',\n GoodState = 'goodstate',\n Primary = 'primary',\n Core = 'core',\n Stream = 'stream',\n Cinema = 'cinema',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum ThemeType {\n Core = 'core',\n Stream = 'stream',\n Cinema = 'cinema',\n Schools = 'schools',\n}\n\nexport interface IThemeProviderProps {\n /**\n * The theme to use for the child elements\n */\n theme: ThemeType;\n children: ReactNode;\n}\n\nexport interface ILogoProps {\n /**\n * The id value\n */\n id?: string;\n /**\n * The data-roh value\n */\n dataRoh?: string;\n /**\n * The link of the logo\n */\n urlLink?: string;\n /**\n * The image for desktop\n */\n desktopImage: string;\n /**\n * The image for other devices\n */\n devicesImage?: string;\n /**\n * The title of the image\n */\n title?: string;\n /**\n * The title of the image\n */\n altText?: string;\n}\n\nexport interface IOptionItem {\n /**\n * The text of the option\n */\n option: string;\n /**\n * The link of the option\n */\n optionLink: string;\n}\n\nexport interface ITabProps {\n children?: ReactNode;\n /**\n * The value of the title\n */\n title?: string;\n /**\n * The link of the title\n */\n titleLink?: string;\n /**\n * To keep selected the title of the Tab\n */\n selected?: boolean;\n /**\n * The name of the icon\n */\n iconName?: IconNameType;\n /**\n * If options are available in mobile devices\n */\n withOptionsInMobile?: boolean;\n /**\n * The orientation of the icon\n */\n withIcon?: 'right' | 'left' | 'none';\n /**\n * If show text in mobile devices\n */\n withTextInMobile?: boolean;\n /**\n * Function to be called when click\n */\n onClick?: (e: string) => void;\n /**\n * Function to be called when focus event is fired\n */\n onFocus?: () => void;\n /**\n * Function to be called when it is needed to back to initial state\n */\n onReset?: () => void;\n /**\n * The primary color\n */\n colorPrimary?: string;\n}\n\nexport interface IDropdownProps {\n /**\n * The value of the title\n */\n title?: string;\n /**\n * The orientation of the icon\n */\n withIcon?: 'right' | 'left' | 'none';\n /**\n * The link of the title\n */\n titleLink?: string;\n /**\n * To keep selected the title of the Dropdown\n */\n selected?: boolean;\n /**\n * An Array with the options in the Dropdown\n */\n options?: IOptionItem[];\n /**\n * The name of the icon\n */\n iconName?: IconNameType;\n /**\n * Set if the behaviour of Dropdown change in mobile devices\n */\n isMobileBehaviour?: boolean;\n /**\n * If options are available in mobile devices\n */\n withOptionsInMobile?: boolean;\n /**\n * Function to be called when click\n */\n onChange?: (e: string) => void;\n /**\n * The primary color\n */\n colorPrimary?: string;\n}\n\nexport interface ITabsProps {\n /**\n * An Array with Dropdown components\n */\n items?: IDropdownProps[];\n /**\n * Function to be called when click on showmenu\n */\n onShowMenu?: (e: boolean) => void;\n /**\n * Show menu in mobile devices\n */\n showMenu?: boolean;\n /**\n * Function to be called when click\n */\n onChange?: (e: string) => void;\n /**\n * The primary color\n */\n colorPrimary?: string;\n}\n\nexport interface IDropdowItemProps extends StyledProps<AnchorHTMLAttributes<HTMLAnchorElement>> {\n /**\n * The primary color\n */\n colorPrimary?: string;\n}\n\nexport interface IControlledDropdownProps {\n /**\n * Text displayed as heading in the dropdown\n */\n text: string;\n /**\n * options to display\n */\n options?: IOptionItem[];\n /**\n * Color for active status (default primary)\n */\n activeColor?: string;\n /**\n * Set if the dropdown is active or not\n */\n active?: boolean;\n /**\n * Callback called when header is clicked\n */\n onClick: () => void;\n /**\n * Callback called when an option is clicked\n */\n onOptionClick?: (s: string) => void;\n /**\n * Mouse enter event handler\n */\n onMouseEnter?: () => void;\n /**\n * Mouse leave event handler\n */\n onMouseLeave?: () => void;\n /**\n * Callback called to reset dropdown behaviour\n */\n onReset?: () => void;\n /**\n * Callback called when main link or option are focused\n */\n onFocus?: () => void;\n /**\n * Callback called when main link or last option lose focus\n */\n onBlur?: () => void;\n}\n\nexport interface IControlledDropdownHeaderProps extends StyledProps<any> {\n /**\n * Color for active status (default primary)\n */\n activeColor: string;\n /**\n * Set if the dropdown is active or not\n */\n active: boolean;\n}\n\nexport type ListingPerson = {\n /**\n * Person name\n */\n name: string;\n /**\n * Link to person profile\n */\n link?: string;\n /**\n * String separator\n */\n headshot?: string;\n /**\n * Headshot image url\n */\n separator?: string;\n /**\n * Use headshot or not\n */\n useHeadshot: boolean;\n /**\n * Replacement text\n */\n replacement?: string;\n};\n\nexport type ListingRole = {\n /**\n * Role name\n */\n name: string;\n /**\n * List of people in the role\n */\n people: ListingPerson[];\n /**\n * Data roh param\n */\n dataROH?: string;\n};\n\nexport interface IPeopleListing {\n /**\n * List of roles to be displayed\n */\n roles: ListingRole[];\n}\n\nexport interface IPagination {\n /**\n * The total number of pages\n */\n pageCount: 10;\n /**\n * The current page\n */\n currentPage: 1;\n /**\n * The url to base page links on\n */\n baseUrl: '/';\n}\n\nexport interface INodeProps {\n /**\n * The current object of Node\n */\n current: any;\n}\n\nexport interface IGridItemProps extends StyledProps<any> {\n /**\n * The column in which to place the child elements\n */\n columnStartDesktop: number;\n /**\n * The number of columns over which the child elements will span\n */\n columnSpanDesktop?: number;\n /**\n * The column in which to place the child elements in tablet devices\n */\n columnStartDevice: number;\n /**\n * The number of columns over which the child elements will span in tablet devices\n */\n columnSpanDevice?: number;\n /**\n * The column in which to place the child elements in small mobile devices\n */\n columnStartSmallDevice?: number;\n /**\n * The number of columns over which the child elements will span in small mobile devices\n */\n columnSpanSmallDevice?: number;\n}\n\nexport interface ISponsorLogoProps {\n /**\n * Color for the logo\n */\n colorLogo?: string;\n /**\n * Color for the background of the logo\n */\n colorBackground?: string;\n}\n\nexport interface ISponsorshipProps {\n /**\n * Source URL for Sponsorship IFRAME.\n */\n src?: string;\n /**\n * Alt Text for image.\n */\n altText?: string;\n /**\n * Used for Analytics.\n */\n dataRoh?: string;\n /**\n * Used for Accessibility.\n */\n title?: string;\n /**\n * Used to determine that there is custom data for Sponsorship\n */\n isCustomImage?: boolean;\n}\n\nexport interface ITextLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n children: ReactNode;\n /**\n * Function to be called when a button is clicked\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n /**\n * Name of the icon to be used in the button\n */\n iconName?: IconNameType;\n /**\n * Direction of the icon used in the button\n */\n iconDirection?: DirectionType;\n /**\n * Color of text and icon\n */\n color?: Colors;\n}\n\nexport interface ISectionSplitterProps {\n /**\n * Set the width of the Section to full\n */\n fullWidth?: boolean;\n}\nexport interface ITypeTagsProps {\n /**\n * List of Type Tags to display.\n */\n list: string[];\n}\n\nexport interface ITextOnlyProps {\n /**\n * Text placed in the TextOnly component\n */\n text: string;\n /**\n * Set columnstart in Desktop\n */\n columnStartDesktop?: number;\n /**\n * Set columnSpan in Desktop\n */\n columnSpanDesktop?: number;\n /**\n * Set columnstart in Device\n */\n columnStartDevice?: number;\n /**\n * Set columnSpam in Device\n */\n columnSpanDevice?: number;\n}\n\nexport type SectionTitleSize = 'small' | 'large';\n\nexport interface ISectionTitleProps {\n /**\n * Title to display.\n */\n title: string;\n /**\n * Size of title to display - by default small, which renders as an H2 (and large is an H1).\n */\n size?: SectionTitleSize;\n /**\n * Optional description that can be rendered below the title.\n */\n description?: string;\n /**\n * Semantic level of the title.\n */\n semanticLevel?: TypographyLevel;\n}\n\nexport interface ILogosProps {\n /**\n * Color used to fill logos.\n */\n fillColor?: Colors.White | Colors.Black;\n /**\n * Text aligned logo variants.\n */\n align?: 'left' | 'center';\n /**\n * Fill color inversion.\n */\n invert?: boolean;\n}\nexport interface ILogosStyledProps extends StyledProps<any> {\n /**\n * Color used to fill logos.\n */\n fillColor?: Colors.White | Colors.Black;\n}\nexport interface IAccordionProps {\n /**\n * Title to display.\n */\n title?: string;\n /**\n * The component to be wrapped into the accordion\n */\n children?: ReactNode;\n /**\n * Components wrapped into the accordion that are always visible\n */\n visibleStandfirst?: ReactNode;\n /**\n * Set if accordions are stacked\n */\n showLine?: boolean;\n /**\n * Set init open\n */\n initOpen?: boolean;\n /**\n * Set content type - header or subtitle\n */\n contentType?: TypographyType;\n /**\n * Set display level - aesthetic\n */\n displayLevel?: TypographyLevel;\n /**\n * Set semantic level - not to be used for aesthetic\n */\n semanticLevel?: TypographyLevel;\n}\n\nexport interface IAccordionsProps {\n /**\n * Array of Accordion component\n */\n items: IAccordionProps[];\n}\n\nexport interface IAnnouncementBannerProps {\n /**\n * Announcement banner title\n */\n title: string;\n /**\n * Announcement message text\n */\n announcementText: string;\n /**\n * Date and time text\n */\n time: string;\n /**\n * Icon graphic\n */\n icon: 'Info' | 'Clock' | 'Location' | 'Reminder' | 'Star';\n}\n\nexport interface IReadMoreProps {\n /**\n * Read More Component title\n */\n title?: string;\n /**\n * Intro text to be truncated\n */\n introText: ReactNode;\n /**\n * Component to be wrapped in ReadMore comp\n */\n fullText: ReactNode;\n /**\n * Set init open\n */\n initOpen: boolean;\n /**\n * Custom text for link when closed\n */\n showMoreText: string;\n /**\n * Custom text for link when opened\n */\n hideText: string;\n /**\n * Character limit\n */\n characterLimit?: number;\n /**\n * Optional truncation\n */\n truncate?: boolean;\n}\n\nexport interface IStatusBannerProps {\n /**\n * Status banner text\n */\n statusText: string;\n /**\n * Set init visibility\n */\n visibility: boolean;\n}\n\nexport interface IVideoControlsProps {\n /**\n * Video element id\n */\n videoElementId: string;\n /**\n * Id of an element containing both the VideoControls and the video HTML element\n * Used to request fullscreen.\n */\n videoContainerId?: string;\n /**\n * Default muted\n */\n muted: boolean;\n /**\n * Default playing\n */\n autoPlay: boolean;\n /**\n * Hide volume\n */\n soundControl?: boolean;\n /**\n * Hide fullscreen. If false, provide a videoContainerId.\n */\n fullScreenOption?: boolean;\n /**\n * Loops\n */\n loop?: boolean;\n}\n\nexport type IVideoWithControlsSettings = Omit<IVideoControlsProps, 'videoElementId' | 'videoContainerId'>;\n\nexport interface IVideoWithControlsProps {\n /**\n * Video element\n */\n video: ReactElement<HTMLVideoElement>;\n /**\n * Settings for video controls\n */\n settings: IVideoWithControlsSettings;\n}\n\nexport type Image = Pick<HTMLImageElement, 'alt' | 'src'>;\n\n// eslint-disable-next-line no-shadow\nexport enum LinkTarget {\n /**\n * Opens the link in the same frame or tab as the current page.\n */\n Self = '_self',\n /**\n * Opens the link in a new browser tab or window, depending on the browser settings.\n */\n Blank = '_blank',\n}\n","const colors = {\n core: '#C8102E',\n stream: '#1866DC',\n cinema: '#1A1A1A',\n};\n\nconst commonColors = {\n black: '#1A1A1A',\n white: '#FFFFFF',\n darkgrey: '#727272',\n midgrey: '#B2B2B2',\n lightgrey: '#F0F0F0',\n error: '#C8102E',\n medium: '#D79233',\n good: '#4EAA33',\n progress: '#1866DC',\n navigation: '#C8102E',\n lemonChiffon: '#fffbbe',\n lapisLazuli: '#0060a0',\n blue: '#1866DC',\n red: '#C8102E',\n};\n\nexport const fontFamilies = {\n adobeGaramondPro: 'adobe-garamond-pro',\n adobeGaramondProItalics: 'adobe-garamond-pro',\n gothamSSmMedium: '\"Gotham SSm A\",\"Gotham SSm B\",\"Montserrat\",sans-serif',\n gothamSSm: '\"Gotham SSm A\",\"Gotham SSm B\",\"Montserrat\",sans-serif',\n sabonNextLTProRegular: 'Sabon Next LT Pro Regular',\n sabonNextLTProRegularItalics: 'Sabon Next LT Pro Regular Italics',\n sansSerifFallback: 'Montserrat, sans-serif',\n};\n\nconst common = {\n fonts: {\n desktop: {\n sizes: {\n headers: {\n 1: '96px',\n 2: '68px',\n 3: '44px',\n 4: '34px',\n 5: '24px',\n 6: '20px',\n },\n altHeaders: {\n 3: '44px',\n 4: '34px',\n 5: '24px',\n 6: '20px',\n },\n subtitles: {\n 1: '18px',\n 2: '14px',\n },\n titleDescription: '20px',\n body: {\n 1: '19px',\n 2: '16px',\n 3: '14px',\n },\n listing: '19px',\n buttons: '14px',\n overline: {\n 1: '14px',\n 2: '12px',\n 3: '10px',\n 4: '8px',\n },\n navigation: '13px',\n search: '24px',\n },\n letterSpacing: {\n headers: {\n 1: '2px',\n 2: '1px',\n 3: '1px',\n 4: '1px',\n 5: '1px',\n 6: '1px',\n },\n altHeaders: {\n 3: 'normal',\n 4: 'normal',\n 5: 'normal',\n 6: 'normal',\n },\n overline: {\n 1: '1px',\n 2: '1px',\n 3: '1px',\n 4: '1px',\n },\n subtitles: {\n 1: '1px',\n 2: '1px',\n },\n body: {\n 1: 'normal',\n 2: 'normal',\n 3: 'normal',\n },\n navigation: '1px',\n },\n lineHeights: {\n headers: {\n 1: '110px',\n 2: '72px',\n 3: '48px',\n 4: '40px',\n 5: '30px',\n 6: '28px',\n },\n altHeaders: {\n 3: '48px',\n 4: '44px',\n 5: '30px',\n 6: '28px',\n },\n subtitles: {\n 1: '22px',\n 2: '22px',\n },\n titleDescription: '28px',\n body: {\n 1: '26px',\n 2: '22px',\n 3: '20px',\n },\n peopleListing: '24px',\n listing: '36px',\n buttons: '20px',\n overline: {\n 1: '16px',\n 2: '14px',\n 3: '12px',\n 4: '10px',\n },\n navigation: '16px',\n },\n families: {\n headers: fontFamilies.gothamSSmMedium,\n altHeaders: fontFamilies.adobeGaramondPro,\n subtitles: fontFamilies.gothamSSmMedium,\n body: fontFamilies.adobeGaramondPro,\n bodyItalics: fontFamilies.adobeGaramondProItalics,\n listing: fontFamilies.adobeGaramondPro,\n listingItalics: fontFamilies.adobeGaramondProItalics,\n buttons: fontFamilies.gothamSSm,\n overline: fontFamilies.gothamSSmMedium,\n navigation: fontFamilies.gothamSSmMedium,\n peopleListingRole: fontFamilies.gothamSSm,\n search: fontFamilies.adobeGaramondPro,\n },\n weights: {\n headers: {\n 1: '500',\n 2: '500',\n 3: '500',\n 4: '500',\n 5: '500',\n 6: '500',\n },\n altHeaders: {\n 3: 'normal',\n 4: 'normal',\n 5: 'normal',\n 6: 'normal',\n },\n buttons: '400',\n overline: {\n 1: '500',\n 2: '500',\n 3: '500',\n 4: '500',\n },\n body: {\n 1: '400',\n 2: '400',\n 3: '400',\n },\n subtitles: {\n 1: '500',\n 2: '500',\n },\n navigation: '500',\n },\n transforms: {\n headers: 'uppercase',\n altHeaders: 'none',\n overline: 'uppercase',\n subtitles: 'uppercase',\n body: 'none',\n navigation: 'uppercase',\n },\n fontFeatureSettings: {\n headers: \"'tnum' on, 'lnum' on\",\n altHeaders: \"'pnum' on, 'onum' on\",\n overline: \"'tnum' on, 'lnum' on, 'liga' off, 'calt' off\",\n subtitles: \"'tnum' on, 'lnum' on\",\n body: \"'pnum' on, 'onum' on, 'liga' off\",\n navigation: \"'tnum' on, 'lnum' on, 'liga' off, 'calt' off\",\n },\n wordBreak: {\n headers: 'break-word',\n altHeaders: 'break-word',\n overline: 'break-word',\n subtitles: 'break-word',\n body: 'break-word',\n },\n margins: {\n headers: {\n // These margins use the Chrome defaults to enable proper fallbacks when using semantic level -\n // https://www.w3schools.com/cssref/css_default_values.php\n 1: '0.67em 0',\n 2: '0.83em 0',\n 3: '1em 0',\n 4: '1.33em 0',\n 5: '1.67em 0',\n 6: '2.33em 0',\n },\n },\n },\n mobile: {\n sizes: {\n headers: {\n 1: '38px',\n 2: '30px',\n 3: '26px',\n 4: '24px',\n 5: '20px',\n 6: '17px',\n },\n altHeaders: {\n 3: '26px',\n 4: '24px',\n 5: '20px',\n 6: '17px',\n },\n subtitles: {\n 1: '16px',\n 2: '14px',\n },\n titleDescription: '17px',\n body: {\n 1: '17px',\n 2: '12px',\n 3: '11px',\n },\n listing: '16px',\n buttons: '14px',\n overline: {\n 1: '14px',\n 2: '12px',\n 3: '10px',\n 4: '8px',\n },\n navigation: '13px',\n search: '20px',\n },\n letterSpacing: {\n headers: {\n 1: '1px',\n 2: '1px',\n 3: '1px',\n 4: '1px',\n 5: '1px',\n 6: '1px',\n },\n altHeaders: {\n 3: 'normal',\n 4: 'normal',\n 5: 'normal',\n 6: 'normal',\n },\n overline: {\n 1: '1px',\n 2: '1px',\n },\n subtitles: {\n 1: '1px',\n 2: '1px',\n },\n body: {\n 1: 'normal',\n 2: 'normal',\n 3: 'normal',\n },\n navigation: '1px',\n },\n lineHeights: {\n headers: {\n 1: '42px',\n 2: '34px',\n 3: '30px',\n 4: '28px',\n 5: '28px',\n 6: '24px',\n },\n altHeaders: {\n 3: '30px',\n 4: '28px',\n 5: '28px',\n 6: '24px',\n },\n subtitles: {\n 1: '24px',\n 2: '18px',\n },\n titleDescription: '24px',\n body: {\n 1: '24px',\n 2: '18px',\n 3: '16px',\n },\n listing: '34px',\n buttons: '20px',\n overline: {\n 1: '16px',\n 2: '14px',\n },\n navigation: '16px',\n },\n families: {\n headers: fontFamilies.gothamSSm,\n altHeaders: fontFamilies.adobeGaramondPro,\n subtitles: fontFamilies.gothamSSmMedium,\n body: fontFamilies.adobeGaramondPro,\n bodyItalics: fontFamilies.adobeGaramondProItalics,\n listing: fontFamilies.adobeGaramondPro,\n listingItalics: fontFamilies.adobeGaramondProItalics,\n buttons: fontFamilies.gothamSSm,\n overline: fontFamilies.gothamSSmMedium,\n navigation: fontFamilies.gothamSSmMedium,\n search: fontFamilies.adobeGaramondPro,\n },\n weights: {\n headers: {\n 1: '500',\n 2: '500',\n 3: '500',\n 4: '500',\n 5: '500',\n 6: '500',\n },\n altHeaders: {\n 3: 'normal',\n 4: 'normal',\n 5: 'normal',\n 6: 'normal',\n },\n buttons: '400',\n overline: {\n 1: '500',\n 2: '500',\n },\n body: {\n 1: '400',\n 2: '400',\n 3: '400',\n },\n subtitles: {\n 1: '500',\n 2: '500',\n },\n navigation: '500',\n },\n transforms: {\n headers: 'uppercase',\n altHeaders: 'none',\n overline: 'uppercase',\n subtitles: 'uppercase',\n body: 'none',\n navigation: 'uppercase',\n },\n fontFeatureSettings: {\n headers: \"'tnum' on, 'lnum' on\",\n altHeaders: \"'pnum' on, 'onum' on\",\n overline: \"'tnum' on, 'lnum' on, 'liga' off, 'calt' off\",\n subtitles: \"'tnum' on, 'lnum' on\",\n body: \"'pnum' on, 'onum' on, 'liga' off\",\n navigation: \"'tnum' on, 'lnum' on, 'liga' off, 'calt' off\",\n },\n wordBreak: {\n headers: 'break-word',\n altHeaders: 'break-word',\n overline: 'break-word',\n subtitles: 'break-word',\n body: 'break-word',\n },\n },\n tablet: {\n sizes: {\n headers: {\n 6: '17px',\n },\n altHeaders: {\n 4: '24px',\n },\n body: {\n 1: '17px',\n },\n },\n },\n },\n spacing: {\n 1: '4px',\n 2: '8px',\n 3: '12px',\n 4: '16px',\n 5: '20px',\n 6: '24px',\n 7: '28px',\n 8: '32px',\n 9: '36px',\n 10: '40px',\n 12: '48px',\n 15: '60px',\n 18: '72px',\n 20: '80px',\n 30: '120px',\n 35: '140px',\n 40: '160px',\n 45: '180px',\n 50: '200px',\n },\n grid: {\n mobile: {\n margin: '20px',\n outerMargin: '0',\n gap: '12px',\n },\n tablet: {\n margin: '32px',\n outerMargin: '0',\n gap: '20px',\n },\n desktop: {\n margin: '10%',\n outerMargin: '50px',\n gap: '36px',\n },\n },\n buttons: {\n paddingX: '20px',\n paddingY: '14px',\n paddingYIcon: '12px',\n iconWidth: '20px',\n iconHeight: '20px',\n iconMargin: '12px',\n },\n footer: {\n desktop: {\n height: '380px',\n paddingTop: '44px',\n paddingBottom: '0',\n itemsGap: '32px',\n mediaGap: '32px',\n mediaIconWidth: '24px',\n mediaIconHeight: '24px',\n verticalSpacingLarge: '58px',\n verticalSpacingSmall: '16px',\n },\n mobile: {\n height: 'auto',\n paddingTop: '20px',\n paddingBottom: '20px',\n itemsGap: '12px',\n mediaGap: '28px',\n mediaIconWidth: '28px',\n mediaIconHeight: '28px',\n verticalSpacingLarge: '24px',\n verticalSpacingSmall: '24px',\n },\n },\n};\n\nexport const core = {\n ...common,\n colors: {\n ...commonColors,\n ...colors,\n primary: colors.core,\n primaryButton: colors.core,\n secondaryButton: commonColors.white,\n tertiaryButton: 'transparent',\n auxiliaryButton: 'transparent',\n primaryButtonReverseBg: colors.cinema,\n primaryButtonReverse: commonColors.white,\n },\n};\nexport const stream = {\n ...common,\n colors: {\n ...commonColors,\n ...colors,\n primary: colors.stream,\n primaryButton: colors.stream,\n primaryButtonReverseBg: colors.cinema,\n primaryButtonReverse: commonColors.white,\n secondaryButton: commonColors.white,\n tertiaryButton: 'transparent',\n auxiliaryButton: 'transparent',\n },\n};\nexport const cinema = {\n ...common,\n colors: {\n ...commonColors,\n ...colors,\n primary: colors.cinema,\n primaryButton: commonColors.white,\n primaryButtonReverseBg: commonColors.white,\n primaryButtonReverse: colors.cinema,\n secondaryButton: commonColors.white,\n tertiaryButton: 'transparent',\n auxiliaryButton: 'transparent',\n },\n};\n\nexport const schools = {\n ...common,\n colors: {\n ...commonColors,\n ...colors,\n primary: colors.core,\n primaryButton: colors.core,\n primaryButtonReverseBg: colors.cinema,\n primaryButtonReverse: commonColors.white,\n secondaryButton: commonColors.white,\n tertiaryButton: 'transparent',\n auxiliaryButton: 'transparent',\n },\n fonts: {\n ...common.fonts,\n desktop: {\n ...common.fonts.desktop,\n transforms: {\n headers: 'none',\n altHeaders: 'none',\n overline: 'none',\n subtitles: 'none',\n body: 'none',\n navigation: 'uppercase',\n },\n },\n mobile: {\n ...common.fonts.mobile,\n transforms: {\n headers: 'none',\n altHeaders: 'none',\n overline: 'none',\n subtitles: 'none',\n body: 'none',\n navigation: 'uppercase',\n },\n },\n },\n};\n\nexport const themes = { core, stream, cinema, fontFamilies, schools };\n","import styled from 'styled-components';\nimport { core } from '../../../styles/themes';\nimport { IIconStyledProps } from '../../../types/iconTypes';\n\nexport const Directions = {\n left: 'transform: rotate(180deg)',\n right: 'transform: rotate(0deg)',\n up: 'transform: rotate(270deg)',\n down: 'transform: rotate(90deg)',\n reverse: 'transform: scaleX(-1)',\n};\n\nexport const Wrapper = styled.span<IIconStyledProps>`\n display: block;\n\n & svg {\n display: block;\n ${({ direction = 'right' }: IIconStyledProps) => Directions[direction]};\n }\n\n & svg path {\n fill: var(--base-color-${({ color }: IIconStyledProps) => color || 'black'}, ${core.colors.black});\n }\n`;\n","/* 12px */\nimport Expand12px from './12px/Expand.svg';\nimport Remove12px from './12px/Remove.svg';\nimport Tick from './12px/Tick.svg';\n/* Actions */\nimport AddToMyList from './Actions/AddToMyList.svg';\nimport OnMyList from './Actions/OnMyList.svg';\nimport BookTickets from './Actions/BookTickets.svg';\nimport ChooseDates from './Actions/ChooseDates.svg';\nimport EditMyList from './Actions/EditMyList.svg';\nimport Favourite from './Actions/Favourite.svg';\nimport FavouriteFull from './Actions/FavouriteFull.svg';\nimport Filter from './Actions/Filter.svg';\nimport FindAScreening from './Actions/FindAScreening.svg';\nimport Reminder from './Actions/Reminder.svg';\nimport Subscribe from './Actions/Subscribe.svg';\nimport Watch from './Actions/Watch.svg';\n/* Arrows */\nimport Arrow from './Arrows/Arrow.svg';\nimport CarouselArrow from './Arrows/CarouselArrow.svg';\nimport DropdownArrow from './Arrows/DropdownArrow.svg';\n/* Descriptors */\nimport Cinema from './Descriptors/Cinema.svg';\nimport Clock from './Descriptors/Clock.svg';\nimport CreditCard from './Descriptors/CreditCard.svg';\nimport Email from './Descriptors/Email.svg';\nimport Info from './Descriptors/Info.svg';\nimport List from './Descriptors/List.svg';\nimport Location from './Descriptors/Location.svg';\nimport PDF from './Descriptors/PDF.svg';\nimport Phone from './Descriptors/Phone.svg';\nimport Print from './Descriptors/Print.svg';\nimport Seat from './Descriptors/Seat.svg';\nimport Secure from './Descriptors/Secure.svg';\nimport Standing from './Descriptors/Standing.svg';\nimport Tickets from './Descriptors/Tickets.svg';\nimport Wheelchair from './Descriptors/Wheelchair.svg';\n/* Navigation */\nimport BalletAndDance from './Navigation/BalletAndDance.svg';\nimport Basket from './Navigation/Basket.svg';\nimport BasketFull from './Navigation/BasketFull.svg';\nimport Home from './Navigation/Home.svg';\nimport LiveStream from './Navigation/LiveStream.svg';\nimport Menu from './Navigation/Menu.svg';\nimport OperaAndMusic from './Navigation/OperaAndMusic.svg';\nimport Search from './Navigation/Search.svg';\nimport Settings from './Navigation/Settings.svg';\nimport User from './Navigation/User.svg';\nimport UserSignedIn from './Navigation/UserSignedIn.svg';\n/* Social */\nimport Facebook from './Logos/Social/Facebook.svg';\nimport Instagram from './Logos/Social/Instagram.svg';\nimport Tiktok from './Logos/Social/Tiktok.svg';\nimport Twitter from './Logos/Social/Twitter.svg';\nimport X from './Logos/Social/X.svg';\nimport Youtube from './Logos/Social/Youtube.svg';\n/* Text */\nimport Delete from './Text/Delete.svg';\nimport Shift from './Text/Shift.svg';\nimport Space from './Text/Space.svg';\n/* Utility */\nimport Close from './Utility/Close.svg';\nimport Confirm from './Utility/Confirm.svg';\nimport Detract from './Utility/Detract.svg';\nimport Expand from './Utility/Expand.svg';\nimport ExternalLink from './Utility/ExternalLink.svg';\nimport GridView from './Utility/GridView.svg';\nimport ListView from './Utility/ListView.svg';\nimport Refresh from './Utility/Refresh.svg';\nimport Remove from './Utility/Remove.svg';\nimport Star from './Utility/Star.svg';\n/* Video */\nimport AudioDescription from './Video/AudioDescription.svg';\nimport Back10 from './Video/Back10.svg';\nimport Clips from './Video/Clips.svg';\nimport Forward10 from './Video/Forward10.svg';\nimport FullScreen from './Video/FullScreen.svg';\nimport Minimise from './Video/Minimise.svg';\nimport Muted from './Video/Muted.svg';\nimport Pause from './Video/Pause.svg';\nimport Play from './Video/Play.svg';\nimport Restart from './Video/Restart.svg';\nimport Subtitles from './Video/Subtitles.svg';\nimport Trailer from './Video/Trailer.svg';\nimport Volume from './Video/Volume.svg';\n\nexport const IconLibrary = {\n AddToMyList,\n Arrow,\n AudioDescription,\n Back10,\n BalletAndDance,\n Basket,\n BasketFull,\n BookTickets,\n CarouselArrow,\n ChooseDates,\n Cinema,\n Clips,\n Clock,\n Close,\n Confirm,\n CreditCard,\n Delete,\n Detract,\n DropdownArrow,\n EditMyList,\n Email,\n Expand,\n Expand12px,\n ExternalLink,\n Facebook,\n Favourite,\n FavouriteFull,\n Filter,\n FindAScreening,\n Forward10,\n FullScreen,\n GridView,\n Home,\n Info,\n Instagram,\n List,\n ListView,\n LiveStream,\n Location,\n Menu,\n Minimise,\n Muted,\n OnMyList,\n OperaAndMusic,\n Pause,\n PDF,\n Phone,\n Play,\n Print,\n Refresh,\n Reminder,\n Remove,\n Remove12px,\n Restart,\n Search,\n Seat,\n Secure,\n Settings,\n Shift,\n Space,\n Standing,\n Star,\n Subscribe,\n Subtitles,\n Tick,\n Tickets,\n Tiktok,\n Trailer,\n Twitter,\n User,\n UserSignedIn,\n Volume,\n Watch,\n Wheelchair,\n X,\n Youtube,\n};\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 3H3V4H21V3Z\" fill={color} />\n <path d=\"M21 6.5H3V7.5H21V6.5Z\" fill={color} />\n <path d=\"M21 10H3V11H21V10Z\" fill={color} />\n <path d=\"M14.5 13.5H3V14.5H14.5V13.5Z\" fill={color} />\n <path d=\"M12 17H3V18H12V17Z\" fill={color} />\n <path d=\"M18.1 14H17.1V16.9H14V17.9H17.1V21H18.1V17.9H21V16.9H18.1V14Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M3 12.6001H19L12.9 18.7001L13.6 19.4001L21 12.0001L13.6 4.6001L12.9 5.3001L19.2 11.6001H3V12.6001Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 5V19H3V5H21ZM22 4H2V20H22V4Z\" fill={color} />\n <path\n d=\"M8.17938 9H9.33938L11.8994 15H10.5894L9.99937 13.64H7.44937L6.88937 15H5.60938L8.17938 9ZM9.57937 12.53L8.73937 10.53L7.89937 12.53H9.57937Z\"\n fill={color}\n />\n <path\n d=\"M12.9199 8.99994H15.2199C15.628 8.97678 16.0364 9.03723 16.4202 9.17759C16.8041 9.31795 17.1552 9.53526 17.452 9.81618C17.7489 10.0971 17.9852 10.4357 18.1464 10.8112C18.3077 11.1867 18.3906 11.5913 18.3899 11.9999C18.3906 12.4086 18.3077 12.8131 18.1464 13.1887C17.9852 13.5642 17.7489 13.9028 17.452 14.1837C17.1552 14.4646 16.8041 14.6819 16.4202 14.8223C16.0364 14.9626 15.628 15.0231 15.2199 14.9999H12.9199V8.99994ZM14.1799 10.1399V13.8199H15.1799C15.4276 13.8417 15.6771 13.8101 15.9115 13.7273C16.1459 13.6445 16.3599 13.5124 16.539 13.34C16.7181 13.1675 16.8582 12.9587 16.9497 12.7275C17.0413 12.4964 17.0823 12.2483 17.0699 11.9999C17.0814 11.7544 17.0414 11.5092 16.9523 11.28C16.8633 11.0509 16.7273 10.843 16.553 10.6697C16.3787 10.4963 16.17 10.3614 15.9404 10.2736C15.7108 10.1858 15.4654 10.1471 15.2199 10.1599L14.1799 10.1399Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18.1992 6.1C14.9992 2.9 9.89922 2.7 6.49922 5.5L6.69922 3H5.69922L5.39922 7.1L9.49922 7.4L9.59922 6.4L7.09922 6.2C10.0992 3.7 14.5992 3.9 17.3992 6.7C20.3992 9.7 20.3992 14.6 17.3992 17.6C14.3992 20.6 9.49922 20.6 6.49922 17.6C4.99922 16.1 4.19922 14.2 4.19922 12.1H3.19922C3.19922 14.4 4.09922 16.6 5.79922 18.3C7.49922 20.1 9.79922 21 11.9992 21C14.1992 21 16.4992 20.1 18.1992 18.4C21.5992 15 21.5992 9.5 18.1992 6.1Z\"\n fill={color}\n />\n <path d=\"M8.8 10.3L7.8 10.6L7.5 9.5L9.2 9H10.1V14.9H8.8V10.3Z\" fill={color} />\n <path\n d=\"M11.3008 12C11.3008 10.3 12.4008 9 13.9008 9C15.4008 9 16.5008 10.3 16.5008 12C16.5008 13.7 15.5008 15 13.9008 15C12.3008 15 11.3008 13.7 11.3008 12ZM15.2008 12C15.2008 10.9 14.7008 10.1 13.9008 10.1C13.1008 10.1 12.6008 10.9 12.6008 12C12.6008 13.1 13.1008 13.9 13.9008 13.9C14.7008 13.9 15.2008 13.1 15.2008 12Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20 10.8099C20 10.4099 20 10.0099 19.91 9.61995C19.8296 8.78684 19.7028 7.95889 19.53 7.13995C19.3725 6.36611 19.1722 5.6016 18.93 4.84995C18.83 4.52995 18.72 4.21995 18.61 3.90995L18.19 2.84995C18.12 2.69995 18.06 2.54995 18 2.39995C17.9472 2.27991 17.8602 2.17802 17.75 2.10691C17.6398 2.03581 17.5112 1.99861 17.38 1.99995H10.6C10.4803 1.99361 10.3611 2.02001 10.2552 2.0763C10.1494 2.13259 10.0609 2.21665 9.99918 2.31946C9.9375 2.42226 9.90499 2.53992 9.90513 2.65981C9.90527 2.7797 9.93807 2.89729 10 2.99995L10.61 3.99995C9.02093 4.16117 7.53678 4.8679 6.41 5.99995L3 9.35994L3.72 10.0699L7.16 6.66995C7.75257 6.09557 8.45725 5.64961 9.23 5.35995C8.49778 6.12058 7.95332 7.04171 7.64 8.04995L6.2 12.6399L7.2 12.9299L8.61 8.33995C9.04114 6.96737 9.97284 5.8072 11.22 5.08995C11.69 6.02959 12.091 7.00215 12.42 7.99995C11.9519 8.75685 11.7059 9.63002 11.71 10.5199C11.7119 11.022 11.7895 11.521 11.94 11.9999C12.1174 12.5578 12.3991 13.077 12.77 13.5299C12.8542 13.606 12.9312 13.6897 13 13.7799C13.3354 14.2018 13.5249 14.7212 13.54 15.2599C13.54 15.3699 13.54 15.4799 13.54 15.5899C13.5242 16.3823 13.4675 17.1734 13.37 17.9599C13.2272 18.9861 13.0168 20.0016 12.74 20.9999V20.9999C12.7011 21.1094 12.6881 21.2264 12.7021 21.3417C12.716 21.4571 12.7566 21.5676 12.8206 21.6645C12.8846 21.7615 12.9703 21.8423 13.0708 21.9005C13.1714 21.9587 13.284 21.9927 13.4 21.9999H16.91C17.1788 21.9964 17.4405 21.9126 17.6614 21.7594C17.8823 21.6062 18.0524 21.3905 18.15 21.1399C19.099 18.8653 19.6861 16.4562 19.89 13.9999C19.89 13.7699 19.94 13.5499 19.96 13.3099C19.98 13.0699 19.96 13.1099 19.96 13.0099C19.96 12.6499 19.96 12.2899 19.96 11.9299C19.96 11.5699 20 11.1899 20 10.8099ZM11.61 2.99995H17C17.0499 3.00059 17.0985 3.01618 17.1395 3.0447C17.1805 3.07322 17.212 3.11336 17.23 3.15995C17.34 3.41995 17.44 3.69995 17.55 3.96995H11.7L11.39 3.36995C11.3691 3.33182 11.3586 3.28892 11.3594 3.24547C11.3601 3.20202 11.3722 3.15953 11.3944 3.12218C11.4166 3.08482 11.4482 3.05391 11.486 3.03247C11.5238 3.01104 11.5665 2.99983 11.61 2.99995ZM12.23 4.99995H17.93C17.93 5.13995 18.02 5.27995 18.07 5.41995L17.25 6.31995L15.73 7.99995H15.65L13.08 6.99995C12.83 6.29995 12.54 5.62995 12.23 4.99995V4.99995ZM19 13.8999C18.808 16.2022 18.2545 18.4599 17.36 20.5899C17.3111 20.7095 17.2282 20.8121 17.1215 20.885C17.0149 20.9578 16.8892 20.9978 16.76 20.9999H13.86C13.8411 20.9995 13.8225 20.9945 13.8059 20.9855C13.7892 20.9764 13.775 20.9636 13.7642 20.948C13.7535 20.9324 13.7466 20.9144 13.7442 20.8957C13.7417 20.8769 13.7437 20.8578 13.75 20.8399C14.1769 19.104 14.415 17.327 14.46 15.5399C14.46 15.4699 14.46 14.9099 14.46 14.9099C14.3722 14.1233 14.0196 13.3898 13.46 12.8299V12.8299C12.9343 12.1788 12.6483 11.3668 12.65 10.5299C12.6562 10.1426 12.7203 9.75836 12.84 9.38995C12.9771 8.96486 13.1906 8.56836 13.47 8.21995L15.59 8.99995C15.6034 10.0554 15.9365 11.082 16.5453 11.9443C17.154 12.8066 18.0099 13.464 19 13.8299V13.8999ZM19 12.8099C18.2319 12.4636 17.5815 11.9007 17.1285 11.1902C16.6756 10.4797 16.4398 9.65248 16.45 8.80995C16.445 8.72001 16.445 8.62988 16.45 8.53995L18.33 6.53995C18.43 6.92995 18.53 7.32995 18.61 7.72995C18.9028 9.13498 19.0602 10.5649 19.08 11.9999C19.08 12.2499 19.06 12.5299 19 12.8099Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M16.0996 8V7C15.9996 4.8 14.1996 3 11.9996 3C9.69961 3 7.89961 4.8 7.89961 7V8H3.09961L5.19961 18.8C5.39961 20.1 6.49961 21 7.79961 21H16.1996C17.4996 21 18.5996 20.1 18.7996 18.8L20.8996 8H16.0996ZM8.89961 7C8.89961 5.4 10.2996 4 11.9996 4C13.5996 4 15.0996 5.4 15.0996 7V8H8.89961V7ZM17.8996 18.6C17.6996 19.4 16.9996 20 16.1996 20H7.79961C6.99961 20 6.29961 19.4 6.19961 18.6L4.29961 9H7.89961H16.0996H19.6996L17.8996 18.6Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M16.0996 8V7C15.9996 4.8 14.1996 3 11.9996 3C9.69961 3 7.89961 4.8 7.89961 7V8H3.09961L5.19961 18.8C5.39961 20.1 6.49961 21 7.79961 21H16.1996C17.4996 21 18.5996 20.1 18.7996 18.8L20.8996 8H16.0996ZM8.89961 7C8.89961 5.4 10.2996 4 11.9996 4C13.5996 4 15.0996 5.4 15.0996 7V8H8.89961V7Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M7 2H6V5H7V2Z\" fill={color} />\n <path d=\"M4 8V9L20 9V8L4 8Z\" fill={color} />\n <path d=\"M18 2H17V5H18V2Z\" fill={color} />\n <path d=\"M14.3008 2H13.3008V5H14.3008V2Z\" fill={color} />\n <path d=\"M15.3008 8H14.3008V20H15.3008V8Z\" fill={color} />\n <path d=\"M9.69922 8H8.69922V20H9.69922V8Z\" fill={color} />\n <path d=\"M10.6992 2H9.69922V5H10.6992V2Z\" fill={color} />\n <path d=\"M21 17V16L3 16V17L21 17Z\" fill={color} />\n <path d=\"M21 13V12L3 12V13L21 13Z\" fill={color} />\n <path\n d=\"M20 4V19C20 19.6 19.6 20 19 20H5C4.4 20 4 19.6 4 19V4H20ZM21 3H3V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V3Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M13.6 4.24658L21.3536 12.0001L13.6 19.7537L12.5464 18.7001L18.3964 12.8501H2.75V11.3501H18.5964L12.5464 5.30014L13.6 4.24658Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20.9 9L19 10.9V5H15.5V4H14.5V5H12V4H11V5H8.5V4H7.5V5H4V18C4 19.1 4.9 20 6 20H17C18.1 20 19 19.1 19 18V15.1L23 11.1L20.9 9ZM17.5 12.3H14.3V10H18V11.9L17.5 12.3ZM14.6 15.7H14.3V13.4H16.5L14.7 15.2L14.6 15.7ZM8.7 19H6C5.4 19 5 18.6 5 18V16.7H8.7V19ZM8.7 15.7H5V13.4H8.7V15.7ZM8.7 12.3H5V10H8.7V12.3ZM5 9V6H7.5V7H8.5V6H11V7H12V6H14.5V7H15.5V6H18V9H5ZM13.3 19H9.7V16.7H13.4V19H13.3ZM13.3 15.7H9.7V13.4H13.4V15.7H13.3ZM13.3 12.3H9.7V10H13.4V12.3H13.3ZM18 16.7V18C18 18.6 17.6 19 17 19H14.3V18L16.9 17.2L17.5 16.6H18V16.7ZM19 13.7L18 14.7L17 15.7L16.3 16.4L15.3 16.7L15.6 15.7L17.9 13.4L18.9 12.4L19 12.3L19.7 13L19 13.7ZM19.8 11.5L20.9 10.4L21.6 11.1L20.5 12.2L19.8 11.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C9.7381 2.00427 7.54447 2.77523 5.77725 4.18702C4.01004 5.59881 2.77365 7.56802 2.26996 9.77313C1.76627 11.9782 2.02503 14.289 3.00399 16.328C3.98295 18.3671 5.62429 20.0141 7.66 21H2V22H12C14.6522 22 17.1957 20.9464 19.0711 19.0711C20.9464 17.1957 22 14.6522 22 12C22 9.34784 20.9464 6.8043 19.0711 4.92893C17.1957 3.05357 14.6522 2 12 2V2ZM12 21C10.22 21 8.47991 20.4722 6.99987 19.4832C5.51983 18.4943 4.36627 17.0887 3.68508 15.4442C3.0039 13.7996 2.82567 11.99 3.17293 10.2442C3.5202 8.49836 4.37737 6.89471 5.63604 5.63604C6.89471 4.37737 8.49836 3.5202 10.2442 3.17293C11.99 2.82567 13.7996 3.0039 15.4442 3.68508C17.0887 4.36627 18.4943 5.51983 19.4832 6.99987C20.4722 8.47991 21 10.22 21 12C21 14.3869 20.0518 16.6761 18.364 18.364C16.6761 20.0518 14.3869 21 12 21V21Z\"\n fill={color}\n />\n <path\n d=\"M8.10954 13.3902C7.78094 13.389 7.45536 13.4529 7.15157 13.5782C6.84779 13.7035 6.57181 13.8877 6.33954 14.1202C5.87419 14.5917 5.61328 15.2276 5.61328 15.8902C5.61328 16.5527 5.87419 17.1886 6.33954 17.6602C6.80986 18.1279 7.44622 18.3905 8.10954 18.3905C8.77287 18.3905 9.40922 18.1279 9.87954 17.6602C10.3449 17.1886 10.6058 16.5527 10.6058 15.8902C10.6058 15.2276 10.3449 14.5917 9.87954 14.1202C9.64728 13.8877 9.3713 13.7035 9.06751 13.5782C8.76373 13.4529 8.43815 13.389 8.10954 13.3902V13.3902ZM9.16954 17.0002C8.92399 17.2454 8.60099 17.3979 8.25559 17.4317C7.91019 17.4655 7.56376 17.3785 7.27533 17.1855C6.9869 16.9925 6.77432 16.7054 6.67382 16.3732C6.57332 16.041 6.5911 15.6843 6.72416 15.3638C6.85721 15.0432 7.09729 14.7788 7.40348 14.6154C7.70968 14.452 8.06305 14.3999 8.40338 14.4679C8.7437 14.5359 9.04993 14.7198 9.26987 14.9882C9.4898 15.2567 9.60985 15.5931 9.60954 15.9402C9.60919 16.3378 9.45093 16.7191 9.16954 17.0002Z\"\n fill={color}\n />\n <path\n d=\"M15.8908 10.6102C16.2194 10.6113 16.545 10.5474 16.8488 10.4221C17.1525 10.2968 17.4285 10.1127 17.6608 9.8802C18.1261 9.40861 18.3871 8.77273 18.3871 8.1102C18.3871 7.44767 18.1261 6.81179 17.6608 6.3402C17.1905 5.87244 16.5541 5.60986 15.8908 5.60986C15.2275 5.60986 14.5911 5.87244 14.1208 6.3402C13.6554 6.81179 13.3945 7.44767 13.3945 8.1102C13.3945 8.77273 13.6554 9.40861 14.1208 9.8802C14.3531 10.1127 14.629 10.2968 14.9328 10.4221C15.2366 10.5474 15.5622 10.6113 15.8908 10.6102V10.6102ZM14.8308 7.0502C15.0763 6.80495 15.3993 6.65244 15.7447 6.61865C16.0901 6.58486 16.4366 6.67188 16.725 6.86489C17.0134 7.0579 17.226 7.34495 17.3265 7.67713C17.427 8.0093 17.4092 8.36606 17.2762 8.68659C17.1431 9.00712 16.903 9.2716 16.5969 9.43496C16.2907 9.59831 15.9373 9.65044 15.597 9.58246C15.2566 9.51448 14.9504 9.33059 14.7305 9.06213C14.5105 8.79367 14.3905 8.45725 14.3908 8.1102C14.3911 7.71251 14.5494 7.33124 14.8308 7.0502Z\"\n fill={color}\n />\n <path\n d=\"M8.10954 5.60988C7.78094 5.60874 7.45536 5.67266 7.15157 5.79795C6.84779 5.92324 6.57181 6.10742 6.33954 6.33988C5.87419 6.81147 5.61328 7.44735 5.61328 8.10988C5.61328 8.77241 5.87419 9.40829 6.33954 9.87988C6.80986 10.3476 7.44622 10.6102 8.10954 10.6102C8.77287 10.6102 9.40922 10.3476 9.87954 9.87988C10.3449 9.40829 10.6058 8.77241 10.6058 8.10988C10.6058 7.44735 10.3449 6.81147 9.87954 6.33988C9.64728 6.10742 9.3713 5.92324 9.06751 5.79795C8.76373 5.67266 8.43815 5.60874 8.10954 5.60988V5.60988ZM9.16954 9.16988C8.92399 9.41513 8.60099 9.56764 8.25559 9.60143C7.91019 9.63522 7.56376 9.5482 7.27533 9.35519C6.9869 9.16218 6.77432 8.87513 6.67382 8.54295C6.57332 8.21077 6.5911 7.85402 6.72416 7.53349C6.85721 7.21296 7.09729 6.94848 7.40348 6.78512C7.70968 6.62176 8.06305 6.56963 8.40338 6.63762C8.7437 6.7056 9.04993 6.88949 9.26987 7.15795C9.4898 7.42641 9.60985 7.76283 9.60954 8.10988C9.60919 8.50757 9.45093 8.88884 9.16954 9.16988V9.16988Z\"\n fill={color}\n />\n <path\n d=\"M15.8908 13.3902C15.5622 13.389 15.2366 13.4529 14.9328 13.5782C14.629 13.7035 14.3531 13.8877 14.1208 14.1202C13.6554 14.5917 13.3945 15.2276 13.3945 15.8902C13.3945 16.5527 13.6554 17.1886 14.1208 17.6602C14.5911 18.1279 15.2275 18.3905 15.8908 18.3905C16.5541 18.3905 17.1905 18.1279 17.6608 17.6602C18.1261 17.1886 18.3871 16.5527 18.3871 15.8902C18.3871 15.2276 18.1261 14.5917 17.6608 14.1202C17.4285 13.8877 17.1525 13.7035 16.8488 13.5782C16.545 13.4529 16.2194 13.389 15.8908 13.3902V13.3902ZM17.0008 17.0002C16.7911 17.2101 16.5238 17.3532 16.2328 17.4112C15.9418 17.4692 15.6401 17.4396 15.3659 17.3261C15.0917 17.2127 14.8573 17.0204 14.6924 16.7737C14.5275 16.527 14.4395 16.2369 14.4395 15.9402C14.4395 15.6434 14.5275 15.3533 14.6924 15.1066C14.8573 14.8599 15.0917 14.6676 15.3659 14.5542C15.6401 14.4407 15.9418 14.4111 16.2328 14.4691C16.5238 14.5271 16.7911 14.6702 17.0008 14.8802C17.2817 15.1614 17.4395 15.5426 17.4395 15.9402C17.4395 16.3377 17.2817 16.7189 17.0008 17.0002V17.0002Z\"\n fill={color}\n />\n <path\n d=\"M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M15 11V19H3V11H15ZM16 10H2V20H16V10Z\" fill={color} />\n <path d=\"M22 4H6V5H7H21V15V16H22V4Z\" fill={color} />\n <path d=\"M19 7H4V8H5H18V17V18H19V7Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2ZM12 21C7 21 3 17 3 12C3 7 7 3 12 3C17 3 21 7 21 12C21 17 17 21 12 21Z\"\n fill={color}\n />\n <path\n d=\"M16.5 11.5H12.5V5.5C12.5 5.2 12.3 5 12 5C11.7 5 11.5 5.2 11.5 5.5V12C11.5 12.3 11.7 12.5 12 12.5H16.5C16.8 12.5 17 12.3 17 12C17 11.7 16.8 11.5 16.5 11.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20.8996 3.9001L20.0996 3.1001L11.9996 11.3001L3.89961 3.1001L3.09961 3.9001L11.2996 12.0001L3.09961 20.1001L3.89961 20.9001L11.9996 12.7001L20.0996 20.9001L20.8996 20.1001L12.6996 12.0001L20.8996 3.9001Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M9.09961 21L3 12.5L3.8 11.9L9.09961 19.3L21.1996 3L21.9996 3.6L9.09961 21Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M10.5 14H5.5C5.2 14 5 14.2 5 14.5C5 14.8 5.2 15 5.5 15H10.5C10.8 15 11 14.8 11 14.5C11 14.2 10.8 14 10.5 14Z\"\n fill={color}\n />\n <path\n d=\"M8 16H5.5C5.2 16 5 16.2 5 16.5C5 16.8 5.2 17 5.5 17H8C8.3 17 8.5 16.8 8.5 16.5C8.5 16.2 8.3 16 8 16Z\"\n fill={color}\n />\n <path\n d=\"M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4ZM4 5H20C20.6 5 21 5.4 21 6V8H3V6C3 5.4 3.4 5 4 5ZM21 9V10.5H3V9H21ZM20 19H4C3.4 19 3 18.6 3 18V11.5H21V18C21 18.6 20.6 19 20 19Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M11 4L2 12L11 20H22V4H11ZM21 19H11.4L3.5 12L11.4 5H21V19Z\" fill={color} />\n <path\n d=\"M12.7 15.5L15.5 12.7L18.3 15.5L19 14.8L16.2 12L19 9.2L18.3 8.5L15.5 11.3L12.7 8.5L12 9.2L14.8 12L12 14.8L12.7 15.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 11.5H3V12.5H21V11.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M19.3 8L12 14.7L4.7 8L4 8.7L12 16L20 8.7L19.3 8Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 3H3V4H21V3Z\" fill={color} />\n <path d=\"M21 6.5H3V7.5H21V6.5Z\" fill={color} />\n <path d=\"M21 10H3V11H21V10Z\" fill={color} />\n <path d=\"M13.5 13.5H3V14.5H13.5V13.5Z\" fill={color} />\n <path d=\"M11 17H3V18H11V17Z\" fill={color} />\n <path\n d=\"M17.0004 13.6999L16.0004 14.6999L15.5004 15.1999L14.5004 16.1999L12.7004 17.9999L11.9004 20.9999L15.0004 20.0999L15.6004 19.4999L17.0004 17.9999L21.0004 13.9999L18.9004 11.8999L17.0004 13.6999ZM17.0004 16.4999L16.0004 17.4999L15.0004 18.4999L14.3004 19.1999L13.3004 19.4999L13.6004 18.4999L15.9004 16.1999L16.9004 15.1999L17.0004 15.0999L17.7004 15.7999L17.0004 16.4999ZM18.5004 14.9999L17.8004 14.2999L18.9004 13.1999L19.6004 13.8999L18.5004 14.9999Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4ZM21 18.2L15.3 12.5L21 6.7V18C21 18.1 21 18.2 21 18.2ZM4 5H20C20.4 5 20.6 5.2 20.8 5.5L12 14.3L10.2 12.5L9.5 11.8L3.2 5.5C3.4 5.2 3.6 5 4 5ZM3 18.2C3 18.1 3 18 3 18V6.7L8.8 12.5L3 18.2ZM4 19C3.9 19 3.8 19 3.8 19L9.5 13.3L12 15.8L14.5 13.3L20.2 19C20.1 19 20 19 20 19H4Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M12.5 11.5V3H11.5V11.5H3V12.5H11.5V21H12.5V12.5H21V11.5H12.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-label={ariaLabel}>\n <path d=\"M7.02857 0H5.31429V4.97143H0V6.68571H5.31429V12H7.02857V6.68571H12V4.97143H7.02857V0Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18 18.5C18 19.3 17.3 20 16.5 20H5.5C4.7 20 4 19.3 4 18.5V7.5C4 6.7 4.7 6 5.5 6H10.6V5H5.5C4.1 5 3 6.1 3 7.5V18.5C3 19.9 4.1 21 5.5 21H16.5C17.9 21 19 19.9 19 18.5V13.4H18V18.5Z\"\n fill={color}\n />\n <path d=\"M20.0008 3H14.0008V4H19.3008L10.3008 12.9L11.1008 13.7L20.0008 4.7V10H21.0008V4V3H20.0008Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M13.6598 22H9.70976V12.14H6.99976V8.93H9.69976V6.65C9.70976 3.94 10.8998 2 14.8398 2C15.5622 2.02024 16.2831 2.07698 16.9998 2.17V5.17H15.6098C14.2098 5.17 13.6598 5.59 13.6598 6.77V8.93H16.9298L16.6398 12.14H13.6398L13.6598 22Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 4.69994L13.88 8.51994L14.12 8.98994L14.64 9.06994L18.85 9.67994L15.8 12.6799L15.43 13.0499L15.51 13.5599L16.23 17.7599L12.47 15.7599L12 15.5099L11.53 15.7499L7.77 17.7499L8.49 13.5499L8.57 13.0399L8.2 12.6699L5.15 9.66994L9.36 9.05994L9.88 8.97994L10.12 8.50994L12 4.69994ZM12 2.43994L9.22 8.07994L3 8.99994L7.5 13.3899L6.44 19.5799L12 16.6399L17.56 19.5599L16.5 13.3699L21 8.99994L14.78 8.09994L12 2.43994Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M9.22 8.07994L12 2.43994L14.78 8.09994L21 8.99994L16.5 13.3699L17.56 19.5599L12 16.6399L6.44 19.5799L7.5 13.3899L3 8.99994L9.22 8.07994Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M8.4 5C8.2 4.1 7.4 3.5 6.5 3.5C5.6 3.5 4.8 4.1 4.6 5H2V6H4.6C4.8 6.9 5.6 7.5 6.5 7.5C7.4 7.5 8.2 6.9 8.4 6H22V5H8.4ZM6.5 6.5C5.9 6.5 5.5 6.1 5.5 5.5C5.5 4.9 5.9 4.5 6.5 4.5C7.1 4.5 7.5 4.9 7.5 5.5C7.5 6.1 7.1 6.5 6.5 6.5Z\"\n fill={color}\n />\n <path\n d=\"M17.5 10C16.6 10 15.8 10.6 15.6 11.5H2V12.5H15.6C15.8 13.4 16.6 14 17.5 14C18.4 14 19.2 13.4 19.4 12.5H22V11.5H19.4C19.2 10.6 18.4 10 17.5 10ZM17.5 13C16.9 13 16.5 12.6 16.5 12C16.5 11.4 16.9 11 17.5 11C18.1 11 18.5 11.4 18.5 12C18.5 12.6 18.1 13 17.5 13Z\"\n fill={color}\n />\n <path\n d=\"M6.5 16.5C5.6 16.5 4.8 17.1 4.6 18H2V19H4.6C4.8 19.9 5.6 20.5 6.5 20.5C7.4 20.5 8.2 19.9 8.4 19H22V18H8.4C8.2 17.1 7.4 16.5 6.5 16.5ZM6.5 19.5C5.9 19.5 5.5 19.1 5.5 18.5C5.5 17.9 5.9 17.5 6.5 17.5C7.1 17.5 7.5 17.9 7.5 18.5C7.5 19.1 7.1 19.5 6.5 19.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C9.7381 2.00427 7.54447 2.77523 5.77725 4.18702C4.01004 5.59881 2.77365 7.56802 2.26996 9.77313C1.76627 11.9782 2.02503 14.289 3.00399 16.328C3.98295 18.3671 5.62429 20.0141 7.66 21H2V22H12C14.6522 22 17.1957 20.9464 19.0711 19.0711C20.9464 17.1957 22 14.6522 22 12C22 9.34784 20.9464 6.8043 19.0711 4.92893C17.1957 3.05357 14.6522 2 12 2ZM12 21C10.22 21 8.47991 20.4722 6.99987 19.4832C5.51983 18.4943 4.36627 17.0887 3.68508 15.4442C3.0039 13.7996 2.82567 11.99 3.17293 10.2442C3.5202 8.49836 4.37737 6.89471 5.63604 5.63604C6.89471 4.37737 8.49836 3.5202 10.2442 3.17293C11.99 2.82567 13.7996 3.0039 15.4442 3.68508C17.0887 4.36627 18.4943 5.51983 19.4832 6.99987C20.4722 8.47991 21 10.22 21 12C21 14.3869 20.0518 16.6761 18.364 18.364C16.6761 20.0518 14.3869 21 12 21Z\"\n fill={color}\n />\n <path\n d=\"M8.10954 13.3902C7.78094 13.389 7.45536 13.4529 7.15157 13.5782C6.84779 13.7035 6.57181 13.8877 6.33954 14.1202C5.87419 14.5917 5.61328 15.2276 5.61328 15.8902C5.61328 16.5527 5.87419 17.1886 6.33954 17.6602C6.80986 18.1279 7.44622 18.3905 8.10954 18.3905C8.77287 18.3905 9.40922 18.1279 9.87954 17.6602C10.3449 17.1886 10.6058 16.5527 10.6058 15.8902C10.6058 15.2276 10.3449 14.5917 9.87954 14.1202C9.64728 13.8877 9.37129 13.7035 9.06751 13.5782C8.76373 13.4529 8.43815 13.389 8.10954 13.3902ZM9.16954 17.0002C8.92399 17.2454 8.60099 17.3979 8.25559 17.4317C7.91019 17.4655 7.56376 17.3785 7.27533 17.1855C6.9869 16.9925 6.77432 16.7054 6.67382 16.3732C6.57332 16.041 6.5911 15.6843 6.72416 15.3638C6.85721 15.0432 7.09729 14.7788 7.40348 14.6154C7.70968 14.452 8.06305 14.3999 8.40338 14.4679C8.7437 14.5359 9.04993 14.7198 9.26987 14.9882C9.4898 15.2567 9.60985 15.5931 9.60954 15.9402C9.60919 16.3378 9.45093 16.7191 9.16954 17.0002Z\"\n fill={color}\n />\n <path\n d=\"M15.8908 10.6102C16.2194 10.6113 16.545 10.5474 16.8488 10.4221C17.1525 10.2968 17.4285 10.1127 17.6608 9.8802C18.1261 9.40861 18.3871 8.77273 18.3871 8.1102C18.3871 7.44767 18.1261 6.81179 17.6608 6.3402C17.1905 5.87244 16.5541 5.60986 15.8908 5.60986C15.2275 5.60986 14.5911 5.87244 14.1208 6.3402C13.6554 6.81179 13.3945 7.44767 13.3945 8.1102C13.3945 8.77273 13.6554 9.40861 14.1208 9.8802C14.3531 10.1127 14.629 10.2968 14.9328 10.4221C15.2366 10.5474 15.5622 10.6113 15.8908 10.6102ZM14.8308 7.0502C15.0763 6.80495 15.3993 6.65244 15.7447 6.61865C16.0901 6.58486 16.4366 6.67188 16.725 6.86489C17.0134 7.0579 17.226 7.34495 17.3265 7.67713C17.427 8.0093 17.4092 8.36606 17.2762 8.68659C17.1431 9.00712 16.903 9.2716 16.5969 9.43496C16.2907 9.59831 15.9373 9.65044 15.597 9.58246C15.2566 9.51448 14.9504 9.33059 14.7305 9.06213C14.5105 8.79367 14.3905 8.45725 14.3908 8.1102C14.3911 7.71251 14.5494 7.33124 14.8308 7.0502Z\"\n fill={color}\n />\n <path\n d=\"M8.10954 5.60988C7.78094 5.60874 7.45536 5.67266 7.15157 5.79795C6.84779 5.92324 6.57181 6.10742 6.33954 6.33988C5.87419 6.81147 5.61328 7.44735 5.61328 8.10988C5.61328 8.77241 5.87419 9.40829 6.33954 9.87988C6.80986 10.3476 7.44622 10.6102 8.10954 10.6102C8.77287 10.6102 9.40922 10.3476 9.87954 9.87988C10.3449 9.40829 10.6058 8.77241 10.6058 8.10988C10.6058 7.44735 10.3449 6.81147 9.87954 6.33988C9.64728 6.10742 9.37129 5.92324 9.06751 5.79795C8.76373 5.67266 8.43815 5.60874 8.10954 5.60988ZM9.16954 9.16988C8.92399 9.41513 8.60099 9.56764 8.25559 9.60143C7.91019 9.63522 7.56376 9.5482 7.27533 9.35519C6.9869 9.16218 6.77432 8.87513 6.67382 8.54295C6.57332 8.21077 6.5911 7.85402 6.72416 7.53349C6.85721 7.21296 7.09729 6.94848 7.40348 6.78512C7.70968 6.62176 8.06305 6.56963 8.40338 6.63762C8.7437 6.7056 9.04993 6.88949 9.26987 7.15795C9.4898 7.42641 9.60985 7.76283 9.60954 8.10988C9.60919 8.50757 9.45093 8.88884 9.16954 9.16988Z\"\n fill={color}\n />\n <path\n d=\"M15.8908 13.3902C15.5622 13.389 15.2366 13.4529 14.9328 13.5782C14.629 13.7035 14.3531 13.8877 14.1208 14.1202C13.6554 14.5917 13.3945 15.2276 13.3945 15.8902C13.3945 16.5527 13.6554 17.1886 14.1208 17.6602C14.5911 18.1279 15.2275 18.3905 15.8908 18.3905C16.5541 18.3905 17.1905 18.1279 17.6608 17.6602C18.1261 17.1886 18.3871 16.5527 18.3871 15.8902C18.3871 15.2276 18.1261 14.5917 17.6608 14.1202C17.4285 13.8877 17.1525 13.7035 16.8488 13.5782C16.545 13.4529 16.2194 13.389 15.8908 13.3902ZM17.0008 17.0002C16.7911 17.2101 16.5238 17.3532 16.2328 17.4112C15.9418 17.4692 15.6401 17.4396 15.3659 17.3261C15.0917 17.2127 14.8573 17.0204 14.6924 16.7737C14.5275 16.527 14.4395 16.2369 14.4395 15.9402C14.4395 15.6434 14.5275 15.3533 14.6924 15.1066C14.8573 14.8599 15.0917 14.6676 15.3659 14.5542C15.6401 14.4407 15.9418 14.4111 16.2328 14.4691C16.5238 14.5271 16.7911 14.6702 17.0008 14.8802C17.2817 15.1614 17.4395 15.5426 17.4395 15.9402C17.4395 16.3377 17.2817 16.7189 17.0008 17.0002Z\"\n fill={color}\n />\n <path\n d=\"M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M5.8 6.0999C9 2.8999 14.1 2.6999 17.5 5.4999L17.3 2.9999L18.3 2.8999L18.6 6.9999L14.5 7.2999L14.4 6.2999L16.9 6.0999C13.8 3.7999 9.4 3.9999 6.5 6.7999C3.5 9.7999 3.5 14.6999 6.5 17.6999C9.5 20.6999 14.4 20.6999 17.4 17.6999C18.9 16.1999 19.7 14.2999 19.7 12.1999H20.7C20.7 14.4999 19.8 16.6999 18.1 18.3999C16.5 20.0999 14.2 20.9999 12 20.9999C9.8 20.9999 7.5 20.0999 5.8 18.3999C2.4 14.9999 2.4 9.4999 5.8 6.0999Z\"\n fill={color}\n />\n <path d=\"M8.8 10.3L7.8 10.6L7.5 9.5L9.2 9H10.1V14.9H8.8V10.3Z\" fill={color} />\n <path\n d=\"M11.3008 12C11.3008 10.3 12.4008 9 13.9008 9C15.4008 9 16.5008 10.3 16.5008 12C16.5008 13.7 15.5008 15 13.9008 15C12.3008 15 11.3008 13.7 11.3008 12ZM15.2008 12C15.2008 10.9 14.7008 10.1 13.9008 10.1C13.1008 10.1 12.6008 10.9 12.6008 12C12.6008 13.1 13.1008 13.9 13.9008 13.9C14.7008 13.9 15.2008 13.1 15.2008 12Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M3 9H4V4H9V3H3V9Z\" fill={color} />\n <path d=\"M20 20H15V21H21V15H20V20Z\" fill={color} />\n <path d=\"M15 3V4H20V9H21V3H15Z\" fill={color} />\n <path d=\"M4 15H3V21H9V20H4V15Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H14.3H15.3H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 4C19.6 4 20 4.4 20 5V8.9H15.3V4H19ZM9.7 9.9H14.4V14.6H9.7V9.9ZM8.7 14.6H4V9.9H8.7V14.6ZM15.3 9.9H20V14.6H15.3V9.9ZM14.3 8.9H9.7V4H14.4V8.9H14.3ZM5 4H8.7V8.9H4V5C4 4.4 4.4 4 5 4ZM4 19V15.6H8.7V20H5C4.4 20 4 19.6 4 19ZM9.7 20V15.6H14.4V20H9.7ZM19 20H15.3V15.6H20V19C20 19.6 19.6 20 19 20Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M22 12.1L12 4L2 12.1L2.6 12.9L4.8 11.1V18C4.8 19.1 5.7 20 6.8 20H9.6C10.1 20 10.5 19.6 10.5 19.1V15.3C10.5 14.9 10.7 14.5 11 14.2C11.3 13.9 11.7 13.8 12.1 13.8C12.9 13.8 13.5 14.6 13.5 15.4V19.1C13.5 19.6 13.9 20 14.4 20H17.2C18.3 20 19.2 19.1 19.2 18V11.1L21.4 12.9L22 12.1ZM18.2 18C18.2 18.6 17.8 19 17.2 19H14.6V15.4C14.6 14 13.5 12.8 12.2 12.8C11.5 12.8 10.8 13 10.3 13.5C9.8 14 9.5 14.6 9.5 15.3V19H6.8C6.2 19 5.8 18.5 5.8 18V10.3L12 5.3L18.2 10.3V18Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2ZM12 21C7 21 3 17 3 12C3 7 7 3 12 3C17 3 21 7 21 12C21 17 17 21 12 21Z\"\n fill={color}\n />\n <path d=\"M12.5 9.5H11.5V17.5H12.5V9.5Z\" fill={color} />\n <path d=\"M12.5 6.5H11.5V7.5H12.5V6.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M11.9998 4.62C14.3998 4.62 14.6898 4.62 15.6398 4.62C16.2138 4.652 16.7784 4.78047 17.3098 5C17.6891 5.15025 18.0306 5.38245 18.3098 5.68C18.6073 5.95918 18.8395 6.30065 18.9898 6.68C19.1854 7.21552 19.2901 7.77996 19.2998 8.35C19.2998 9.35 19.3498 9.59 19.3498 11.99C19.3498 14.39 19.3498 14.68 19.2998 15.63C19.2945 16.2028 19.1931 16.7707 18.9998 17.31C18.8495 17.6893 18.6173 18.0308 18.3198 18.31C18.0406 18.6075 17.6991 18.8397 17.3198 18.99C16.7843 19.1856 16.2198 19.2904 15.6498 19.3C14.6998 19.3 14.4098 19.35 12.0098 19.35C9.60978 19.35 9.31978 19.35 8.36978 19.3C7.79694 19.2947 7.22905 19.1933 6.68978 19C6.31043 18.8497 5.96896 18.6175 5.68978 18.32C5.39223 18.0408 5.16003 17.6993 5.00978 17.32C4.81419 16.7845 4.70942 16.22 4.69978 15.65C4.69978 14.65 4.64978 14.41 4.64978 12.01C4.64978 9.61 4.64978 9.32 4.69978 8.37C4.70509 7.79716 4.8065 7.22927 4.99978 6.69C5.15003 6.31065 5.38223 5.96918 5.67978 5.69C5.95897 5.39245 6.30044 5.16025 6.67978 5.01C7.21531 4.81441 7.77974 4.70963 8.34978 4.7C9.34978 4.7 9.58978 4.7 11.9898 4.7L11.9998 4.62ZM11.9998 3C9.55978 3 9.24978 3 8.28978 3C7.54184 3.02033 6.80218 3.16219 6.09978 3.42C5.50426 3.63557 4.96202 3.9766 4.50978 4.42C4.06638 4.87223 3.72535 5.41448 3.50978 6.01C3.25197 6.7124 3.11012 7.45206 3.08978 8.2C3.08978 9.2 3.08978 9.47 3.08978 11.91C3.08978 14.35 3.08978 14.66 3.08978 15.62C3.11012 16.3679 3.25197 17.1076 3.50978 17.81C3.72535 18.4055 4.06638 18.9478 4.50978 19.4C4.96202 19.8434 5.50426 20.1844 6.09978 20.4C6.80218 20.6578 7.54184 20.7997 8.28978 20.82C9.28978 20.82 9.55978 20.87 11.9998 20.87C14.4398 20.87 14.7498 20.87 15.7098 20.82C16.4577 20.7997 17.1974 20.6578 17.8998 20.4C18.4953 20.1844 19.0375 19.8434 19.4898 19.4C19.9332 18.9478 20.2742 18.4055 20.4898 17.81C20.769 17.1411 20.9411 16.4324 20.9998 15.71C20.9998 14.71 21.0498 14.44 21.0498 12C21.0498 9.56 21.0498 9.25 20.9998 8.29C20.9794 7.54206 20.8376 6.8024 20.5798 6.1C20.3642 5.50448 20.0232 4.96223 19.5798 4.51C19.1275 4.0666 18.5853 3.72557 17.9898 3.51C17.2874 3.25219 16.5477 3.11033 15.7998 3.09C14.7998 3.09 14.5298 3.09 12.0898 3.09L11.9998 3Z\"\n fill={color}\n />\n <path\n d=\"M11.9998 7.37988C10.7745 7.37988 9.59934 7.86663 8.73293 8.73305C7.86651 9.59947 7.37976 10.7746 7.37976 11.9999C7.37976 13.2252 7.86651 14.4003 8.73293 15.2667C9.59934 16.1331 10.7745 16.6199 11.9998 16.6199C13.2251 16.6199 14.4002 16.1331 15.2666 15.2667C16.133 14.4003 16.6198 13.2252 16.6198 11.9999C16.6198 10.7746 16.133 9.59947 15.2666 8.73305C14.4002 7.86663 13.2251 7.37988 11.9998 7.37988ZM11.9998 14.9999C11.2041 14.9999 10.4411 14.6838 9.87844 14.1212C9.31583 13.5586 8.99976 12.7955 8.99976 11.9999C8.99976 11.2042 9.31583 10.4412 9.87844 9.87856C10.4411 9.31595 11.2041 8.99988 11.9998 8.99988C12.7954 8.99988 13.5585 9.31595 14.1211 9.87856C14.6837 10.4412 14.9998 11.2042 14.9998 11.9999C14.9998 12.7955 14.6837 13.5586 14.1211 14.1212C13.5585 14.6838 12.7954 14.9999 11.9998 14.9999Z\"\n fill={color}\n />\n <path\n d=\"M16.7998 8.28012C17.3963 8.28012 17.8798 7.79658 17.8798 7.20012C17.8798 6.60365 17.3963 6.12012 16.7998 6.12012C16.2033 6.12012 15.7198 6.60365 15.7198 7.20012C15.7198 7.79658 16.2033 8.28012 16.7998 8.28012Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M4.5 7C5.32843 7 6 6.32843 6 5.5C6 4.67157 5.32843 4 4.5 4C3.67157 4 3 4.67157 3 5.5C3 6.32843 3.67157 7 4.5 7Z\"\n fill={color}\n />\n <path d=\"M21 5H8V6H21V5Z\" fill={color} />\n <path\n d=\"M4.5 20C5.32843 20 6 19.3284 6 18.5C6 17.6716 5.32843 17 4.5 17C3.67157 17 3 17.6716 3 18.5C3 19.3284 3.67157 20 4.5 20Z\"\n fill={color}\n />\n <path d=\"M21 18H8V19H21V18Z\" fill={color} />\n <path\n d=\"M4.5 13.5C5.32843 13.5 6 12.8284 6 12C6 11.1716 5.32843 10.5 4.5 10.5C3.67157 10.5 3 11.1716 3 12C3 12.8284 3.67157 13.5 4.5 13.5Z\"\n fill={color}\n />\n <path d=\"M21 11.5H8V12.5H21V11.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M3 3V7H21V3H3ZM20 6H4V4H20V6Z\" fill={color} />\n <path d=\"M3 21H21V17H3V21ZM4 18H20V20H4V18Z\" fill={color} />\n <path d=\"M3 14H21V10H3V14ZM4 11H20V13H4V11Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 15.5C10.1 15.5 8.5 13.9 8.5 12C8.5 10.1 10.1 8.5 12 8.5C13.9 8.5 15.5 10.1 15.5 12C15.5 13.9 13.9 15.5 12 15.5ZM12 9.5C10.6 9.5 9.5 10.6 9.5 12C9.5 13.4 10.6 14.5 12 14.5C13.4 14.5 14.5 13.4 14.5 12C14.5 10.6 13.4 9.5 12 9.5Z\"\n fill={color}\n />\n <path\n d=\"M16.7996 17.4L16.0996 16.7C18.3996 14.1 18.3996 9.9 16.0996 7.2L16.7996 6.5C19.4996 9.6 19.4996 14.4 16.7996 17.4Z\"\n fill={color}\n />\n <path d=\"M7.2 17.4C4.6 14.4 4.6 9.5 7.2 6.5L7.9 7.2C5.6 9.8 5.6 14 7.9 16.7L7.2 17.4Z\" fill={color} />\n <path\n d=\"M19.1004 20L18.4004 19.3C21.9004 15.3 21.9004 8.7 18.4004 4.7L19.1004 4C23.0004 8.4 23.0004 15.6 19.1004 20Z\"\n fill={color}\n />\n <path\n d=\"M4.89961 20C0.999609 15.6 0.999609 8.4 4.89961 4L5.59961 4.7C2.09961 8.7 2.09961 15.3 5.59961 19.3L4.89961 20Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C9.87827 2 7.84344 2.84285 6.34315 4.34315C4.84286 5.84344 4 7.87827 4 10C4 14.42 12 22 12 22C12 22 20 14.42 20 10C20 7.87827 19.1571 5.84344 17.6569 4.34315C16.1566 2.84285 14.1217 2 12 2ZM12 20.6C9.55 18.14 5 13 5 10C5 8.14348 5.7375 6.36301 7.05025 5.05025C8.36301 3.7375 10.1435 3 12 3C13.8565 3 15.637 3.7375 16.9497 5.05025C18.2625 6.36301 19 8.14348 19 10C19 13 14.45 18.14 12 20.6Z\"\n fill={color}\n />\n <path\n d=\"M12 7C11.2044 7 10.4413 7.31607 9.87868 7.87868C9.31607 8.44129 9 9.20435 9 10C9 10.7956 9.31607 11.5587 9.87868 12.1213C10.4413 12.6839 11.2044 13 12 13C12.7956 13 13.5587 12.6839 14.1213 12.1213C14.6839 11.5587 15 10.7956 15 10C15 9.20435 14.6839 8.44129 14.1213 7.87868C13.5587 7.31607 12.7956 7 12 7ZM12 12C11.4696 12 10.9609 11.7893 10.5858 11.4142C10.2107 11.0391 10 10.5304 10 10C10 9.46957 10.2107 8.96086 10.5858 8.58579C10.9609 8.21071 11.4696 8 12 8C12.5304 8 13.0391 8.21071 13.4142 8.58579C13.7893 8.96086 14 9.46957 14 10C14 10.5304 13.7893 11.0391 13.4142 11.4142C13.0391 11.7893 12.5304 12 12 12Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M22 5H2V6H22V5Z\" fill={color} />\n <path d=\"M22 18H2V19H22V18Z\" fill={color} />\n <path d=\"M22 11.5H2V12.5H22V11.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M9 3H8V8H3V9H9V3Z\" fill={color} />\n <path d=\"M16 16H21V15H15V21H16V16Z\" fill={color} />\n <path d=\"M21 9V8H16V3H15V9H21Z\" fill={color} />\n <path d=\"M8 21H9V15H3V16H8V21Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M22.0008 9.9001L21.3008 9.1001L19.2008 11.3001L17.0008 9.1001L16.3008 9.9001L18.4008 12.0001L16.3008 14.1001L17.0008 14.9001L19.2008 12.7001L21.3008 14.9001L22.0008 14.1001L19.9008 12.0001L22.0008 9.9001Z\"\n fill={color}\n />\n <path\n d=\"M4.5 9.5C3.7 9.5 3 10.2 3 11V14C3 14.8 3.7 15.5 4.5 15.5H6.8L14 21V4L6.8 9.5H4.5ZM13 6V19L7.2 14.5H4.5C4.2 14.5 4 14.3 4 14V11C4 10.7 4.2 10.5 4.5 10.5H7.2L13 6Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M15.4996 20.2002L13.3996 17.7002L12.5996 18.3002L15.5996 21.8002L20.8996 13.8002L20.0996 13.2002L15.4996 20.2002Z\"\n fill={color}\n />\n <path d=\"M21 3H3V4H21V3Z\" fill={color} />\n <path d=\"M21 6.5H3V7.5H21V6.5Z\" fill={color} />\n <path d=\"M21 10H3V11H21V10Z\" fill={color} />\n <path d=\"M14.5 13.5H3V14.5H14.5V13.5Z\" fill={color} />\n <path d=\"M11 17H3V18H11V17Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M22 11V10C20.9391 10 19.9217 9.57857 19.1715 8.82843C18.4214 8.07828 18 7.06087 18 6H17V14.78C16.4875 14.3216 15.833 14.0532 15.1463 14.0197C14.4595 13.9862 13.7821 14.1896 13.2273 14.5958C12.6726 15.0021 12.2743 15.5866 12.0991 16.2515C11.9238 16.9164 11.9823 17.6213 12.2647 18.2482C12.5471 18.8751 13.0363 19.386 13.6504 19.6954C14.2644 20.0047 14.9661 20.0937 15.638 19.9475C16.3098 19.8013 16.9111 19.4287 17.3411 18.8921C17.771 18.3556 18.0037 17.6876 18 17V9C18.4657 9.62098 19.0696 10.125 19.7639 10.4721C20.4582 10.8193 21.2237 11 22 11V11ZM15 19C14.6044 19 14.2177 18.8827 13.8888 18.6629C13.5599 18.4432 13.3036 18.1308 13.1522 17.7654C13.0008 17.3999 12.9612 16.9978 13.0384 16.6098C13.1156 16.2219 13.306 15.8655 13.5857 15.5858C13.8655 15.3061 14.2218 15.1156 14.6098 15.0384C14.9977 14.9613 15.3999 15.0009 15.7653 15.1522C16.1308 15.3036 16.4431 15.56 16.6629 15.8889C16.8827 16.2178 17 16.6044 17 17C17 17.5304 16.7892 18.0391 16.4142 18.4142C16.0391 18.7893 15.5304 19 15 19Z\"\n fill={color}\n />\n <path d=\"M22 4.02979H2V5.02979H22V4.02979Z\" fill={color} />\n <path d=\"M11 19.0298H2V20.0298H11V19.0298Z\" fill={color} />\n <path d=\"M22 19.0298H19V20.0298H22V19.0298Z\" fill={color} />\n <path d=\"M11 14.0298H2V15.0298H11V14.0298Z\" fill={color} />\n <path d=\"M22 14.0298H19V15.0298H22V14.0298Z\" fill={color} />\n <path d=\"M15 9.02979H2V10.0298H15V9.02979Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M10 2H4V22H10V2Z\" fill={color} />\n <path d=\"M20 2H14V22H20V2Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2ZM14.5 3.9L18.1 7.5H14.5V3.9ZM18 21H6C5.4 21 5 20.6 5 20V4C5 3.4 5.4 3 6 3H13.6H13.5V8.5H19V20C19 20.6 18.6 21 18 21Z\"\n fill={color}\n />\n <path\n d=\"M8 12H9.2C9.9 12 10.3 12.4 10.3 13C10.3 13.7 9.8 14 9.2 14H8.6V14.8H8V12ZM9.1 13.4C9.4 13.4 9.6 13.2 9.6 13C9.6 12.7 9.4 12.6 9.1 12.6H8.6V13.5H9.1V13.4Z\"\n fill={color}\n />\n <path\n d=\"M10.6992 12H11.7992C12.6992 12 13.2992 12.6 13.2992 13.4C13.2992 14.2 12.6992 14.8 11.7992 14.8H10.6992V12ZM11.7992 14.3C12.2992 14.3 12.6992 14 12.6992 13.5C12.6992 13 12.3992 12.6 11.7992 12.6H11.2992V14.3H11.7992Z\"\n fill={color}\n />\n <path d=\"M13.9004 12H16.0004V12.6H14.5004V13.2H15.8004V13.8H14.5004V14.9H13.9004V12Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20.14 14H20C18.5808 13.8715 17.201 13.4637 15.94 12.8L15.67 12.66C15.5265 12.5796 15.3645 12.5382 15.2 12.54C14.9377 12.5411 14.6863 12.6453 14.5 12.83L12.9 14.43C11.4318 13.3789 10.1763 12.0589 9.2 10.54L10.85 8.89001C11.0287 8.70464 11.129 8.45748 11.13 8.20001C11.1278 8.08009 11.1041 7.96154 11.06 7.85001L10.87 7.45001C10.3893 6.35669 10.0952 5.19054 10 4.00001C9.99507 3.96686 9.99507 3.93316 10 3.90001C9.97513 3.65249 9.85889 3.42312 9.67398 3.25671C9.48907 3.09029 9.24877 2.99877 9 3.00001H4C3.73478 3.00001 3.48043 3.10537 3.29289 3.29291C3.10536 3.48044 3 3.7348 3 4.00001C3.24002 8.43074 5.10813 12.6167 8.24573 15.7543C11.3833 18.8919 15.5693 20.76 20 21C20.2652 21 20.5196 20.8947 20.7071 20.7071C20.8946 20.5196 21 20.2652 21 20V15C21.0024 14.7574 20.9165 14.5221 20.7582 14.3381C20.6 14.1541 20.3803 14.034 20.14 14ZM20 17V20C16.9863 19.8334 14.0721 18.8631 11.56 17.19C11.28 17 11.01 16.79 10.74 16.59C9.29429 15.4967 8.03183 14.1802 7 12.69C6.8 12.4 6.62 12.11 6.44 11.82C4.99691 9.45324 4.1589 6.76749 4 4.00001H9C9 4.34001 9.07 4.67001 9.13 5.00001C9.25673 5.76115 9.45769 6.50805 9.73 7.23001C9.85 7.54001 9.98 7.85001 10.12 8.15001L9.41 8.86001L8.62 9.64001L7.89 10.38C8.06 10.68 8.23 10.97 8.42 11.26C9.4178 12.7656 10.6778 14.0797 12.14 15.14C12.41 15.34 12.69 15.53 12.98 15.72L13.71 14.98L14.46 14.23L15.16 13.53L16.06 13.98C16.9924 14.3929 17.9737 14.6853 18.98 14.85C19.3 14.91 19.63 14.95 19.98 14.98V16.98L20 17Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M5.5 3.8999L20 11.9999L5.5 20.0999V3.8999Z\" fill={color} />\n <path d=\"M6 4.7L19 12L6 19.3V4.7ZM5 3V21L21 12L5 3Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19 6H16V3H8V6H5C3.9 6 3 6.9 3 8V16C3 17.1 3.9 18 5 18H8V21H16V18H19C20.1 18 21 17.1 21 16V8C21 6.9 20.1 6 19 6ZM9 4H15V6H9V4ZM15 20H9V14H15V20ZM20 16C20 16.6 19.6 17 19 17H16V13H8V17H5C4.4 17 4 16.6 4 16V8C4 7.4 4.4 7 5 7H19C19.6 7 20 7.4 20 8V16Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18.71 13.9001C18.3138 15.3804 17.4428 16.6898 16.2307 17.6273C15.0186 18.5648 13.5323 19.0787 12 19.0901C10.2633 19.0541 8.59637 18.3999 7.29868 17.2452C6.00098 16.0905 5.15758 14.5108 4.92 12.7901L6.64 14.2901L7.21 13.5701L4.42 11.1001L2 14.0001L2.7 14.5901L4.17 12.8301C4.33413 14.6921 5.15733 16.4345 6.49149 17.7437C7.82566 19.0529 9.58323 19.8431 11.448 19.9721C13.3128 20.1011 15.1624 19.5604 16.6641 18.4473C18.1658 17.3342 19.2211 15.7218 19.64 13.9001H18.71Z\"\n fill={color}\n />\n <path\n d=\"M21.2994 9.44987L19.8294 11.2099C19.6738 9.34515 18.8572 7.59736 17.5268 6.28151C16.1964 4.96566 14.4397 4.16832 12.5734 4.0332C10.7071 3.89808 8.8539 4.43407 7.34785 5.54457C5.8418 6.65507 4.78196 8.26702 4.35938 10.0899H5.28937C5.68741 8.61145 6.55919 7.30431 7.77114 6.36871C8.98308 5.43311 10.4683 4.92066 11.9994 4.90987C13.7361 4.9459 15.403 5.60004 16.7007 6.75476C17.9984 7.90949 18.8418 9.48913 19.0794 11.2099L17.3594 9.70987L16.7894 10.4299L19.5994 12.8999L21.9994 9.99987L21.2994 9.44987Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18 18V10C18 6.9 15.6 4.3 12.5 4V2H11.5V4C8.4 4.3 6 6.9 6 10V18H4V19H6H9C9 20.7 10.3 22 12 22C13.7 22 15 20.7 15 19H18H20V18H18ZM12 21C10.9 21 10 20.1 10 19H14C14 20.1 13.1 21 12 21ZM15 18H9H7V10C7 7.2 9.2 5 12 5C14.8 5 17 7.2 17 10V18H15Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M7.06066 5.93957L11.0001 2.00011L9.93945 0.939453L6 4.87891L2.06055 0.939453L0.999887 2.00011L4.93934 5.93957L0.939453 9.93945L2.00011 11.0001L6 7.00023L9.99989 11.0001L11.0605 9.93945L7.06066 5.93957Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-label={ariaLabel}>\n <g>\n <path\n d=\"M6.9956 5.96581L11.8642 10.8344L10.9042 11.7944L6.0356 6.92581L1.16703 11.7944L0.207031 10.8344L5.0756 5.96581L0.207031 1.16581L1.16703 0.205811L6.0356 5.07438L10.9042 0.205811L11.8642 1.16581L6.9956 5.96581Z\"\n fill={color}\n />\n </g>\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12.6 7.4H5.9L9.6 3.7L8.9 3L4 7.9L8.9 12.8L9.6 12.1L5.9 8.4H12.6C16.1 8.4 18.9 11.2 18.9 14.7C18.9 18.2 16 21 12.6 21C9.1 21 6.3 18.2 6.3 14.7H5.3C5.3 18.7 8.6 22 12.6 22C16.6 22 19.9 18.7 19.9 14.7C19.8 10.7 16.6 7.4 12.6 7.4Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M21 20.3L16.1 15.4C17.3 14.1 18 12.4 18 10.5C18 6.4 14.6 3 10.5 3C6.4 3 3 6.4 3 10.5C3 14.6 6.4 18 10.5 18C12.4 18 14.1 17.3 15.4 16.1L20.3 21L21 20.3ZM4 10.5C4 6.9 6.9 4 10.5 4C14.1 4 17 6.9 17 10.5C17 14.1 14.1 17 10.5 17C6.9 17 4 14.1 4 10.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M17.5 7.8V4.9c0-2.7-2.2-4.9-4.9-4.9H7.2C4.5 0 2.3 2.2 2.3 4.9v2.9H0V20h4.2v-3.7h11.3V20h4.2V7.8h-2.2ZM3 4.8h.3v.1C3.3 2.8 5 1 7.2 1h5.4c2.2 0 3.9 1.8 3.9 3.9v2.8h-1v4.6H4.2V7.8H3v-3ZM1 19V8.7h2.2v3.6H1.9v4h1.3V19H1Zm1.9-3.6v-2h13.9v2H2.9ZM18.8 19h-2.2v-2.7h1.3v-4h-1.3V8.7h2.2V19Z\"\n fill={color}\n />\n <path d=\"M3.3 7.8v-3H3v3h.3Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18 9H17V7C17 5.67392 16.4732 4.40215 15.5355 3.46447C14.5979 2.52678 13.3261 2 12 2C10.6739 2 9.40215 2.52678 8.46447 3.46447C7.52678 4.40215 7 5.67392 7 7V9H6C5.46957 9 4.96086 9.21071 4.58579 9.58579C4.21071 9.96086 4 10.4696 4 11V20C4 20.5304 4.21071 21.0391 4.58579 21.4142C4.96086 21.7893 5.46957 22 6 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V11C20 10.4696 19.7893 9.96086 19.4142 9.58579C19.0391 9.21071 18.5304 9 18 9ZM8 7C8 5.93913 8.42143 4.92172 9.17157 4.17157C9.92172 3.42143 10.9391 3 12 3C13.0609 3 14.0783 3.42143 14.8284 4.17157C15.5786 4.92172 16 5.93913 16 7V9H8V7ZM19 20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V11C5 10.7348 5.10536 10.4804 5.29289 10.2929C5.48043 10.1054 5.73478 10 6 10H18C18.2652 10 18.5196 10.1054 18.7071 10.2929C18.8946 10.4804 19 10.7348 19 11V20Z\"\n fill={color}\n />\n <path\n d=\"M12.0001 13C11.6483 13.0027 11.3087 13.129 11.0406 13.3568C10.7725 13.5845 10.593 13.8992 10.5334 14.2459C10.4738 14.5926 10.538 14.9493 10.7147 15.2534C10.8914 15.5576 11.1694 15.79 11.5001 15.91V18H12.5001V15.91C12.8308 15.79 13.1088 15.5576 13.2855 15.2534C13.4622 14.9493 13.5264 14.5926 13.4668 14.2459C13.4072 13.8992 13.2277 13.5845 12.9596 13.3568C12.6915 13.129 12.3519 13.0027 12.0001 13Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19.4157 12.1133C19.4157 11.9133 19.4157 11.7133 19.4157 11.4133L22.1992 8.81328L20.1374 5.31328L16.426 6.31328C16.0137 6.11328 15.6013 5.91328 15.1889 5.71328L14.2611 2.11328H10.1374L9.20953 5.71328C8.79716 5.91328 8.38479 6.11328 8.07551 6.41328L4.36417 5.41328L2.30231 8.91328L4.98272 11.5133C4.98272 11.7133 4.98272 11.9133 4.98272 12.2133C4.98272 12.5133 4.98272 12.6133 4.98272 12.9133L2.19922 15.4133L4.26107 18.9133L8.07551 17.9133C8.38479 18.1133 8.79716 18.3133 9.20953 18.5133L10.1374 22.1133H14.2611L15.1889 18.5133C15.6013 18.3133 16.0137 18.1133 16.3229 17.8133L20.0343 18.8133L22.0961 15.3133L19.3126 12.7133C19.4157 12.5133 19.4157 12.3133 19.4157 12.1133ZM20.859 15.5133L19.6219 17.6133L16.6322 16.8133L16.1167 16.7133L15.7044 17.0133C15.3951 17.2133 14.9827 17.4133 14.6734 17.6133L14.2611 17.8133L14.158 18.3133L13.4363 21.1133H10.859L10.1374 18.2133L10.0343 17.7133L9.6219 17.5133C9.31262 17.3133 8.90025 17.2133 8.59097 16.9133L8.1786 16.6133L7.66314 16.7133L4.77654 17.5133L3.53943 15.4133L5.70437 13.3133L6.01365 13.1133V12.6133C6.01365 12.2133 6.01365 11.8133 6.01365 11.5133V11.0133L5.70437 10.7133L3.53943 8.71328L4.77654 6.61328L7.66314 7.41328L8.1786 7.51328L8.59097 7.21328C8.90025 7.01328 9.31262 6.81328 9.6219 6.61328L10.0343 6.41328L10.1374 5.91328L10.859 3.11328H13.3332L14.0549 6.01328L14.158 6.51328L14.5704 6.71328C14.8796 6.91328 15.292 7.01328 15.6013 7.31328L16.0137 7.61328L16.6322 7.41328L19.6219 6.61328L20.859 8.71328L18.6941 10.8133L18.2817 11.1133V11.6133C18.2817 12.0133 18.2817 12.4133 18.2817 12.7133V13.2133L18.591 13.5133L20.859 15.5133Z\"\n fill={color}\n />\n <path\n d=\"M12.1999 8.11328C9.93184 8.11328 8.07617 9.91328 8.07617 12.1133C8.07617 14.3133 9.93184 16.1133 12.1999 16.1133C14.4679 16.1133 16.3236 14.3133 16.3236 12.1133C16.3236 9.91328 14.4679 8.11328 12.1999 8.11328ZM12.1999 15.1133C10.4473 15.1133 9.1071 13.8133 9.1071 12.1133C9.1071 10.4133 10.4473 9.11328 12.1999 9.11328C13.9525 9.11328 15.2927 10.4133 15.2927 12.1133C15.2927 13.8133 13.8494 15.1133 12.1999 15.1133Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 3L3 12H8V21H16V12H21L12 3ZM15 11V12V20H9V12V11H8H5.4L12 4.4L18.6 11H16H15Z\"\n fill={color}\n aria-label={ariaLabel}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 16V19H3V16H2V19V20H3H21H22V19V16H21Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M9.8 3.9c1.1 0 1.9-.9 1.9-1.9 0-1-.8-2-1.9-2-1.1 0-1.9.9-1.9 2s.9 1.9 1.9 1.9Zm0-2.9c.5 0 .9.4.9.9s-.4.9-.9.9-.9-.3-.9-.8.4-1 .9-1Zm2 3.2H8c-1.3 0-2.3 1-2.3 2.2v6.4h1.7V20h4.9v-7h1.8V6.4c0-1.2-1.1-2.2-2.3-2.2Zm1.3 7.8h-.8V7.4c0-.2-.2-.4-.5-.4-.2 0-.5.2-.5.4V19h-.9v-6.3c0-.2-.2-.4-.5-.4-.2 0-.5.2-.5.4V19h-1V7.4c0-.2-.2-.4-.5-.4-.2 0-.5.2-.5.4v4.5h-.7V6.5c0-.7.6-1.2 1.3-1.2h3.7c.7 0 1.3.5 1.3 1.2l.1 5.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 48 46\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M24 0L30.0248 16.7076L47.7764 17.2746L33.7483 28.1674L38.6946 45.2254L24 35.25L9.30537 45.2254L14.2517 28.1674L0.223587 17.2746L17.9752 16.7076L24 0Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M20 4V20H4V4H20ZM21 3H3V21H21V3Z\" fill={color} />\n <path d=\"M12.5 11.5V7H11.5V11.5H7V12.5H11.5V17H12.5V12.5H17V11.5H12.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M9 7H7V8H9V7Z\" fill={color} />\n <path d=\"M17 7H11V8H17V7Z\" fill={color} />\n <path d=\"M9 12H7V13H9V12Z\" fill={color} />\n <path d=\"M17 12H11V13H17V12Z\" fill={color} />\n <path d=\"M17 9.5H15V10.5H17V9.5Z\" fill={color} />\n <path d=\"M13 9.5H7V10.5H13V9.5Z\" fill={color} />\n <path\n d=\"M19 3H5C4.46957 3 3.96086 3.21071 3.58579 3.58579C3.21071 3.96086 3 4.46957 3 5V15C3 15.5304 3.21071 16.0391 3.58579 16.4142C3.96086 16.7893 4.46957 17 5 17H11.3L17 21V17H19C19.5304 17 20.0391 16.7893 20.4142 16.4142C20.7893 16.0391 21 15.5304 21 15V5C21 4.46957 20.7893 3.96086 20.4142 3.58579C20.0391 3.21071 19.5304 3 19 3ZM20 15C20.0088 15.1336 19.989 15.2676 19.9419 15.3929C19.8948 15.5182 19.8214 15.632 19.7267 15.7267C19.632 15.8214 19.5182 15.8948 19.3929 15.9419C19.2676 15.989 19.1336 16.0088 19 16H16V19L13.1 17L12.9 16.8L11.7 16H5C4.86639 16.0088 4.73244 15.989 4.6071 15.9419C4.48177 15.8948 4.36795 15.8214 4.27327 15.7267C4.17859 15.632 4.10523 15.5182 4.0581 15.3929C4.01097 15.2676 3.99116 15.1336 4 15V5C3.99116 4.86639 4.01097 4.73244 4.0581 4.6071C4.10523 4.48177 4.17859 4.36795 4.27327 4.27327C4.36795 4.17859 4.48177 4.10523 4.6071 4.0581C4.73244 4.01097 4.86639 3.99116 5 4H19C19.1336 3.99116 19.2676 4.01097 19.3929 4.0581C19.5182 4.10523 19.632 4.17859 19.7267 4.27327C19.8214 4.36795 19.8948 4.48177 19.9419 4.6071C19.989 4.73244 20.0088 4.86639 20 5V15Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M4.09961 11.1999L1.09961 7.2999L1.89961 6.6999L4.09961 9.4999L10.0996 1.3999L10.8996 1.9999L4.09961 11.1999Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M12 14H11V16H12V14Z\" fill={color} />\n <path d=\"M15 8H14V10H15V8Z\" fill={color} />\n <path\n d=\"M19 4C19 4.26522 18.8946 4.51957 18.7071 4.70711C18.5196 4.89464 18.2652 5 18 5C17.7348 5 17.4804 4.89464 17.2929 4.70711C17.1054 4.51957 17 4.26522 17 4H5V10H2V20H14C14 19.7348 14.1054 19.4804 14.2929 19.2929C14.4804 19.1054 14.7348 19 15 19C15.2652 19 15.5196 19.1054 15.7071 19.2929C15.8946 19.4804 16 19.7348 16 20H19V14H22V4H19ZM18 19H16.73C16.5542 18.6969 16.3018 18.4453 15.9982 18.2705C15.6946 18.0956 15.3504 18.0035 15 18.0035C14.6496 18.0035 14.3054 18.0956 14.0018 18.2705C13.6982 18.4453 13.4458 18.6969 13.27 19H12V17H11V19H3V11H11V13H12V11H13.27C13.4458 11.3031 13.6982 11.5547 14.0018 11.7295C14.3054 11.9044 14.6496 11.9965 15 11.9965C15.3504 11.9965 15.6946 11.9044 15.9982 11.7295C16.3018 11.5547 16.5542 11.3031 16.73 11H18V19ZM21 13H19.73C19.5547 12.697 19.303 12.4453 19 12.27V10H16C16 10.2652 15.8946 10.5196 15.7071 10.7071C15.5196 10.8946 15.2652 11 15 11C14.7348 11 14.4804 10.8946 14.2929 10.7071C14.1054 10.5196 14 10.2652 14 10H6V5H14V7H15V5H16.27C16.4458 5.30308 16.6982 5.55465 17.0018 5.72953C17.3054 5.90441 17.6496 5.99646 18 5.99646C18.3504 5.99646 18.6946 5.90441 18.9982 5.72953C19.3018 5.55465 19.5542 5.30308 19.73 5H21V13Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19.6997 10.28C19.5532 10.2898 19.4062 10.2898 19.2597 10.28C18.4648 10.2811 17.6823 10.083 16.9836 9.70397C16.2849 9.32492 15.6922 8.77693 15.2597 8.11V15.51C15.2597 16.5919 14.9389 17.6494 14.3378 18.549C13.7368 19.4485 12.8825 20.1496 11.883 20.5636C10.8835 20.9776 9.78364 21.086 8.72256 20.8749C7.66148 20.6638 6.68682 20.1429 5.92183 19.3779C5.15684 18.6129 4.63587 17.6382 4.42481 16.5771C4.21375 15.5161 4.32207 14.4162 4.73608 13.4167C5.15009 12.4172 5.8512 11.5629 6.75074 10.9619C7.65027 10.3608 8.70784 10.04 9.7897 10.04H10.1297V12.73H9.7897C9.04975 12.73 8.3401 13.0239 7.81688 13.5472C7.29365 14.0704 6.9997 14.78 6.9997 15.52C6.9997 16.26 7.29365 16.9696 7.81688 17.4928C8.3401 18.0161 9.04975 18.31 9.7897 18.31C10.5372 18.3236 11.26 18.0429 11.8025 17.5285C12.345 17.0141 12.6636 16.3071 12.6897 15.56L12.6997 3H15.2797C15.3963 4.11994 15.9028 5.16325 16.7108 5.94747C17.5188 6.7317 18.5768 7.20691 19.6997 7.29V10.29\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M16.8 3H15.8H12.5H11.5H8.2H7.2H3V7.5V8.3V15.7V16.5V21H7.2H8.2H11.4H12.4H15.6H16.6H21V17V15.7V8.3V8V3H16.8ZM16.8 4H20V7.3H16.8V4ZM12.5 4H15.7V7.3H12.5V4ZM8.2 4H11.4V7.3H8.2V4ZM4 4H7.2V7.3H4V4ZM7.2 20H4V16.7H7.2V20ZM11.5 20H8.2V16.7H11.4V20H11.5ZM15.8 20H12.5V16.7H15.7V20H15.8ZM20 20H16.8V16.7H20V17V20ZM20 15.7H16.8H15.8H12.5H11.5H8.2H7.2H4V8.3H7.2H8.2H11.4H12.4H15.6H16.6H20V15.7Z\"\n fill={color}\n />\n <path d=\"M10 14.5999L15 11.9999L10 9.3999V14.5999Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M21.9998 5.88989C21.2497 6.22055 20.4541 6.43631 19.6398 6.52989C20.4934 6.0305 21.1366 5.23803 21.4498 4.29989C20.6398 4.77267 19.7583 5.11042 18.8398 5.29989C18.4539 4.89263 17.9885 4.5689 17.4725 4.34873C16.9565 4.12856 16.4008 4.01664 15.8398 4.01989C14.7662 4.01179 13.7327 4.42715 12.9634 5.17592C12.194 5.92469 11.7508 6.94652 11.7298 8.01989C11.7307 8.32978 11.7676 8.63852 11.8398 8.93989C10.2142 8.86071 8.62291 8.44473 7.1666 7.71829C5.71029 6.99186 4.42077 5.97082 3.37975 4.71989C3.02375 5.3266 2.83404 6.01646 2.82976 6.71989C2.82871 7.38732 2.9947 8.04441 3.31258 8.63128C3.63047 9.21815 4.09016 9.71614 4.64976 10.0799C3.99934 10.0599 3.36252 9.88873 2.78976 9.57989C2.78849 10.5249 3.11611 11.4409 3.71641 12.1707C4.31671 12.9006 5.15227 13.3988 6.07976 13.5799C5.72736 13.6732 5.36431 13.7203 4.99976 13.7199C4.74165 13.7169 4.48418 13.6935 4.22976 13.6499C4.49917 14.456 5.01247 15.1585 5.69862 15.6601C6.38478 16.1618 7.20987 16.4377 8.05975 16.4499C6.61975 17.5939 4.83879 18.2239 2.99976 18.2399C2.66976 18.2399 2.33976 18.2399 1.99976 18.2399C3.88906 19.4067 6.06925 20.0167 8.28976 19.9999C9.81706 20.0291 11.3349 19.7535 12.7544 19.1892C14.1739 18.6249 15.4667 17.7832 16.557 16.7133C17.6474 15.6435 18.5134 14.3669 19.1046 12.9583C19.6957 11.5498 20 10.0375 19.9998 8.50989C19.9998 8.32989 19.9998 8.15989 19.9998 7.97989C20.7857 7.40806 21.463 6.70024 21.9998 5.88989Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 12C20.1 12 20.6 16.6 20.9 20H3.1C3.4 16.6 3.9 12 12 12ZM12 11C2 11 2.4 17.7 2 21H22C21.6 17.7 22 11 12 11Z\"\n fill={color}\n />\n <path\n d=\"M12 3C13.7 3 15 4.3 15 6C15 7.7 13.7 9 12 9C10.3 9 9 7.7 9 6C9 4.3 10.3 3 12 3ZM12 2C9.8 2 8 3.8 8 6C8 8.2 9.8 10 12 10C14.2 10 16 8.2 16 6C16 3.8 14.2 2 12 2Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M22 21H2C2.4 17.7 2 11 12 11C22 11 21.6 17.7 22 21Z\" fill={color} />\n <path\n d=\"M12 10C14.2091 10 16 8.20914 16 6C16 3.79086 14.2091 2 12 2C9.79086 2 8 3.79086 8 6C8 8.20914 9.79086 10 12 10Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19 12C19 10.3 17.7 9 16 9V10C17.1 10 18 10.9 18 12C18 13.1 17.1 14 16 14V15C17.7 15 19 13.7 19 12Z\"\n fill={color}\n />\n <path\n d=\"M16 6V7C18.8 7 21 9.2 21 12C21 14.8 18.8 17 16 17V18C19.3 18 22 15.3 22 12C22 8.7 19.3 6 16 6Z\"\n fill={color}\n />\n <path\n d=\"M4.5 9.5C3.7 9.5 3 10.2 3 11V14C3 14.8 3.7 15.5 4.5 15.5H6.8L14 21V4L6.8 9.5H4.5ZM13 6V19L7.2 14.5H4.5C4.2 14.5 4 14.3 4 14V11C4 10.7 4.2 10.5 4.5 10.5H7.2L13 6Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M9 8L16 12L9 16V8Z\" fill={color} />\n <path d=\"M20 4V20H4V4H20ZM21 3H3V21H21V3Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M8.4 18.8c-1.1 0-2.2-.4-3-1.1-.8-.8-1.3-1.8-1.3-2.9-.1-1.6.9-3.2 2.3-3.9l-.4-1c-1.9.9-3 2.8-3 4.9.1 2.8 2.4 5.1 5.3 5.1h.2c2.6-.1 4.7-2.1 5.1-4.6l-1.1-.1c-.3 2-2 3.6-4.1 3.6ZM9.8 4.5c1.2 0 2.2-1 2.2-2.2C12 1.1 11 .1 9.8.1c-1.2 0-2.2 1-2.2 2.2 0 1.2.9 2.2 2.2 2.2Zm0-3.3c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1Zm4.9 12c-.3-.5-.9-.8-1.6-.8h-2.6V6.3c0-.6-.5-1.2-1.1-1.2H6.2c-.5.1-.9.5-.9 1v3.2h1.1V6.2l2.9.1v7.2h3.8c.3 0 .5.1.6.3l3.4 5.4.9-.6-3.3-5.4Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M13.7124 10.6179L20.4133 3H18.8254L13.007 9.61448L8.35992 3H3L10.0274 13.0023L3 20.9908H4.58799L10.7324 14.0056L15.6401 20.9908H21L13.7124 10.6179ZM11.5375 13.0904L10.8255 12.0944L5.16016 4.16911H7.59922L12.1712 10.5651L12.8832 11.5611L18.8262 19.8748H16.3871L11.5375 13.0904Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12.4398 18.8999L8.33978 18.8199C7.00184 18.8681 5.66237 18.7877 4.33978 18.5799C2.33978 18.1699 2.21978 16.1899 2.06978 14.5799C1.86519 12.2448 1.95253 9.89335 2.32978 7.57989C2.3868 6.99013 2.66085 6.44256 3.09878 6.04344C3.5367 5.64432 4.10727 5.4221 4.69978 5.41989C9.1314 5.15166 13.5738 5.10827 18.0098 5.28989C18.4804 5.30645 18.9488 5.36332 19.4098 5.45989C21.6798 5.84989 21.7398 8.09989 21.8798 9.99989C22.0316 11.911 21.9679 13.8331 21.6898 15.7299C21.4598 17.3099 21.0298 18.6199 19.2098 18.7299C16.9298 18.8999 14.7098 19.0299 12.4198 18.9899C12.4598 18.8999 12.4498 18.8999 12.4398 18.8999ZM10.0298 14.8999L15.1398 11.9999L9.99978 9.04989L10.0298 14.8999Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { Wrapper } from './Icons.style';\nimport { IconLibrary } from './SvgIcons';\nimport { IIconProps } from '../../../types/iconTypes';\n\nconst Icon = React.memo(\n ({ className, color, iconName, title, direction, ariaLabel }: IIconProps): React.ReactElement => {\n const IconComponent = IconLibrary[iconName];\n\n return (\n <Wrapper className={className} color={color} title={title} direction={direction}>\n <IconComponent color={color} ariaLabel={ariaLabel} />\n </Wrapper>\n );\n }\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n","import styled from 'styled-components';\nimport { ILogosStyledProps } from '../../../types/types';\n\nexport const BadgeWrapper = styled.svg<ILogosStyledProps>`\n width: auto;\n\n g,\n path {\n fill: var(--base-color-${({ fillColor }) => fillColor});\n }\n`;\n","import { ImgHTMLAttributes, ReactElement } from 'react';\nimport { ICardProps } from './card';\nimport { EditorialLink } from './editorial';\nimport { IImageWithCaptionProps } from './image';\nimport { IntegratedTimerProps } from './timer';\nimport { ILogosProps } from './types';\n\n// eslint-disable-next-line no-shadow\nexport enum CarouselType {\n Image = 'image',\n SmallCard = 'SmallCard',\n LargeCard = 'LargeCard',\n}\n\nexport interface ICarouselProps {\n /**\n * Carousel title\n */\n title?: string;\n /**\n * Carousel type.\n */\n type: CarouselType;\n /**\n * Only for image type. It sets the height in pixels of the slides in devices(default 300)\n */\n imagesHeightDevice?: number;\n /**\n * Only for image type. It sets the height in pixels of the slides in desktop(default 500)\n */\n imagesHeightDesktop?: number;\n /**\n * Carousel children (only Card and ImageAspectRatioWrapper children are allowed).\n */\n children: ReactElement<ICardProps | IImageWithCaptionProps>[];\n /**\n * Defines if there should be offset added at the beginning of the container. True by default;\n */\n useOffset?: boolean;\n}\n\nexport interface ICarouselWrapperProps {\n /**\n * Carousel has been activated or not\n */\n active: boolean;\n /**\n * Carousel type.\n */\n type: CarouselType;\n /**\n * Only for image type. It sets the height in pixels of the slides in devices(default 300)\n */\n imagesHeightDevice?: number;\n /**\n * Only for image type. It sets the height in pixels of the slides in desktop(default 500)\n */\n imagesHeightDesktop?: number;\n /**\n * Additional top padding for slides in the carousel\n */\n slidesTopPadding?: number;\n /**\n * Sets overflow to swiper when specified\n */\n overflow?: string;\n}\n\nexport type HighlightsCarouselSlideImage = ImgHTMLAttributes<HTMLImageElement> & {\n key: string;\n};\n\nexport type HighlightsCarouselSlide = {\n /**\n * heder in info section\n */\n infoTitle: string;\n /**\n * Timeframe subtitle in info section\n */\n infoTimeframe: string;\n /**\n * text subtitle in info section\n */\n infoSubtitle?: string;\n /**\n * text in info section\n */\n infoText?: string;\n /**\n * additional info section\n */\n additionalInfo?: string;\n /**\n * Link in info section\n */\n links: EditorialLink[];\n /**\n * Slide image\n */\n image: HighlightsCarouselSlideImage;\n /**\n * Params for Timer component\n */\n timerParams?: IntegratedTimerProps;\n};\n\nexport interface IHighlightsCarouselProps {\n /**\n * Carousel title\n */\n carouselTitle?: string;\n /**\n * Logo element\n */\n logo?: ReactElement<ILogosProps> | null;\n /**\n * slides to be displayed in the carousel\n */\n slides: HighlightsCarouselSlide[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IHighlightsCoreCarouselProps extends Omit<IHighlightsCarouselProps, 'logo'> {}\nexport interface IHighlightsCinemaCarouselProps extends Omit<IHighlightsCarouselProps, 'logo'> {\n /**\n * Renders logo or not\n */\n logo: boolean;\n}\nexport interface IHighlightsStreamCarouselProps extends Omit<IHighlightsCarouselProps, 'logo'> {\n /**\n * Renders logo or not\n */\n logo: boolean;\n}\n","/* eslint-disable no-shadow */\nimport { ReactElement } from 'react';\nimport { StyledProps } from 'styled-components';\n\nexport enum AspectRatio {\n '1:1' = '1 / 1',\n '3:4' = '3 / 4',\n '4:3' = '4 / 3',\n '3:2' = '3 / 2',\n '16:9' = '16 / 9',\n}\n\nexport enum AspectRatioLegacy {\n '1 / 1' = '100',\n '3 / 4' = '133',\n '4 / 3' = '75',\n '3 / 2' = '66.67',\n '16 / 9' = '56.25',\n}\n\nexport enum AspectRatioWidth {\n '1 / 1' = '1',\n '3 / 4' = '0.75',\n '4 / 3' = '1.33',\n '3 / 2' = '1.5',\n '16 / 9' = '1.78',\n}\n\nexport interface IImageAspectRatioWrapperProps {\n /**\n * Aspect ratio of the contained image\n */\n aspectRatio?: AspectRatio;\n}\n\nexport interface IImageWithCaptionProps {\n /**\n * Aspect ratio of the contained image\n */\n aspectRatio?: AspectRatio;\n /**\n * Image caption or credit\n */\n caption: string;\n /**\n * Image element\n */\n children: ReactElement<HTMLImageElement>;\n}\n\nexport interface IImageWithCaptionWrapperProps extends StyledProps<{ aspectRatio?: AspectRatio; height: number }> {\n /**\n * Aspect ratio of the contained image\n */\n aspectRatio?: AspectRatio;\n /**\n * Height of the wrapper\n */\n height: number;\n}\n","// eslint-disable-next-line no-shadow\nexport enum TickboxMode {\n Dark = 'dark',\n Light = 'light',\n}\n\nexport interface ITickboxProps {\n /**\n * The text of tickbox\n */\n children: string;\n /**\n * Tickbox is checked or not initially\n */\n checked?: boolean;\n /**\n * Mode to determine colors of text and checkmark\n */\n mode?: TickboxMode;\n /**\n * Use a white background and black checkmark for the tickbox,\n * regardless of mode?\n * PREFERRED in new components, but not default\n */\n whiteBox?: boolean;\n /**\n * Callback called when tickbox change\n */\n onChange?: (checked: boolean) => void;\n /**\n * Data label for tickbox\n */\n dataLabel?: string;\n /**\n * Element is disabled\n */\n disabled?: boolean;\n /**\n * Error message, default is undefined. To show the tickbox\n * in an error state without any text, pass in an empty string.\n */\n error?: string;\n}\n\nexport interface TickboxLabelProps {\n /**\n * Dark mode or not\n */\n dark: boolean;\n /**\n * Element is disabled\n */\n disabled?: boolean;\n}\n\nexport interface TickboxInputProps {\n /**\n * Dark mode or not\n */\n dark: boolean;\n /**\n * Use a white background for the tickbox (regardless of mode)\n */\n whiteBox?: boolean;\n /**\n * Element is disabled\n */\n disabled?: boolean;\n}\n\nexport interface TickboxCheckmarkProps {\n /**\n * Dark mode or not\n */\n dark: boolean;\n /**\n * Element is disabled\n */\n disabled?: boolean;\n /**\n * Display the border of the tickbox in errorstate style\n */\n error?: boolean;\n}\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable no-shadow */\nimport { ReactNode, AnchorHTMLAttributes, MouseEventHandler } from 'react';\nimport { IconNameType, DirectionType } from './iconTypes';\nimport { Colors } from './types';\n\nexport enum ButtonType {\n Primary = 'Primary',\n Secondary = 'Secondary',\n Tertiary = 'Tertiary',\n}\n\nexport interface IButtonProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n children: ReactNode;\n /**\n * Function to be called when a button is clicked\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n /**\n * Name of the icon to be used in the button\n */\n iconName?: IconNameType;\n /**\n * Direction of the icon used in the button\n */\n iconDirection?: DirectionType;\n /**\n * ClassName for the icon to be used in the button\n */\n iconClassName?: string;\n /**\n * Color of text and icon\n */\n color?: Colors;\n}\n\nexport interface IPrimaryButtonProps extends IButtonProps {\n /**\n * Button background color\n */\n bgColor?: Colors;\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\nexport interface IAuxiliaryButtonProps extends IButtonProps {\n /**\n * Button background color\n */\n bgColor?: Colors;\n /**\n * Function to be called when a button is clicked\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n}\n\nexport interface ITertiaryButtonProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * Color of text and icon\n */\n color?: Colors;\n /**\n * Function to be called when a button is clicked\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n children: ReactNode;\n}\n\nexport interface IRotatorButtonsProps {\n /**\n * Set available Prev button\n */\n availablePrev?: boolean;\n /**\n * Set available Next button\n */\n availableNext?: boolean;\n /**\n * Function to be called when a button is clicked\n */\n onClickPrev?: () => void;\n /**\n * Function to be called when a button is clicked\n */\n onClickNext?: () => void;\n}\n","/* eslint-disable no-shadow */\nimport { DirectionType, IconNameType } from './iconTypes';\nimport { LinkTarget } from './types';\n\nexport enum IInformationCtaVariant {\n Primary = 'Primary',\n Secondary = 'Secondary',\n Tertiary = 'Tertiary',\n TextLink = 'TextLink',\n}\n\nexport enum IInformationCtaTheme {\n Cinema = 'Cinema',\n Core = 'Core',\n Stream = 'Stream',\n}\n\nexport enum IInformationTitleVariant {\n Header = 'Header',\n AltHeader = 'AltHeader',\n}\n\nexport enum IInformationBackgroundColour {\n Cinema = 'cinema',\n Core = 'core',\n Stream = 'stream',\n White = 'white',\n}\n\nexport type TitleTextSize = 3 | 4 | 5 | 6;\n\nexport interface IInformationCTAProps {\n /**\n * Text to display on the CTA\n */\n text: string;\n /**\n * Link for the CTA\n */\n link: string;\n /**\n * Style of the CTA. Choices are \"Primary\" (solid button background), \"Secondary\" (transparent button background)\n * or \"Tertiary\" (text only)\n */\n variant?: IInformationCtaVariant;\n /**\n * Theme to use for the CTA. Choices are \"Core\" (red), \"Stream\" (blue), or \"Cinema\" (black)\n */\n theme?: IInformationCtaTheme;\n /**\n * Flag to decide whether to adjust the CTA colours for display on coloured backgrounds\n */\n infoThemed: boolean;\n /**\n * Name of the icon to be used in the button\n */\n iconName?: IconNameType;\n /**\n * Direction of the icon used in the button\n */\n iconDirection?: DirectionType;\n /**\n * Attribute to specify where to open the link\n */\n target?: LinkTarget;\n}\n\nexport interface IInformationTitleProps {\n /**\n * Title text to display\n */\n text: string;\n /**\n * Title typography type. Choices are Heading or AltHeader\n */\n variant: IInformationTitleVariant;\n /**\n * The size of the title text\n */\n textSize: TitleTextSize;\n}\n\nexport interface IInformationProps {\n /**\n * Main body text to display in the Information Component\n */\n body: string;\n /**\n * Optional CTA to display underneath the body text\n */\n cta?: IInformationCTAProps;\n /**\n * Title options for the component\n */\n title: IInformationTitleProps;\n /**\n * Background Colour. Choices: None, Core, Cinema, Stream\n */\n background?: IInformationBackgroundColour;\n}\n","/* eslint-disable max-len */\n/* eslint-disable react/no-unknown-property */\nimport React, { FunctionComponent } from 'react';\nimport { ILogosProps, Colors } from '../../../types/types';\nimport { BadgeWrapper } from './Badge.style';\n\nconst StreamBadge: FunctionComponent<ILogosProps> = ({\n fillColor = Colors.White,\n align = 'center',\n invert = false,\n}) => {\n const colour = invert ? Colors.Black : fillColor;\n return (\n <BadgeWrapper\n fillColor={colour}\n width=\"100%\"\n height=\"100%\"\n viewBox=\"110 450 865 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Royal Ballet & Opera - Stream\"\n >\n <g>\n <path\n d=\"M416.81,485.21c0-9.38-6.6-14.94-18.59-14.94h-23.1v60.79h22.84c13.2,0,20.58-7.12,20.58-17.97,0-7.3-4.86-13.11-13.46-14.07,7.9-1.13,11.73-7.47,11.73-13.8ZM389.28,481.3h5.47c5.47,0,7.64,2.69,7.64,6.51s-2.17,6.51-7.73,6.51h-5.38v-13.03ZM395.79,519.59h-6.51v-14.59h6.42c4.95,0,8.43,2.69,8.43,7.29s-3.39,7.29-8.34,7.29Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M435.74,518.9h19.19l3.73,12.16h14.76l-20.67-60.79h-14.85l-20.67,60.79h14.76l3.73-12.16ZM445.29,487.55l5.82,18.85h-11.64l5.82-18.85Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M774.06,500.66c0-18.15-13.89-31.7-32.56-31.7s-32.56,13.54-32.56,31.7,13.98,31.7,32.56,31.7,32.56-13.55,32.56-31.7ZM723.44,500.66c0-10.59,7.81-18.58,18.06-18.58s18.06,7.99,18.06,18.58-7.73,18.58-18.06,18.58-18.06-7.99-18.06-18.58Z\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"511.38 470.27 511.38 531.06 542.64 531.06 542.64 518.38 525.53 518.38 525.53 470.27 511.38 470.27\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"610.2 531.06 610.2 482.95 623.83 482.95 623.83 470.27 582.41 470.27 582.41 482.95 596.04 482.95 596.04 531.06 610.2 531.06\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"578.59 482.95 578.59 470.27 546.46 470.27 546.46 531.06 578.59 531.06 578.59 518.38 560.61 518.38 560.61 506.74 575.03 506.74 575.03 494.06 560.61 494.06 560.61 482.95 578.59 482.95\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"475.86 470.27 475.86 531.06 507.12 531.06 507.12 518.38 490.01 518.38 490.01 470.27 475.86 470.27\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"324.76 470.27 324.76 531.06 356.02 531.06 356.02 518.38 338.92 518.38 338.92 470.27 324.76 470.27\"\n stroke-width=\"0\"\n />\n <path\n d=\"M800.98,508.48c12.33,0,20.58-7.99,20.58-19.11s-8.25-19.1-20.58-19.1h-23.19v60.79h14.16v-22.58h9.03ZM791.95,481.91h6.42c6.25,0,8.68,3.21,8.68,7.47s-2.43,7.56-8.68,7.56h-6.42v-15.02Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M923.95,470.27l-19.45,57.31-11.03-20.75c7.12-2.95,11.46-9.38,11.46-17.45,0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.15v-22.58h3.56l11.55,22.58h27.62l3.73-12.16h19.19l3.74,12.16h14.76l-20.67-60.79h-14.85ZM881.74,496.93h-6.43v-15.02h6.43c6.25,0,8.68,3.21,8.68,7.47s-2.43,7.56-8.68,7.56ZM925.51,506.39l5.82-18.85,5.82,18.85h-11.64Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M636.25,511c0,12.24,9.38,21.36,22.49,21.36,7.21,0,13.2-2.78,18.24-7.38l4.86,6.08h17.8l-13.37-16.59,9.81-14.33-10.85-7.47-7.64,11.12-16.85-20.84h18.93v-12.68h-36.64v12.68l6.68,8.25c-8.94,4.34-13.46,11.46-13.46,19.8ZM657.61,501.01l11.29,14.07c-2.26,2.34-5.21,4.17-9.03,4.17-5.64,0-9.21-4-9.21-8.77,0-4.26,2.87-7.81,6.95-9.46Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M176.87,529.41c-9.38-5.9-17.02-14.16-22.06-23.01,6.6-3.04,10.6-9.29,10.6-17.02,0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.15v-22.84h5.13c6.16,12.68,16.06,24.49,27.87,31.78h0l8.08-10.59ZM142.23,496.93h-6.43v-15.02h6.43c6.25,0,8.68,3.21,8.68,7.47s-2.43,7.56-8.68,7.56Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M284.56,518.9h19.19l3.74,12.16h14.76l-20.67-60.79h-14.85l-20.67,60.79h14.76l3.73-12.16ZM294.11,487.55l5.82,18.85h-11.64l5.82-18.85Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M201.1,468.97c-18.58,0-32.56,13.54-32.56,31.7s13.98,31.7,32.56,31.7,32.56-13.55,32.56-31.7-13.89-31.7-32.56-31.7ZM201.1,519.25c-10.25,0-18.06-7.99-18.06-18.58s7.81-18.58,18.06-18.58,18.06,7.99,18.06,18.58-7.73,18.58-18.06,18.58Z\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"254.42 490.41 242.44 470.27 226.37 470.27 247.3 504.92 247.3 531.06 261.46 531.06 261.46 504.74 282.3 470.27 266.32 470.27 254.42 490.41\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"857.34 482.95 857.34 470.27 825.21 470.27 825.21 531.06 857.34 531.06 857.34 518.38 839.36 518.38 839.36 506.74 853.78 506.74 853.78 494.06 839.36 494.06 839.36 482.95 857.34 482.95\"\n stroke-width=\"0\"\n />\n </g>\n {align === 'left' && (\n <g>\n <path\n d=\"M151.07,588.98c.36-1.96.53-3.12.53-5.25,0-6.14-4.54-9.88-10.68-9.88s-10.68,3.74-10.68,9.88c0,7.83,8.19,9.17,15.22,11.84,7.21,2.76,16.02,6.41,16.02,17.98s-9.08,18.16-20.47,18.16-20.47-6.85-20.47-18.16c0-2.58.53-4.54,1.07-5.87l7.92-.45c-.62,2.05-.98,4.01-.98,6.32,0,7.03,5.43,11.04,12.46,11.04s12.46-4,12.46-11.04c0-8.19-8.99-10.24-14.95-12.37-8.37-3.03-16.29-6.59-16.29-17.62s8.63-16.82,18.69-16.82,18.69,6.32,18.69,16.82c0,1.69-.27,3.74-.62,4.9l-7.92.53Z\"\n stroke-width=\"0\"\n />\n <path d=\"M184,630.37v-55.18h-16.91v-7.12h41.83v7.12h-16.91v55.18h-8.01Z\" stroke-width=\"0\" />\n <path\n d=\"M249.5,630.37c-1.69-2.58-1.33-11.04-1.6-16.2-.18-4.18-.98-6.32-2.49-7.83-1.6-1.51-4.18-2.22-7.48-2.22h-10.68v26.26h-8.01v-62.3h20.56c6.59,0,10.68,1.87,13.71,4.89,3.2,3.2,5.34,7.74,5.34,12.91,0,7.3-5.16,14.42-14.15,15.04,6.41.71,10.5,4.9,11.04,12.82l.36,5.52c.27,3.74.36,6.14.8,7.92.27,1.07.8,2.31,1.96,2.85v.36h-9.35ZM239.09,596.99c4.63,0,7.03-1.07,8.72-2.85,1.87-1.96,3.03-4.9,3.03-8.01s-1.16-5.96-3.03-7.92c-1.69-1.78-4.09-3.03-8.72-3.03h-11.84v21.81h11.84Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M271.93,630.37v-62.3h34.27v7.12h-26.26v20.03h19.14v7.12h-19.14v20.92h27.15v7.12h-35.16Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M353.01,630.37l-4.54-14.24h-22.7l-4.54,14.24h-8.1l20.03-62.3h8.01l20.03,62.3h-8.19ZM338.5,584.53c-.89-2.76-1.16-3.92-1.42-5.16-.27,1.25-.53,2.4-1.42,5.16l-7.57,24.48h18.07l-7.65-24.48Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M416.55,630.37v-37.83c0-2.22,0-4.09.09-6.23-.8,2.58-1.25,3.92-2.23,6.23l-15.75,38.72h-1.78l-15.75-38.72c-.98-2.31-1.42-3.65-2.23-6.23.09,2.14.09,4.01.09,6.23v37.83h-7.92v-62.3h8.01l16.11,39.07c1.25,3.03,1.69,4.18,2.67,6.76.98-2.58,1.42-3.74,2.67-6.76l15.93-39.07h8.01v62.3h-7.92Z\"\n stroke-width=\"0\"\n />\n </g>\n )}\n {align === 'center' && (\n <g>\n <path\n d=\"M401.56,585.29c.36-1.96.53-3.12.53-5.25,0-6.14-4.54-9.88-10.68-9.88s-10.68,3.74-10.68,9.88c0,7.83,8.19,9.17,15.22,11.84,7.21,2.76,16.02,6.41,16.02,17.98s-9.08,18.16-20.47,18.16-20.47-6.85-20.47-18.16c0-2.58.53-4.54,1.07-5.87l7.92-.45c-.62,2.05-.98,4.01-.98,6.32,0,7.03,5.43,11.04,12.46,11.04s12.46-4,12.46-11.04c0-8.19-8.99-10.24-14.95-12.37-8.37-3.03-16.29-6.59-16.29-17.62s8.63-16.82,18.69-16.82,18.69,6.32,18.69,16.82c0,1.69-.27,3.74-.62,4.9l-7.92.53Z\"\n stroke-width=\"0\"\n />\n <path d=\"M434.49,626.68v-55.18h-16.91v-7.12h41.83v7.12h-16.91v55.18h-8.01Z\" stroke-width=\"0\" />\n <path\n d=\"M500,626.68c-1.69-2.58-1.33-11.04-1.6-16.2-.18-4.18-.98-6.32-2.49-7.83-1.6-1.51-4.18-2.22-7.48-2.22h-10.68v26.26h-8.01v-62.3h20.56c6.59,0,10.68,1.87,13.71,4.89,3.2,3.2,5.34,7.74,5.34,12.91,0,7.3-5.16,14.42-14.15,15.04,6.41.71,10.5,4.9,11.04,12.82l.36,5.52c.27,3.74.36,6.14.8,7.92.27,1.07.8,2.31,1.96,2.85v.36h-9.35ZM489.58,593.3c4.63,0,7.03-1.07,8.72-2.85,1.87-1.96,3.03-4.9,3.03-8.01s-1.16-5.96-3.03-7.92c-1.69-1.78-4.09-3.03-8.72-3.03h-11.84v21.81h11.84Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M522.42,626.68v-62.3h34.27v7.12h-26.26v20.03h19.14v7.12h-19.14v20.92h27.15v7.12h-35.16Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M603.5,626.68l-4.54-14.24h-22.7l-4.54,14.24h-8.1l20.03-62.3h8.01l20.03,62.3h-8.19ZM588.99,580.84c-.89-2.76-1.16-3.92-1.42-5.16-.27,1.25-.53,2.4-1.42,5.16l-7.57,24.48h18.07l-7.65-24.48Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M667.05,626.68v-37.83c0-2.22,0-4.09.09-6.23-.8,2.58-1.25,3.92-2.23,6.23l-15.75,38.72h-1.78l-15.75-38.72c-.98-2.31-1.42-3.65-2.23-6.23.09,2.14.09,4.01.09,6.23v37.83h-7.92v-62.3h8.01l16.11,39.07c1.25,3.03,1.69,4.18,2.67,6.76.98-2.58,1.42-3.74,2.67-6.76l15.93-39.07h8.01v62.3h-7.92Z\"\n stroke-width=\"0\"\n />\n </g>\n )}\n </BadgeWrapper>\n );\n};\n\nexport default StreamBadge;\n","/* eslint-disable max-len */\nimport React, { FunctionComponent } from 'react';\nimport { ILogosProps, Colors } from '../../../types/types';\nimport { BadgeWrapper } from './Badge.style';\n\nconst CinemaBadge: FunctionComponent<ILogosProps> = ({\n fillColor = Colors.White,\n align = 'center',\n invert = false,\n}) => {\n const colour = invert ? Colors.Black : fillColor;\n return (\n <BadgeWrapper\n fillColor={colour}\n width=\"100%\"\n height=\"100%\"\n viewBox=\"110 450 865 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Royal Ballet & Opera - Cinema\"\n >\n <g>\n <g>\n <g>\n <path\n d=\"M416.26,485.21c0-9.38-6.6-14.94-18.59-14.94h-23.1v60.79h22.84c13.2,0,20.58-7.12,20.58-17.97\n\t\t\t\tc0-7.3-4.86-13.11-13.46-14.07C412.43,497.88,416.26,491.54,416.26,485.21z M388.73,481.3h5.47c5.47,0,7.64,2.69,7.64,6.51\n\t\t\t\tc0,3.82-2.17,6.51-7.73,6.51h-5.38V481.3z M395.24,519.59h-6.51v-14.59h6.42c4.95,0,8.43,2.69,8.43,7.29\n\t\t\t\tC403.58,516.81,400.19,519.59,395.24,519.59z\"\n />\n <path\n d=\"M773.51,500.66c0-18.15-13.89-31.7-32.56-31.7c-18.58,0-32.56,13.54-32.56,31.7\n\t\t\t\tc0,18.15,13.98,31.7,32.56,31.7C759.61,532.36,773.51,518.81,773.51,500.66z M722.88,500.66c0-10.59,7.81-18.58,18.06-18.58\n\t\t\t\tc10.33,0,18.06,7.99,18.06,18.58c0,10.59-7.73,18.58-18.06,18.58C730.7,519.25,722.88,511.26,722.88,500.66z\"\n />\n <path\n d=\"M435.19,518.9h19.19l3.73,12.16h14.76l-20.67-60.79h-14.85l-20.67,60.79h14.76L435.19,518.9z\n\t\t\t\t M444.74,487.55l5.82,18.85h-11.64L444.74,487.55z\"\n />\n <polygon points=\"475.31,470.27 475.31,531.06 506.57,531.06 506.57,518.38 489.46,518.38 489.46,470.27\" />\n <polygon\n points=\"609.65,531.06 609.65,482.95 623.28,482.95 623.28,470.27 581.86,470.27 581.86,482.95 \n\t\t\t\t595.49,482.95 595.49,531.06\"\n />\n <polygon\n points=\"578.03,482.95 578.03,470.27 545.91,470.27 545.91,531.06 578.03,531.06 578.03,518.38 \n\t\t\t\t560.06,518.38 560.06,506.74 574.47,506.74 574.47,494.06 560.06,494.06 560.06,482.95\"\n />\n <polygon points=\"324.21,470.27 324.21,531.06 355.47,531.06 355.47,518.38 338.36,518.38 338.36,470.27\" />\n <polygon points=\"510.82,470.27 510.82,531.06 542.09,531.06 542.09,518.38 524.98,518.38 524.98,470.27\" />\n <path\n d=\"M284,518.9h19.19l3.74,12.16h14.76l-20.67-60.79h-14.85l-20.67,60.79h14.76L284,518.9z M293.55,487.55\n\t\t\t\tl5.82,18.85h-11.64L293.55,487.55z\"\n />\n <path\n d=\"M635.7,511c0,12.24,9.38,21.36,22.49,21.36c7.21,0,13.2-2.78,18.24-7.38l4.86,6.08h17.8l-13.37-16.59\n\t\t\t\tl9.81-14.33l-10.85-7.47l-7.64,11.12l-16.85-20.84h18.93v-12.68h-36.64v12.68l6.68,8.25C640.21,495.54,635.7,502.66,635.7,511z\n\t\t\t\t M657.06,501.01l11.29,14.07c-2.26,2.34-5.21,4.17-9.03,4.17c-5.64,0-9.21-4-9.21-8.77\n\t\t\t\tC650.11,506.22,652.98,502.66,657.06,501.01z\"\n />\n <path\n d=\"M176.32,529.41c-9.38-5.9-17.02-14.16-22.06-23.01c6.6-3.04,10.6-9.29,10.6-17.02\n\t\t\t\tc0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.15v-22.84h5.13c6.16,12.68,16.06,24.49,27.87,31.78h0L176.32,529.41z\n\t\t\t\t M141.67,496.93h-6.43v-15.02h6.43c6.25,0,8.68,3.21,8.68,7.47C150.36,493.72,147.93,496.93,141.67,496.93z\"\n />\n <path\n d=\"M923.39,470.27l-19.45,57.31l-11.03-20.75c7.12-2.95,11.46-9.38,11.46-17.45\n\t\t\t\tc0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.15v-22.58h3.56l11.55,22.58h27.62l3.73-12.16h19.19l3.74,12.16h14.76\n\t\t\t\tl-20.67-60.79H923.39z M881.19,496.93h-6.43v-15.02h6.43c6.25,0,8.68,3.21,8.68,7.47C889.87,493.72,887.44,496.93,881.19,496.93z\n\t\t\t\t M924.95,506.39l5.82-18.85l5.82,18.85H924.95z\"\n />\n <path\n d=\"M800.43,508.48c12.33,0,20.58-7.99,20.58-19.11c0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.16v-22.58\n\t\t\t\tH800.43z M791.4,481.91h6.42c6.25,0,8.68,3.21,8.68,7.47c0,4.34-2.43,7.56-8.68,7.56h-6.42V481.91z\"\n />\n <path\n d=\"M200.55,468.97c-18.58,0-32.56,13.54-32.56,31.7c0,18.15,13.98,31.7,32.56,31.7\n\t\t\t\tc18.67,0,32.56-13.55,32.56-31.7C233.11,482.51,219.22,468.97,200.55,468.97z M200.55,519.25c-10.25,0-18.06-7.99-18.06-18.58\n\t\t\t\tc0-10.59,7.81-18.58,18.06-18.58c10.33,0,18.06,7.99,18.06,18.58C218.61,511.26,210.88,519.25,200.55,519.25z\"\n />\n <polygon\n points=\"253.87,490.41 241.89,470.27 225.82,470.27 246.75,504.92 246.75,531.06 260.9,531.06 \n\t\t\t\t260.9,504.74 281.74,470.27 265.76,470.27\"\n />\n <polygon\n points=\"856.79,482.95 856.79,470.27 824.66,470.27 824.66,531.06 856.79,531.06 856.79,518.38 \n\t\t\t\t838.81,518.38 838.81,506.74 853.23,506.74 853.23,494.06 838.81,494.06 838.81,482.95\"\n />\n </g>\n </g>\n {align === 'left' && (\n <g>\n <path d=\"M121.69,630.37v-62.3h8.01v62.3H121.69z\" />\n <path\n d=\"M179.27,630.37l-22.34-40.85c-1.33-2.4-2.58-4.81-3.2-6.32c0.09,1.51,0.18,4.09,0.18,6.32v40.85h-8.01v-62.3h8.01\n\t\t\tl22.34,40.85c1.33,2.4,2.58,4.81,3.2,6.32c-0.09-1.51-0.18-4.09-0.18-6.32v-40.85h8.01v62.3H179.27z\"\n />\n <path\n d=\"M266.85,608.12c0,5.79-1.25,10.86-3.92,14.86c-3.83,5.88-9.97,8.72-17.18,8.72c-8.1,0-13.8-3.56-17.44-8.63\n\t\t\tc-4.81-6.59-6.41-15.75-6.41-23.85c0.09-14.86,5.79-32.49,23.94-32.49c11.48,0,19.23,8.63,19.23,19.05c0,1.07-0.09,2.49-0.36,3.65\n\t\t\tl-7.92,0.45c0.18-0.98,0.27-2.14,0.27-3.38c0-6.85-4.01-12.64-11.21-12.64c-12.37,0-15.93,14.6-15.93,25.37\n\t\t\tc0,5.16,0.8,12.28,3.47,17.36c2.49,4.72,6.68,8.01,12.37,8.01c9.43,0,12.82-7.48,13.17-16.91L266.85,608.12z\"\n />\n <path d=\"M278.95,630.37v-62.3h8.01v62.3H278.95z\" />\n <path\n d=\"M336.53,630.37l-22.34-40.85c-1.33-2.4-2.58-4.81-3.2-6.32c0.09,1.51,0.18,4.09,0.18,6.32v40.85h-8.01v-62.3h8.01\n\t\t\tl22.34,40.85c1.34,2.4,2.58,4.81,3.2,6.32c-0.09-1.51-0.18-4.09-0.18-6.32v-40.85h8.01v62.3H336.53z\"\n />\n <path d=\"M360.74,630.37v-62.3h34.27v7.12h-26.26v20.03h19.14v7.12h-19.14v20.92h27.15v7.12H360.74z\" />\n <path\n d=\"M453.75,630.37v-37.83c0-2.22,0-4.09,0.09-6.23c-0.8,2.58-1.25,3.92-2.23,6.23l-15.75,38.72h-1.78l-15.75-38.72\n\t\t\tc-0.98-2.31-1.42-3.65-2.23-6.23c0.09,2.14,0.09,4.01,0.09,6.23v37.83h-7.92v-62.3h8.01l16.11,39.07\n\t\t\tc1.25,3.03,1.69,4.18,2.67,6.76c0.98-2.58,1.42-3.74,2.67-6.76l15.93-39.07h8.01v62.3H453.75z\"\n />\n <path\n d=\"M511.42,630.37l-4.54-14.24h-22.7l-4.54,14.24h-8.1l20.03-62.3h8.01l20.03,62.3H511.42z M496.91,584.53\n\t\t\tc-0.89-2.76-1.16-3.92-1.42-5.16c-0.27,1.25-0.53,2.4-1.42,5.16l-7.57,24.48h18.07L496.91,584.53z\"\n />\n <path\n d=\"M555.38,588.98c0.36-1.96,0.53-3.12,0.53-5.25c0-6.14-4.54-9.88-10.68-9.88s-10.68,3.74-10.68,9.88\n\t\t\tc0,7.83,8.19,9.17,15.22,11.84c7.21,2.76,16.02,6.41,16.02,17.98c0,11.3-9.08,18.16-20.47,18.16s-20.47-6.85-20.47-18.16\n\t\t\tc0-2.58,0.53-4.54,1.07-5.87l7.92-0.45c-0.62,2.05-0.98,4.01-0.98,6.32c0,7.03,5.43,11.04,12.46,11.04s12.46-4,12.46-11.04\n\t\t\tc0-8.19-8.99-10.24-14.95-12.37c-8.37-3.03-16.29-6.59-16.29-17.62c0-10.5,8.63-16.82,18.69-16.82s18.69,6.32,18.69,16.82\n\t\t\tc0,1.69-0.27,3.74-0.62,4.9L555.38,588.98z\"\n />\n </g>\n )}\n {align === 'center' && (\n <g>\n <path d=\"M319.77,626.67v-62.3h8.01v62.3H319.77z\" />\n <path\n d=\"M377.35,626.67l-22.34-40.85c-1.33-2.4-2.58-4.81-3.2-6.32c0.09,1.51,0.18,4.09,0.18,6.32v40.85h-8.01v-62.3h8.01\n\t\t\tl22.34,40.85c1.33,2.4,2.58,4.81,3.2,6.32c-0.09-1.51-0.18-4.09-0.18-6.32v-40.85h8.01v62.3H377.35z\"\n />\n <path\n d=\"M464.92,604.42c0,5.79-1.25,10.86-3.92,14.86c-3.83,5.88-9.97,8.72-17.18,8.72c-8.1,0-13.8-3.56-17.45-8.63\n\t\t\tc-4.81-6.59-6.41-15.75-6.41-23.85c0.09-14.86,5.79-32.49,23.94-32.49c11.48,0,19.22,8.63,19.22,19.05c0,1.07-0.09,2.49-0.36,3.65\n\t\t\tl-7.92,0.45c0.18-0.98,0.27-2.14,0.27-3.38c0-6.85-4-12.64-11.21-12.64c-12.37,0-15.93,14.6-15.93,25.37\n\t\t\tc0,5.16,0.8,12.28,3.47,17.36c2.49,4.72,6.68,8.01,12.37,8.01c9.43,0,12.82-7.48,13.17-16.91L464.92,604.42z\"\n />\n <path d=\"M477.03,626.67v-62.3h8.01v62.3H477.03z\" />\n <path\n d=\"M534.61,626.67l-22.34-40.85c-1.33-2.4-2.58-4.81-3.2-6.32c0.09,1.51,0.18,4.09,0.18,6.32v40.85h-8.01v-62.3h8.01\n\t\t\tl22.34,40.85c1.33,2.4,2.58,4.81,3.2,6.32c-0.09-1.51-0.18-4.09-0.18-6.32v-40.85h8.01v62.3H534.61z\"\n />\n <path d=\"M558.81,626.67v-62.3h34.27v7.12h-26.26v20.03h19.14v7.12h-19.14v20.92h27.15v7.12H558.81z\" />\n <path\n d=\"M651.82,626.67v-37.83c0-2.22,0-4.09,0.09-6.23c-0.8,2.58-1.25,3.92-2.23,6.23l-15.75,38.72h-1.78l-15.75-38.72\n\t\t\tc-0.98-2.31-1.42-3.65-2.23-6.23c0.09,2.14,0.09,4.01,0.09,6.23v37.83h-7.92v-62.3h8.01l16.11,39.07\n\t\t\tc1.25,3.03,1.69,4.18,2.67,6.76c0.98-2.58,1.42-3.74,2.67-6.76l15.93-39.07h8.01v62.3H651.82z\"\n />\n <path\n d=\"M709.49,626.67l-4.54-14.24h-22.7l-4.54,14.24h-8.1l20.03-62.3h8.01l20.03,62.3H709.49z M694.98,580.84\n\t\t\tc-0.89-2.76-1.16-3.92-1.42-5.16c-0.27,1.25-0.53,2.4-1.42,5.16l-7.57,24.48h18.07L694.98,580.84z\"\n />\n <path\n d=\"M753.46,585.29c0.36-1.96,0.53-3.12,0.53-5.25c0-6.14-4.54-9.88-10.68-9.88c-6.14,0-10.68,3.74-10.68,9.88\n\t\t\tc0,7.83,8.19,9.17,15.22,11.84c7.21,2.76,16.02,6.41,16.02,17.98c0,11.3-9.08,18.16-20.47,18.16s-20.47-6.85-20.47-18.16\n\t\t\tc0-2.58,0.53-4.54,1.07-5.87l7.92-0.45c-0.62,2.05-0.98,4.01-0.98,6.32c0,7.03,5.43,11.04,12.46,11.04c7.03,0,12.46-4,12.46-11.04\n\t\t\tc0-8.19-8.99-10.24-14.95-12.37c-8.37-3.03-16.29-6.59-16.29-17.62c0-10.5,8.63-16.82,18.69-16.82S762,569.36,762,579.86\n\t\t\tc0,1.69-0.27,3.74-0.62,4.9L753.46,585.29z\"\n />\n </g>\n )}\n </g>\n </BadgeWrapper>\n );\n};\n\nexport default CinemaBadge;\n","export const breakpoints = {\n xs: 320,\n sm: 700,\n md: 1140,\n ml: 1280,\n lg: 1400,\n};\n\nexport const devices = {\n smallMobile: `only screen and (max-width: ${breakpoints.xs - 1}px)`,\n mobile: `only screen and (max-width: ${breakpoints.sm - 1}px)`,\n tablet: `only screen and (max-width: ${breakpoints.md - 1}px) and (min-width: ${breakpoints.sm}px)`,\n mobileAndTablet: `only screen and (max-width: ${breakpoints.md - 1}px)`,\n desktop: `only screen and (max-width: ${breakpoints.lg - 1}px) and (min-width: ${breakpoints.md}px)`,\n smallDesktop: `only screen and (max-width: ${breakpoints.ml - 1}px) and (min-width: ${breakpoints.md}px)`,\n largeDesktop: `only screen and (min-width: ${breakpoints.lg}px)`,\n};\n","import styled from 'styled-components';\nimport { IButtonProps } from '../../../types/buttonTypes';\nimport { devices } from '../../../styles/viewports';\n\nconst ButtonWrapper = styled.a<IButtonProps>`\n padding: ${({ iconName }) => (iconName ? 'var(--button-padding-y-icon)' : 'var(--button-padding-y)')}\n var(--button-padding-x);\n height: var(--button-height);\n font-family: var(--font-family-buttons);\n font-size: var(--button-font-size);\n font-weight: var(--button-font-weight);\n color: var(--base-color-${({ color }) => color});\n line-height: var(--button-line-height);\n width: fit-content;\n border-style: solid;\n border-width: 1px;\n cursor: pointer;\n text-decoration: none;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n\n @media ${devices.mobile} {\n & {\n width: 100%;\n }\n }\n`;\n\nexport default ButtonWrapper;\n","import styled from 'styled-components';\n\nconst ButtonIconWrapper = styled.span`\n width: var(--button-icon-width);\n height: var(--button-icon-height);\n margin-right: var(--button-icon-margin);\n display: inline-block;\n`;\n\nexport default ButtonIconWrapper;\n","import React, { FunctionComponent } from 'react';\nimport ButtonWrapper from './Button.style';\nimport ButtonIconWrapper from './ButtonIconWrapper.style';\nimport { Icon } from '../Icons';\nimport { IButtonProps } from '../../../types/buttonTypes';\n\nconst Button: FunctionComponent<IButtonProps> = ({\n children,\n iconName,\n iconDirection,\n iconClassName,\n color,\n ...rest\n}) => {\n const truncatedString = (children as string).substring(0, 30);\n return (\n <ButtonWrapper {...rest} color={color} iconName={iconName}>\n {iconName ? (\n <ButtonIconWrapper data-testid=\"button-icon\" className={iconClassName}>\n <Icon iconName={iconName} direction={iconDirection} color={color} />\n </ButtonIconWrapper>\n ) : null}\n {truncatedString}\n </ButtonWrapper>\n );\n};\n\nexport default Button;\n","import styled from 'styled-components';\nimport Button from '../Button';\nimport { IPrimaryButtonProps } from '../../../../types/buttonTypes';\n\nconst PrimaryButtonWrapper = styled(Button)<IPrimaryButtonProps>`\n background-color: ${({ bgColor, theme }) => (bgColor ? `var(--base-color-${bgColor})` : theme?.colors?.primary)};\n border-color: ${({ bgColor, theme }) => (bgColor ? `var(--base-color-${bgColor})` : theme?.colors?.primary)};\n pointer-events: ${({ disabled }) => (disabled ? 'none' : 'auto')};\n`;\n\nexport default PrimaryButtonWrapper;\n\nexport const AriaDescription = styled.span`\n position: absolute;\n left: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n`;\n","import React, { FunctionComponent } from 'react';\nimport PrimaryButtonWrapper, { AriaDescription } from './PrimaryButtonWrapper.style';\nimport { Colors } from '../../../../types';\nimport { IPrimaryButtonProps } from '../../../../types/buttonTypes';\n\nconst PrimaryButton: FunctionComponent<IPrimaryButtonProps> = ({ children, disabled, ...props }) => {\n const description = 'This button is currently disabled';\n return disabled ? (\n <>\n <AriaDescription id=\"description\">{description}</AriaDescription>\n <PrimaryButtonWrapper\n color={Colors.Black}\n bgColor={Colors.MidGrey}\n disabled\n aria-disabled=\"true\"\n role=\"button\"\n aria-describedby={description}\n {...props}\n >\n {children}\n </PrimaryButtonWrapper>\n </>\n ) : (\n <PrimaryButtonWrapper color={Colors.White} {...props}>\n {children}\n </PrimaryButtonWrapper>\n );\n};\n\nexport default PrimaryButton;\n","import styled from 'styled-components';\nimport Button from '../Button';\nimport { IButtonProps } from '../../../../types/buttonTypes';\n\nconst PrimaryButtonWrapper = styled(Button)<IButtonProps>`\n background-color: var(--base-color-transparent);\n border-color: ${({ color, theme }) => (color ? `var(--base-color-${color})` : theme.colors.primary)};\n`;\n\nexport default PrimaryButtonWrapper;\n","import React, { FunctionComponent } from 'react';\nimport SecondaryButtonWrapper from './SecondaryButtonWrapper.style';\nimport { Colors } from '../../../../types';\nimport { IButtonProps } from '../../../../types/buttonTypes';\n\nconst SecondaryButton: FunctionComponent<IButtonProps> = ({ children, ...props }) => {\n return (\n <SecondaryButtonWrapper color={Colors.Primary} {...props}>\n {children}\n </SecondaryButtonWrapper>\n );\n};\n\nexport default SecondaryButton;\n","import styled from 'styled-components';\nimport { ITertiaryButtonProps } from '../../../../types/buttonTypes';\n\nconst TertiaryButtonWrapper = styled.a<ITertiaryButtonProps>`\n padding: 0;\n height: var(--button-height);\n font-family: var(--font-family-buttons);\n font-size: var(--button-font-size);\n font-weight: var(--button-font-weight);\n color: var(--base-color-${({ color }) => color});\n width: fit-content;\n background: none;\n border-style: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n text-decoration: none;\n box-sizing: border-box;\n`;\n\nconst TertiaryIconWrapper = styled.span`\n width: var(--button-icon-width);\n min-width: 20px;\n height: var(--button-icon-height);\n margin-left: var(--button-icon-margin);\n display: inline-block;\n`;\n\nexport { TertiaryIconWrapper, TertiaryButtonWrapper };\n","import React, { FunctionComponent } from 'react';\nimport { TertiaryButtonWrapper, TertiaryIconWrapper } from './TertiaryButton.style';\nimport { Icon } from '../../Icons';\nimport { IButtonProps } from '../../../../types/buttonTypes';\n\nconst Button: FunctionComponent<IButtonProps> = ({ children, color, ...rest }) => {\n const truncatedString = (children as string).substring(0, 100);\n return (\n <TertiaryButtonWrapper {...rest} color={color}>\n {truncatedString}\n <TertiaryIconWrapper data-testid=\"tertiary-icon\">\n <Icon iconName=\"Arrow\" color={color} />\n </TertiaryIconWrapper>\n </TertiaryButtonWrapper>\n );\n};\n\nexport default Button;\n","const zLevels = [\n 'base',\n 'content',\n 'contentOverlay',\n 'sponsorship',\n 'anchor',\n 'searchOverlay',\n 'navigation',\n 'search',\n 'menu',\n 'overlay',\n 'popup',\n];\n\nconst zIndexes: { [level: string]: number } = {};\n\nzLevels.forEach((name, index) => {\n zIndexes[name] = index;\n});\n\nexport default zIndexes;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IDropdowItemProps, IDropdownProps } from '../../../types/types';\nimport zIndexes from '../../../styles/zIndexes';\n\nexport const TabContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n`;\n\nexport const OptionItem = styled.a<IDropdowItemProps>`\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-black);\n text-decoration: none;\n cursor: pointer;\n text-transform: uppercase;\n\n :hover,\n :focus {\n color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n`;\n\nexport const OptionsContainer = styled.div<IDropdownProps>`\n background-color: var(--base-color-white);\n border: 1px solid var(--base-color-light-grey);\n border-top-color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n display: flex;\n flex-direction: column;\n row-gap: var(--navigation-small-gap);\n padding: var(--navigation-middle-gap);\n position: absolute;\n top: 24px;\n min-width: calc(100% - calc(2 * var(--navigation-middle-gap)));\n max-width: max-content;\n white-space: nowrap;\n z-index: ${zIndexes.menu};\n\n ${(props) => {\n if (props.withIcon === 'none') {\n return `\n top: 21px;\n `;\n }\n return ``;\n }}\n\n @media ${devices.mobileAndTablet} {\n padding-left: 0px;\n padding-bottom: 0px;\n row-gap: var(--navigation-large-gap);\n border: 0;\n background-color: none;\n\n ${(props) => {\n if (props.withOptionsInMobile) {\n return `\n position: relative;\n top: 0px;\n `;\n }\n return `\n display: none;\n `;\n }}\n }\n`;\n","import styled from 'styled-components';\nimport { IControlledDropdownHeaderProps } from '../../../types/types';\n\nexport const ControlledDropdownWrapper = styled.div`\n position: relative;\n width: fit-content;\n`;\n\nexport const ControlledDropdownHeaderContainer = styled.span<IControlledDropdownHeaderProps>`\n display: flex;\n gap: 6px;\n border-bottom: 1px solid transparent;\n height: 24px;\n line-height: 24px;\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-black);\n text-decoration: none;\n text-transform: uppercase;\n cursor: pointer;\n\n ${({ active, activeColor }) => {\n if (active) {\n return `\n & {\n border-bottom: 1px solid ${activeColor};\n color: var(--base-color-${activeColor});\n }\n && svg path {\n fill: var(--base-color-${activeColor});\n } \n `;\n }\n return '';\n }}\n`;\n\nexport const ControlledDropdownHeaderContainerLink = styled(ControlledDropdownHeaderContainer).attrs({\n as: 'a',\n})``;\n\nexport const IconWrapper = styled.span`\n width: 24px;\n height: 24px;\n`;\n","/* eslint-disable no-useless-return */\n/* eslint-disable no-else-return */\nimport React, { useCallback, useEffect, useRef, FunctionComponent } from 'react';\nimport { OptionsContainer, OptionItem } from '../Dropdown/Dropdown.style';\nimport {\n ControlledDropdownWrapper,\n ControlledDropdownHeaderContainerLink,\n ControlledDropdownHeaderContainer,\n IconWrapper,\n} from './ControlledDropdown.style';\nimport { Icon } from '../../atoms/Icons';\nimport { IControlledDropdownProps, INodeProps } from '../../../types/types';\nimport { breakpoints } from '../../../styles/viewports';\n\nconst ControlledDropdown: FunctionComponent<IControlledDropdownProps> = ({\n text,\n options,\n activeColor = 'primary',\n active,\n onClick,\n onOptionClick,\n onMouseEnter,\n onMouseLeave,\n onReset,\n onFocus,\n onBlur,\n}) => {\n const ref: INodeProps = useRef();\n\n const resetHandler = useCallback(() => onReset?.(), []);\n\n useEffect(() => {\n if (window.innerWidth > breakpoints.sm) {\n const mouseClickHandler = (e: Event) => {\n if (ref?.current?.contains(e.target)) {\n return;\n } else if (active) {\n resetHandler();\n }\n };\n document.addEventListener('click', mouseClickHandler);\n\n return () => {\n document.removeEventListener('click', mouseClickHandler);\n };\n }\n // eslint-disable-next-line consistent-return\n return;\n }, [ref, resetHandler, active]);\n\n const handleOptionKeyDown = (e: React.KeyboardEvent<HTMLAnchorElement>, link: string) => {\n if (e.key === 'Enter') {\n onOptionClick?.(link);\n } else if (e.key === 'Escape') {\n resetHandler();\n }\n };\n\n const handleHeaderKeyDown = (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (e.key === 'Enter') {\n onClick?.();\n } else if (e.key === 'Escape') {\n resetHandler();\n }\n };\n\n const handleOptionBlur = (i: number) => {\n if (i === (options?.length || 0) - 1) {\n onBlur?.();\n }\n };\n\n const isDropdown = !!options?.length;\n\n const wrapperEvents = {\n onMouseEnter: () => onMouseEnter?.(),\n onMouseLeave: () => onMouseLeave?.(),\n };\n\n const headerEvents = {\n onMouseDown: (e: MouseEvent) => {\n e.preventDefault();\n onClick?.();\n },\n onFocus: () => onFocus?.(),\n onBlur: () => !isDropdown && onBlur?.(),\n onKeyDown: handleHeaderKeyDown,\n };\n\n return (\n <ControlledDropdownWrapper ref={ref} {...wrapperEvents}>\n {isDropdown ? (\n <>\n <ControlledDropdownHeaderContainer\n active={active}\n activeColor={activeColor}\n {...headerEvents}\n tabIndex={0}\n data-testid=\"span-container\"\n >\n {text}\n <IconWrapper data-testid=\"dropdown-icon\">\n <Icon iconName=\"DropdownArrow\" />\n </IconWrapper>\n </ControlledDropdownHeaderContainer>\n {active && options ? (\n <OptionsContainer colorPrimary={activeColor} withOptionsInMobile>\n {options.map((optionItem, index) => (\n <OptionItem\n key={`key-${index}-${optionItem.option}`}\n onClick={() => onOptionClick?.(optionItem.optionLink)}\n onKeyDown={(e) => handleOptionKeyDown(e, optionItem.optionLink)}\n colorPrimary={activeColor}\n tabIndex={0}\n onBlur={() => handleOptionBlur(index)}\n href={optionItem.optionLink}\n >\n {optionItem.option}\n </OptionItem>\n ))}\n </OptionsContainer>\n ) : null}\n </>\n ) : (\n <ControlledDropdownHeaderContainerLink\n active={active}\n activeColor={activeColor}\n {...headerEvents}\n data-testid=\"link-container\"\n tabIndex={0}\n >\n {text}\n </ControlledDropdownHeaderContainerLink>\n )}\n </ControlledDropdownWrapper>\n );\n};\n\nexport default ControlledDropdown;\n","import styled from 'styled-components';\n\nconst Grid = styled.div`\n display: grid;\n grid-template-columns: var(--grid-template-columns);\n grid-template-rows: max-content;\n gap: var(--grid-column-gap);\n margin: 0;\n`;\n\nexport default Grid;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IGridItemProps } from '../../../types/types';\n\nconst GridItem = styled.div<IGridItemProps>`\n grid-column: ${({ columnStartDesktop }) => columnStartDesktop} / span\n ${({ columnSpanDesktop = 1 }) => columnSpanDesktop};\n\n @media ${devices.mobile} {\n & {\n grid-column: ${({ columnStartDevice, columnStartSmallDevice }) => columnStartSmallDevice ?? columnStartDevice} /\n span ${({ columnSpanDevice = 1, columnSpanSmallDevice }) => columnSpanSmallDevice ?? columnSpanDevice};\n }\n }\n\n @media ${devices.tablet} {\n & {\n grid-column: ${({ columnStartDevice }) => columnStartDevice} / span\n ${({ columnSpanDevice = 1 }) => columnSpanDevice};\n }\n }\n`;\n\nexport default GridItem;\n","import styled from 'styled-components';\nimport { AspectRatio, AspectRatioLegacy, IImageAspectRatioWrapperProps } from '../../../types/image';\n\nconst ImageAspectRatioWrapper = styled.div<IImageAspectRatioWrapperProps>`\n position: relative;\n aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio};\n\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n width: 100%;\n padding-top: ${({ aspectRatio = AspectRatio['1:1'] }) => AspectRatioLegacy[aspectRatio]}%;\n }\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n position: absolute;\n top: 0;\n left: 0;\n }\n }\n`;\n\nexport default ImageAspectRatioWrapper;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IProgressProps } from '../../../types/progress';\n\nexport const ProgressView = styled.div<IProgressProps>`\n height: ${({ height }) => (height ? `${height}px` : '6px')};\n width: 100%;\n display: flex;\n flex-direction: row;\n`;\n\nexport const ElapsedProgressView = styled.div<IProgressProps & { isProgressWithSteps: boolean }>`\n background-color: ${({ color }) => (color ? `var(--base-color-${color})` : 'var(--base-color-progress)')};\n flex: ${({ progress }) => progress};\n padding-left: ${({ isProgressWithSteps }) => (isProgressWithSteps ? '34px' : '0')};\n\n @media ${devices.mobile} {\n padding-left: ${({ isProgressWithSteps }) => (isProgressWithSteps ? '24px' : '0')};\n }\n`;\n\nexport const PendingProgressView = styled.div<IProgressProps>`\n background-color: ${({ color }) => (color ? `var(--base-color-${color})` : 'var(--base-color-lightgrey)')};\n opacity: 0.5;\n flex: ${({ progress }) => progress};\n`;\n\nexport const StepsWrapper = styled.div<IProgressProps>`\n margin-top: 10px;\n display: flex;\n justify-content: space-between;\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n text-transform: var(--text-transform-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n\n @media ${devices.mobile} {\n font-size: var(--font-size-body-2);\n font-weight: var(--font-weight-body-2);\n letter-spacing: var(--letter-spacing-body-2);\n line-height: var(--line-height-body-2);\n }\n`;\n\nexport const StepWrapper = styled.div<{ isVisible: boolean; isActive: boolean }>`\n visibility: ${({ isVisible }) => (isVisible ? `visible` : 'hidden')};\n color: ${({ isActive }) => (isActive ? `var(--base-color-black)` : 'var(--base-color-midgrey)')};\n`;\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { FunctionComponent } from 'react';\n\nimport { ProgressView, ElapsedProgressView, PendingProgressView, StepsWrapper, StepWrapper } from './Progress.styles';\nimport { IProgressProps } from '../../../types/progress';\n\nconst Progress: FunctionComponent<IProgressProps> = ({\n progress = 0,\n height = 6,\n elapsedLineColor,\n pendingLineColor,\n steps,\n}) => {\n const stepsQuantity = steps?.quantity && steps.quantity <= 20 ? steps.quantity : 20;\n const currentStep = steps?.current && steps.current <= 20 ? steps.current : 20;\n\n const renderSteps = () => {\n if (!steps) return [];\n\n return Array.from(Array(stepsQuantity), (_, index) => index + 1).map((step) => (\n <StepWrapper key={`progress-step-${step}`} isVisible={step <= currentStep} isActive={step === currentStep}>\n {step} / {stepsQuantity}\n </StepWrapper>\n ));\n };\n\n const getProgressValue = () => {\n if (steps) {\n return (100 / (stepsQuantity - 1)) * (currentStep - 1);\n }\n return progress;\n };\n\n const progressValue = getProgressValue();\n\n return (\n <>\n <ProgressView height={height} data-testid=\"progress-container\">\n <ElapsedProgressView\n color={elapsedLineColor}\n isProgressWithSteps={!!steps}\n progress={progressValue}\n data-testid=\"elapsedprogress\"\n />\n <PendingProgressView color={pendingLineColor} progress={100 - progressValue} data-testid=\"pendingprogress\" />\n </ProgressView>\n {steps && <StepsWrapper data-testid=\"progress-steps-container\">{renderSteps()}</StepsWrapper>}\n </>\n );\n};\n\nexport default Progress;\n","import styled from 'styled-components';\nimport { IRadioProps } from '../../../types/formTypes';\n\nexport const RadioContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`;\n\nexport const RadioLine = styled.div<IRadioProps>`\n display: grid;\n gap: 20px;\n grid-template-columns: 1.15em 1fr;\n user-select: none;\n cursor: pointer;\n color: black;\n\n &:focus {\n outline: none;\n }\n\n input[type='radio'] {\n cursor: pointer;\n appearance: none;\n background-color: #ffffff00;\n margin: 0;\n color: black;\n width: 20px;\n height: 20px;\n border: 1px solid black;\n border-radius: 50%;\n position: relative;\n place-content: center;\n display: block;\n }\n\n input[type='radio']::before {\n content: '';\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: #ffffff00;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n input[type='radio']:checked::before {\n background-color: black;\n }\n`;\n\nexport const RadioError = styled.div<IRadioProps>`\n color: var(--base-color-errorstate);\n`;\n","import styled from 'styled-components';\nimport { ITypographyWrapperProps } from '../../../types/typography';\n\nconst Wrapper = styled.div<ITypographyWrapperProps>`\n font-family: var(--font-family-${({ typography }) => typography});\n font-feature-settings: var(--font-feature-settings-${({ typography }) => typography});\n font-size: var(--font-size-${({ typography }) => typography}-${({ level }) => level});\n font-weight: var(--font-weight-${({ typography }) => typography}-${({ level }) => level});\n letter-spacing: var(--letter-spacing-${({ typography }) => typography}-${({ level }) => level});\n line-height: var(--line-height-${({ typography }) => typography}-${({ level }) => level});\n text-transform: var(--text-transform-${({ typography }) => typography});\n word-break: var(--word-break-${({ typography }) => typography});\n margin: var(--margin-${({ typography }) => typography}-${({ level }) => level});\n`;\nexport default Wrapper;\n","import React from 'react';\nimport Wrapper from './Typography.style';\nimport './Typography.css';\nimport {\n IAltHeaderProps,\n IBodyTextProps,\n IHeaderProps,\n IOverlineProps,\n IStyledTag,\n ISubtitleProps,\n} from '../../../types/typography';\n\nexport const StyledTag = ({ tag, typography, children, level }: IStyledTag) => {\n return (\n <Wrapper className=\"test\" typography={typography} as={tag} level={level}>\n {children}\n </Wrapper>\n );\n};\n\nexport const AltHeader = ({ semanticLevel, level, children }: IAltHeaderProps) => {\n const renderedTag = semanticLevel ? `h${semanticLevel}` : `h${level}`;\n return (\n <StyledTag tag={renderedTag as React.ElementType} typography=\"altHeader\" level={level}>\n {children}\n </StyledTag>\n );\n};\n\nexport const BodyText = ({ level, children, tag = 'div' }: IBodyTextProps) => {\n const renderedTag = tag as React.ElementType;\n return (\n <StyledTag tag={renderedTag} typography=\"body\" level={level}>\n {children}\n </StyledTag>\n );\n};\n\nexport const Header = ({ semanticLevel, level, children }: IHeaderProps) => {\n const renderedTag = semanticLevel ? `h${semanticLevel}` : `h${level}`;\n return (\n <StyledTag tag={renderedTag as React.ElementType} typography=\"header\" level={level}>\n {children}\n </StyledTag>\n );\n};\n\nexport const Overline = ({ level, children, tag = 'div' }: IOverlineProps) => {\n const renderedTag = tag as React.ElementType;\n return (\n <StyledTag tag={renderedTag} typography=\"overline\" level={level}>\n {children}\n </StyledTag>\n );\n};\n\nexport const Subtitle = ({ level, children, tag = 'div' }: ISubtitleProps) => {\n const renderedTag = tag as React.ElementType;\n return (\n <StyledTag tag={renderedTag} typography=\"subtitle\" level={level}>\n {children}\n </StyledTag>\n );\n};\n","import * as React from 'react';\nimport { LogoWrapper, LogoLeftSide, LogoLeftSideRow, LogoRightSide } from './styled';\nimport { Colors } from '../../../types';\n\n// eslint-disable-next-line no-shadow\nexport enum TextLogoProduct {\n Stream = 'STREAM',\n Cinema = 'CINEMA',\n}\n\nexport interface ITextLogoProps {\n productName: TextLogoProduct;\n color: Colors;\n fontSize?: number;\n}\n\nconst Logo = ({ color, productName, fontSize = 12 }: ITextLogoProps): React.ReactElement => (\n <LogoWrapper color={color} fontSize={fontSize}>\n <LogoLeftSide color={color}>\n <LogoLeftSideRow>ROYAL</LogoLeftSideRow>\n <LogoLeftSideRow>OPERA</LogoLeftSideRow>\n <LogoLeftSideRow>HOUSE</LogoLeftSideRow>\n </LogoLeftSide>\n <LogoRightSide>{productName}</LogoRightSide>\n </LogoWrapper>\n);\n\nexport default Logo;\n","import React, { useEffect, useState } from 'react';\nimport { RadioContainer, RadioError, RadioLine } from './Radio.style';\nimport { IRadioProps } from '../../../types/formTypes';\nimport { BodyText } from '../Typography';\n\n/**\n * DEPRECATED. Use Radio2 instead\n */\nconst Radio = ({ checked = false, error, label, onChange }: IRadioProps) => {\n const [isChecked, setChecked] = useState<boolean>(checked);\n\n const handleRadioChange = () => {\n setChecked(!isChecked);\n onChange?.(label ?? '');\n };\n\n const handleKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Space' || event.key === ' ') handleRadioChange();\n };\n\n useEffect(() => {\n setChecked(checked);\n }, [onChange]);\n\n return (\n <RadioContainer>\n <RadioLine role=\"radio\" tabIndex={0} onClick={handleRadioChange} onKeyPress={handleKeyPress}>\n <input type=\"radio\" checked={isChecked} readOnly />\n <BodyText level={1}>{label}</BodyText>\n </RadioLine>\n {error && (\n <RadioError>\n <BodyText level={1}>{error}</BodyText>\n </RadioError>\n )}\n </RadioContainer>\n );\n};\n\nexport default Radio;\n","import styled from 'styled-components';\nimport { IRadio2Props } from '../../../types/formTypes';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const Radio = styled.div<Pick<IRadio2Props, 'error' | 'darkMode' | 'disabled' | 'blackBox'>>`\n position: absolute;\n top: 1px;\n left: 0;\n z-index: 1;\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: ${({ error, darkMode, disabled }) => {\n if (error !== undefined) return '1px solid var(--error-color-state)';\n if (disabled) return '1px solid var(--base-color-midgrey)';\n if (darkMode) return '1px solid var(--base-color-white)';\n return '1px solid var(--base-color-black)';\n }};\n background-color: ${({ disabled, darkMode }) => {\n if (disabled) return 'var(--base-color-lightgrey)';\n if (darkMode) return 'var(--base-color-white)';\n return ' var(--base-color-white)';\n }};\n color: ${({ disabled, blackBox, darkMode }) => {\n if (disabled) return 'var(--base-color-midgrey)';\n if (darkMode) return 'var(--base-color-black)';\n if (blackBox) return 'var(--base-color-white)';\n return ' var(--base-color-black)';\n }};\n`;\n\nexport const TickboxLabel = styled.label<Pick<IRadio2Props, 'darkMode' | 'blackBox'>>`\n position: relative;\n padding-left: 32px;\n input[type='radio'] {\n width: 1px;\n height: 1px;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n z-index: 0;\n &:checked + ${Radio} {\n background-color: ${({ blackBox, darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n if (blackBox) return 'var(--base-color-black)';\n return ' var(--base-color-white)';\n }};\n }\n &:focus + ${Radio} {\n outline: ${({ darkMode }) => {\n if (darkMode) return '4px solid var(--base-color-lemonchiffon)';\n return '3px solid var(--base-color-lapislazuli)';\n }};\n }\n }\n`;\n\nexport const RadioIcon = styled.div`\n display: none;\n color: inherit;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: currentColor;\n input[type='radio']:checked + ${Radio} & {\n display: block;\n }\n`;\n\nexport const TextLabel = styled.div<Pick<IRadio2Props, 'darkMode' | 'disabled'>>`\n color: ${({ darkMode, disabled }) => {\n if (darkMode && disabled) return 'var(--base-color-lightgrey)';\n if (darkMode) return 'var(--base-color-white)';\n if (disabled) return 'var(--base-color-darkgrey)';\n return 'var(--base-color-black)';\n }};\n`;\n\nexport const ErrorLabel = styled.div<Pick<IRadio2Props, 'darkMode'>>`\n margin-top: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n return 'var(--base-color-errorstate)';\n }};\n`;\n","import React, { forwardRef } from 'react';\n\nimport { Container, TickboxLabel, Radio, RadioIcon, TextLabel, ErrorLabel } from './Radio2.style';\n\nimport { IRadio2Props } from '../../../types/formTypes';\nimport { BodyText, AltHeader } from '../Typography';\n\n/**\n * A Radio component, that wraps around the native `<input type=\"radio\"/>` element\n * and adds some extra styling, states and information around it (i.e. an error label,\n * error state).\n *\n * # Error state\n * An error label will be shown below the radio if the `error` prop exists.\n * Also radio will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n *\n * # Black box mode\n * If `blackBox` prop is true checked state will be styled as black box with white tick icon.\n * This style was used before as a default. Not preferred in new components.\n * This will be ignored if `darkMode` is true.\n */\nconst Radio2Component = (\n { children, disabled = false, error, darkMode = false, blackBox = false, ...inputProps }: IRadio2Props,\n ref: React.Ref<HTMLInputElement>\n): React.ReactElement => {\n return (\n <Container>\n <TickboxLabel darkMode={darkMode} blackBox={blackBox}>\n <input {...inputProps} disabled={disabled} type=\"radio\" ref={ref} data-testid=\"radio-input\" />\n <Radio error={error} darkMode={darkMode} disabled={disabled} blackBox={blackBox}>\n <RadioIcon />\n </Radio>\n <TextLabel disabled={disabled} darkMode={darkMode} data-testid=\"radio-content\">\n <BodyText level={1}>{children}</BodyText>\n </TextLabel>\n </TickboxLabel>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"radio-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\nconst Radio2 = forwardRef<HTMLInputElement, IRadio2Props>(Radio2Component);\n\nexport default Radio2;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const ButtonsContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n`;\n\nexport const IconWrapper = styled.div`\n justify-content: center;\n display: flex;\n align-items: center;\n width: var(--rotator-button-width);\n height: var(--rotator-button-width);\n background-color: var(--base-color-lightgrey);\n color: var(--base-color-black);\n\n svg {\n width: var(--rotator-button-icon-width);\n height: var(--rotator-button-icon-width);\n }\n\n svg path {\n fill: var(--base-color-black);\n }\n\n :hover {\n cursor: pointer;\n background-color: ${({ theme }) => theme.colors.primary};\n\n && svg path {\n fill: var(--base-color-white);\n }\n }\n\n @media ${devices.mobile} {\n background-color: var(--base-color-black);\n\n && svg path {\n fill: var(--base-color-white);\n }\n\n :hover {\n cursor: default;\n background-color: var(--base-color-black);\n\n && svg path {\n fill: var(--base-color-white);\n }\n }\n }\n`;\n\nexport const IconUnavailableWrapper = styled.div`\n justify-content: center;\n display: flex;\n align-items: center;\n width: var(--navigation-large-margin);\n height: var(--navigation-large-margin);\n background-color: var(--base-color-lightgrey);\n color: var(--base-color-black);\n opacity: 0.2;\n\n svg {\n width: var(--navigation-xlarge-gap);\n height: var(--navigation-xlarge-gap);\n }\n\n svg path {\n fill: var(--base-color-black);\n }\n\n @media ${devices.mobile} {\n opacity: 1;\n pointer-events: none;\n background-color: var(--base-color-black);\n\n && svg path {\n fill: var(--base-color-white);\n }\n }\n`;\n","import React from 'react';\nimport { ButtonsContainer, IconWrapper, IconUnavailableWrapper } from './RotatorButtons.style';\nimport { IRotatorButtonsProps } from '../../../types/buttonTypes';\nimport { Icon } from '../Icons';\n\nconst RotatorButtons = ({\n onClickPrev,\n onClickNext,\n availablePrev = true,\n availableNext = true,\n}: IRotatorButtonsProps) => {\n const onClickLeftHandler = () => {\n if (onClickPrev) {\n onClickPrev();\n }\n };\n\n const onPrevKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onClickLeftHandler();\n }\n };\n\n const onClickRightHandler = () => {\n if (onClickNext) {\n onClickNext();\n }\n };\n\n const onNextKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onClickRightHandler();\n }\n };\n\n const renderPrevIcon = () => <Icon iconName=\"CarouselArrow\" direction=\"reverse\" />;\n\n const renderNextIcon = () => <Icon iconName=\"CarouselArrow\" />;\n\n return (\n <ButtonsContainer>\n {availablePrev ? (\n <IconWrapper\n onClick={onClickLeftHandler}\n onKeyDown={onPrevKeyDownHandler}\n tabIndex={0}\n data-testid=\"iconprev\"\n className=\"carousel-icon-wrapper-left\"\n >\n {renderPrevIcon()}\n </IconWrapper>\n ) : (\n <IconUnavailableWrapper data-testid=\"iconprevnoavailable\">{renderPrevIcon()}</IconUnavailableWrapper>\n )}\n {availableNext ? (\n <IconWrapper\n onClick={onClickRightHandler}\n onKeyDown={onNextKeyDownHandler}\n tabIndex={0}\n data-testid=\"iconnext\"\n className=\"carousel-icon-wrapper-right\"\n >\n {renderNextIcon()}\n </IconWrapper>\n ) : (\n <IconUnavailableWrapper data-testid=\"iconnextnoavailable\">{renderNextIcon()}</IconUnavailableWrapper>\n )}\n </ButtonsContainer>\n );\n};\n\nexport default RotatorButtons;\n","import styled from 'styled-components';\nimport { ILogosStyledProps } from '../../../types/types';\n\nexport const SecondaryLogoWrapper = styled.svg<ILogosStyledProps>`\n path {\n fill: var(--base-color-${({ fillColor }) => fillColor});\n }\n`;\n","import styled from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\n\nexport const SectionSplitterContainer = styled(Grid)`\n height: 4px;\n`;\nexport const Splitter = styled.div`\n width: 100%;\n height: 4px;\n background: var(--base-color-lightgrey);\n`;\n","import styled from 'styled-components';\n\nexport const SponsorLogoWrapper = styled.div`\n background-color: var(--base-color-black);\n width: 172px;\n`;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport { SponsorLogoWrapper } from './SponsorLogo.style';\nimport { ISponsorLogoProps } from '../../../types/types';\n\nconst SponsorLogo = ({ colorLogo = '#fff', colorBackground = '#1d1d1b' }: ISponsorLogoProps): React.ReactElement => {\n return (\n <SponsorLogoWrapper>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 258.64 57.26\" width=\"172\" height=\"46\">\n <g id=\"Layer_2\" data-name=\"Layer 2\">\n <g id=\"Layer_1-2\" data-name=\"Layer 1\">\n <path\n fill={colorLogo}\n d=\"M48.59,20.83l0-1.16-4.8,1.72,0,1.26,4.9,1.44,0-1.1-1.09-.3-.06-1.52Zm-1.89.59,0,1.11-2-.52v0Z\"\n />\n <path\n fill={colorLogo}\n d=\"M48.8,18.33l.36-1.09-1.87-.6c.13-.4.18-.55.86-.52l1.36,0L49.88,15l-1.66,0c-.61,0-.84.07-1,.39h0a1.14,1.14,0,0,0-.84-1.29c-.85-.27-1.39.26-1.64,1l-.55,1.68ZM45.31,16l.1-.33c.19-.58.6-.52.79-.46a.63.63,0,0,1,.41.84l-.11.33Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"50.82 13.54 51.47 12.61 48.22 10.32 48.82 9.46 48.1 8.96 46.23 11.62 46.95 12.13 47.56 11.26 50.82 13.54\"\n />\n <path\n fill={colorLogo}\n d=\"M51.76,5.65a4.57,4.57,0,0,0-1,.61,1.43,1.43,0,0,0-.4,2.14c1.11,1.33,2.28-.25,2.89.46a.62.62,0,0,1-.18.9,2.56,2.56,0,0,1-1,.46l.56.76a4.67,4.67,0,0,0,1.14-.68,1.52,1.52,0,0,0,.35-2.22c-1.11-1.32-2.31.22-2.88-.46-.23-.27-.13-.58.16-.82a2.15,2.15,0,0,1,.89-.42Z\"\n />\n <path\n fill={colorLogo}\n d=\"M60.54,2.18a2.8,2.8,0,0,0-1.3.06,2.23,2.23,0,0,0-1.56,2.91,2.28,2.28,0,0,0,2.77,2,4,4,0,0,0,1.14-.44l-.26-1a2.05,2.05,0,0,1-.91.47c-.71.17-1.39-.34-1.6-1.26s.11-1.67.85-1.84a1.85,1.85,0,0,1,1,0Z\"\n />\n <path\n fill={colorLogo}\n d=\"M63.1,4.21c-.17,1.42.35,2.58,1.74,2.75S67,6.13,67.19,4.72,66.84,2.14,65.45,2s-2.17.82-2.35,2.23m1.16.15c.12-.93.44-1.65,1.09-1.57s.8.86.69,1.78-.45,1.65-1.1,1.57-.79-.86-.68-1.78\"\n />\n <path\n fill={colorLogo}\n d=\"M68.82,5.91a1.65,1.65,0,0,0,.75,2.45A1.65,1.65,0,0,0,72,7.52L73.4,4.77l-1-.52L70.89,7.17c-.22.43-.51.61-.92.41s-.44-.56-.21-1l1.48-2.91-1-.52Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"72.35 9.88 73.04 10.6 75.57 8.16 75.58 8.17 74.02 11.61 74.96 12.58 78.45 9.21 77.75 8.49 75.34 10.83 75.33 10.82 76.76 7.47 75.84 6.5 72.35 9.88\"\n />\n <path\n fill={colorLogo}\n d=\"M81.32,14.62A2.92,2.92,0,0,0,81,13.36a2.24,2.24,0,0,0-3.2-.87,2.28,2.28,0,0,0-1.28,3.14,4.1,4.1,0,0,0,.69,1l.89-.49a2,2,0,0,1-.66-.78,1.4,1.4,0,0,1,.86-1.84c.88-.43,1.65-.26,2,.43a1.79,1.79,0,0,1,.18,1Z\"\n />\n <rect\n fill={colorLogo}\n x=\"77.47\"\n y=\"17.86\"\n width=\"4.85\"\n height=\"1.14\"\n transform=\"translate(-1.99 14.27) rotate(-10.08)\"\n />\n <polygon\n fill={colorLogo}\n points=\"77.75 21.16 77.56 23.9 78.43 23.96 78.54 22.36 82.51 22.64 82.59 21.49 77.75 21.16\"\n />\n <polygon\n fill={colorLogo}\n points=\"48.1 32.49 49.47 34.12 49.78 33.85 48.68 32.56 50.15 31.32 51.15 32.52 51.45 32.25 50.46 31.06 51.78 29.94 52.83 31.2 53.14 30.93 51.81 29.36 48.1 32.49\"\n />\n <polygon\n fill={colorLogo}\n points=\"51.54 36.09 51.88 36.31 54.27 32.76 54.28 32.77 53.58 37.46 54.04 37.78 56.75 33.74 56.42 33.52 54.01 37.11 53.99 37.1 54.72 32.38 54.26 32.06 51.54 36.09\"\n />\n <path\n fill={colorLogo}\n d=\"M59.06,37.34l.83.24-.47,1.64a1.43,1.43,0,0,1-.68,0,1.83,1.83,0,0,1-1.05-2.46c.43-1.47,1.47-1.73,2.13-1.53a1.89,1.89,0,0,1,.9.57l.15-.45A2.92,2.92,0,0,0,60,34.8a2.23,2.23,0,0,0-2.7,1.75,2.27,2.27,0,0,0,1.35,3,2.24,2.24,0,0,0,1.15,0l.66-2.3L59.17,37Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"62.58 40.06 64.59 40.06 64.59 39.67 63.01 39.67 63.01 35.22 62.58 35.22 62.58 40.06\"\n />\n <path\n fill={colorLogo}\n d=\"M66.56,39.85l.41-.12L67,38.32l1.86-.53L69.66,39l.44-.12L67.21,34.6l-.44.13Zm.55-4.73h0l1.53,2.31L67,37.91Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"72.18 37.79 72.52 37.56 70.19 33.97 70.2 33.97 74.24 36.45 74.7 36.16 72.06 32.07 71.72 32.3 74.07 35.92 74.06 35.92 70.01 33.42 69.54 33.71 72.18 37.79\"\n />\n <path\n fill={colorLogo}\n d=\"M77.11,33.88l.47-.58A2.21,2.21,0,0,0,77,30a2.07,2.07,0,0,0-3.31.42l-.4.5ZM73.88,30.8l.22-.28c1-1.3,2.07-.62,2.67-.14,1,.75,1.23,1.71.56,2.56l-.27.36Z\"\n />\n <path\n fill={colorLogo}\n d=\"M110.46,21h0l-2.33,6.65h4.71Zm-1.78-3.24h3.65l6.33,16.12h-3.58l-1.39-3.69h-6.53l-1.41,3.69H102.4Z\"\n />\n <path\n fill={colorLogo}\n d=\"M123.57,24.66h1.07c1.59,0,3.42-.24,3.42-2.24s-1.81-2.11-3.42-2.11h-1.07Zm-3.23-6.89h3.49c3.46,0,7.6-.11,7.6,4.37a3.69,3.69,0,0,1-3.33,3.74v0c.88.07,1.39.95,1.71,1.67l2.59,6.31h-3.61l-1.93-5c-.47-1.2-.88-1.66-2.25-1.66h-1v6.7h-3.23Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"137.59 20.31 132.97 20.31 132.97 17.77 145.45 17.77 145.45 20.31 140.82 20.31 140.82 33.9 137.59 33.9 137.59 20.31\"\n />\n <path\n fill={colorLogo}\n d=\"M156.16,20.73a8.35,8.35,0,0,0-3.28-.69,2.24,2.24,0,0,0-2.54,2.24c0,2.79,7.07,1.61,7.07,7,0,3.53-2.8,4.87-6,4.87a14.29,14.29,0,0,1-4.14-.62l.3-2.91a7.79,7.79,0,0,0,3.65,1c1.22,0,2.86-.62,2.86-2.08,0-3.07-7.06-1.8-7.06-7.13,0-3.61,2.79-4.92,5.63-4.92a12.25,12.25,0,0,1,3.86.57Z\"\n />\n <path\n fill={colorLogo}\n d=\"M178,33.67a16.81,16.81,0,0,1-3.67.5c-5.22,0-8.85-2.61-8.85-8.06s3.37-8.61,8.85-8.61a10.39,10.39,0,0,1,3.64.67l-.23,2.72a6.65,6.65,0,0,0-3.48-.85c-3.33,0-5.41,2.54-5.41,5.84s2,5.75,5.48,5.75a9.05,9.05,0,0,0,3.53-.67Z\"\n />\n <path\n fill={colorLogo}\n d=\"M187.42,31.63c3.3,0,4.53-2.93,4.53-5.84S190.63,20,187.42,20,182.9,23,182.9,25.79s1.22,5.84,4.52,5.84m0-14.13c5.06,0,7.9,3.42,7.9,8.29s-2.79,8.38-7.9,8.38-7.89-3.44-7.89-8.38,2.77-8.29,7.89-8.29\"\n />\n <path\n fill={colorLogo}\n d=\"M197.47,17.77h3.23v9.31c0,2.75.88,4.55,3.35,4.55s3.35-1.8,3.35-4.55V17.77h3.23V28.08c0,4.31-2.45,6.09-6.58,6.09s-6.58-1.78-6.58-6.09Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"213.06 17.77 217.03 17.77 223.17 29.83 223.22 29.83 223.22 17.77 226.31 17.77 226.31 33.89 222.36 33.89 216.2 21.84 216.15 21.84 216.15 33.89 213.06 33.89 213.06 17.77\"\n />\n <path\n fill={colorLogo}\n d=\"M240.93,33.67a16.81,16.81,0,0,1-3.67.5c-5.22,0-8.85-2.61-8.85-8.06s3.37-8.61,8.85-8.61a10.43,10.43,0,0,1,3.64.67l-.23,2.72a6.65,6.65,0,0,0-3.48-.85c-3.33,0-5.41,2.54-5.41,5.84s2,5.75,5.48,5.75a9.05,9.05,0,0,0,3.53-.67Z\"\n />\n <rect fill={colorLogo} x=\"243.37\" y=\"17.77\" width=\"3.23\" height=\"16.12\" />\n <polygon\n fill={colorLogo}\n points=\"249.15 17.77 252.38 17.77 252.38 31.35 258.64 31.35 258.64 33.89 249.15 33.89 249.15 17.77\"\n />\n <polygon\n fill={colorLogo}\n points=\"102.45 40.87 111.96 40.87 111.96 43.41 105.68 43.41 105.68 47.38 111.43 47.38 111.43 49.92 105.68 49.92 105.68 54.45 112.01 54.45 112.01 56.99 102.45 56.99 102.45 40.87\"\n />\n <polygon\n fill={colorLogo}\n points=\"114.66 40.87 118.64 40.87 124.78 52.92 124.82 52.92 124.82 40.87 127.92 40.87 127.92 56.99 123.97 56.99 117.8 44.93 117.76 44.93 117.76 56.99 114.66 56.99 114.66 40.87\"\n />\n <path\n fill={colorLogo}\n d=\"M143.51,44a10.56,10.56,0,0,0-4.17-.86A5.48,5.48,0,0,0,133.51,49c0,3.28,2,5.75,5.47,5.75a8.6,8.6,0,0,0,2.12-.23v-4.2h-3.42V47.75h6.51v8.68a20.3,20.3,0,0,1-5.21.83c-5.22,0-8.85-2.61-8.85-8.06s3.38-8.61,8.85-8.61a15.72,15.72,0,0,1,4.73.67Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"146.78 40.87 150.01 40.87 150.01 54.45 156.27 54.45 156.27 56.99 146.78 56.99 146.78 40.87\"\n />\n <path\n fill={colorLogo}\n d=\"M165.76,44.1h0l-2.34,6.65h4.72ZM164,40.87h3.65L174,57h-3.58L169,53.29h-6.54l-1.4,3.7H157.7Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"175.53 40.87 179.5 40.87 185.65 52.92 185.69 52.92 185.69 40.87 188.79 40.87 188.79 56.99 184.84 56.99 178.67 44.93 178.62 44.93 178.62 56.99 175.53 56.99 175.53 40.87\"\n />\n <path\n fill={colorLogo}\n d=\"M194.66,54.45h1.8a5.27,5.27,0,0,0,5.31-5.52,5.27,5.27,0,0,0-5.31-5.52h-1.8Zm-3.23-13.58h4.41c4.94,0,9.3,1.66,9.3,8.06S200.78,57,195.84,57h-4.41Z\"\n />\n <path\n fill={colorLogo}\n d=\"M248,3.39h-.7l1.84,5.24-.13.46c-.2.67-.39,1.12-.94,1.12a1.29,1.29,0,0,1-.47-.08l-.06.55a3,3,0,0,0,.69.08c.72,0,1.08-.71,1.33-1.42l2.07-5.95h-.67L249.43,7.7h0ZM245.88,6c0,1-.31,2.16-1.53,2.16S242.81,6.92,242.81,6s.37-2.17,1.54-2.17S245.88,5,245.88,6m-3.71,2.59h.64V7.75h0a1.68,1.68,0,0,0,1.62.94c1.42,0,2.13-1.18,2.13-2.71s-.61-2.71-2.13-2.71a1.75,1.75,0,0,0-1.62,1h0V1h-.64Zm-3.46-5.18h-.64V4h0a1.7,1.7,0,0,0-1.61-.71c-1.53,0-2.14,1.13-2.14,2.71,0,1.15.53,2.59,2.19,2.59a1.6,1.6,0,0,0,1.57-1h0c0,1.46-.14,2.66-1.79,2.66a3.55,3.55,0,0,1-1.52-.36l-.05.64a5.45,5.45,0,0,0,1.56.27c1.78,0,2.43-1.18,2.43-2.62ZM235,6c0-1,.32-2.17,1.54-2.17s1.53.92,1.53,2.17c0,.94-.41,2-1.57,2S235,7,235,6m-6.17,2.59h.64V5.7c0-.86.37-1.89,1.54-1.89.88,0,1.23.63,1.23,1.61V8.57h.63V5.26c0-1.14-.48-2-1.76-2a1.64,1.64,0,0,0-1.68,1h0V3.39h-.62c0,.41,0,.82,0,1.22Zm-1.71-7.42h-.64V2h.64Zm-.64,7.42h.64V3.39h-.64ZM221.1,6c0-1,.31-2.17,1.53-2.17S224.17,5,224.17,6s-.4,2.16-1.54,2.16S221.1,7,221.1,6m3.7-5h-.63V4.26h0a1.76,1.76,0,0,0-1.62-1C221,3.27,220.4,4.4,220.4,6s.71,2.71,2.13,2.71a1.68,1.68,0,0,0,1.62-.94h0v.82h.63Zm-9.89,7.62h.64V5.7c0-.86.37-1.89,1.54-1.89.88,0,1.22.63,1.22,1.61V8.57H219V5.26c0-1.14-.48-2-1.76-2a1.64,1.64,0,0,0-1.68,1h0V3.39h-.62c0,.41,0,.82,0,1.22Zm-1.72-5.18h-.64V6.25c0,.87-.36,1.89-1.53,1.89-.89,0-1.23-.63-1.23-1.6V3.39h-.64V6.7c0,1.14.49,2,1.77,2a1.64,1.64,0,0,0,1.67-1h0v.93h.62c0-.42,0-.83,0-1.22Zm-7.08,5.18h.64V3.93h1.17V3.39h-1.17V2.94c0-.62-.09-1.57.78-1.57a1.13,1.13,0,0,1,.51.12l0-.56a1.47,1.47,0,0,0-.6-.1c-1.33,0-1.37,1.09-1.37,2.18v.38h-1v.54h1Zm-3.5-5.1a3.91,3.91,0,0,0-1.25-.2A2.51,2.51,0,0,0,198.8,6a2.45,2.45,0,0,0,2.48,2.71,3.89,3.89,0,0,0,1.33-.18l-.06-.6a3.38,3.38,0,0,1-1.17.23A2,2,0,0,1,199.5,6a1.93,1.93,0,0,1,1.95-2.17,2.78,2.78,0,0,1,1.11.27Zm-5.2-2.32h-.64V2h.64Zm-.64,7.42h.64V3.39h-.64Zm-2.35,0h.64V1h-.64ZM192.26,6c0,1-.31,2.16-1.53,2.16S189.19,6.92,189.19,6s.37-2.17,1.54-2.17S192.26,5,192.26,6m-3.71,2.59h.64V7.75h0a1.68,1.68,0,0,0,1.62.94C192.25,8.69,193,7.51,193,6s-.61-2.71-2.13-2.71a1.75,1.75,0,0,0-1.62,1h0V1h-.64Zm-1.68-5.18h-.64V6.25c0,.87-.36,1.89-1.53,1.89-.89,0-1.23-.63-1.23-1.6V3.39h-.64V6.7c0,1.14.49,2,1.77,2a1.64,1.64,0,0,0,1.67-1h0v.93h.62c0-.42,0-.83,0-1.22ZM180.69,6c0,1-.32,2.16-1.54,2.16S177.62,6.92,177.62,6s.39-2.17,1.53-2.17S180.69,5,180.69,6M177,10.7h.64v-3h0a1.6,1.6,0,0,0,1.61,1c1.43,0,2.13-1.18,2.13-2.71s-.6-2.71-2.13-2.71a1.78,1.78,0,0,0-1.65,1.06h0l0-.94H177Zm-3.46-7.31h-.64V4h0a1.72,1.72,0,0,0-1.62-.71c-1.52,0-2.13,1.13-2.13,2.71,0,1.15.53,2.59,2.18,2.59a1.62,1.62,0,0,0,1.58-1h0c0,1.46-.14,2.66-1.79,2.66a3.59,3.59,0,0,1-1.53-.36l0,.64a5.54,5.54,0,0,0,1.57.27c1.78,0,2.43-1.18,2.43-2.62ZM169.81,6c0-1,.31-2.17,1.53-2.17s1.54.92,1.54,2.17c0,.94-.42,2-1.58,2s-1.49-1-1.49-2m-6.17,2.59h.64V5.7c0-.86.36-1.89,1.53-1.89.89,0,1.23.63,1.23,1.61V8.57h.64V5.26c0-1.14-.49-2-1.77-2a1.62,1.62,0,0,0-1.67,1h0V3.39h-.62c0,.41,0,.82,0,1.22Zm-1.71-7.42h-.64V2h.64Zm-.64,7.42h.64V3.39h-.64Zm-4.53-.12a3.91,3.91,0,0,0,1.45.24c.78,0,1.81-.38,1.81-1.47,0-1.7-2.55-1.58-2.55-2.54,0-.66.45-.87,1.11-.87a2.87,2.87,0,0,1,1.15.25l.06-.56a4.08,4.08,0,0,0-1.28-.23c-.85,0-1.68.38-1.68,1.41,0,1.5,2.49,1.31,2.49,2.54,0,.59-.54.92-1.15.92a3.05,3.05,0,0,1-1.35-.32ZM155.5,3.39h-.64V6.25c0,.87-.37,1.89-1.54,1.89-.88,0-1.23-.63-1.23-1.6V3.39h-.63V6.7c0,1.14.48,2,1.76,2a1.65,1.65,0,0,0,1.68-1h0v.93h.62c0-.42,0-.83,0-1.22ZM144.23,6c0-1,.31-2.17,1.53-2.17S147.29,5,147.29,6s-.39,2.16-1.53,2.16S144.23,7,144.23,6m3.7-5h-.64V4.26h0a1.75,1.75,0,0,0-1.61-1c-1.53,0-2.13,1.13-2.13,2.71s.71,2.71,2.13,2.71a1.66,1.66,0,0,0,1.61-.94h0v.82h.64Zm-9.06,4.66a1.7,1.7,0,0,1,1.52-1.8c1,0,1.32.9,1.32,1.8ZM142,7.75a3.27,3.27,0,0,1-1.45.39,1.75,1.75,0,0,1-1.71-2h3.54V5.83c0-1.39-.6-2.56-2.06-2.56-1.31,0-2.18,1.12-2.18,2.71s.64,2.71,2.35,2.71A4.14,4.14,0,0,0,142,8.4Zm-4.71-4.36h-1.18V1.91l-.64.23V3.39h-1v.54h1V7c0,1,.05,1.73,1.18,1.73a2.32,2.32,0,0,0,.78-.14l0-.53a1.47,1.47,0,0,1-.59.12c-.51,0-.69-.39-.69-.85V3.93h1.18Zm-6,5.18h.64V6c0-.94.28-2.08,1.29-2.08a1.41,1.41,0,0,1,.47.07V3.33a2,2,0,0,0-.45-.06,1.52,1.52,0,0,0-1.33,1.11h0v-1h-.64a9.26,9.26,0,0,1,0,1.15ZM125.76,6c0-1.2.6-2.17,1.71-2.17s1.72,1,1.72,2.17-.6,2.16-1.72,2.16-1.71-1-1.71-2.16m-.7,0a2.43,2.43,0,1,0,4.83,0,2.43,2.43,0,1,0-4.83,0m-1.83,0c0,1-.32,2.16-1.54,2.16S120.16,6.92,120.16,6s.4-2.17,1.53-2.17S123.23,5,123.23,6m-3.71,4.72h.64v-3h0a1.61,1.61,0,0,0,1.62,1c1.42,0,2.13-1.18,2.13-2.71s-.61-2.71-2.13-2.71a1.79,1.79,0,0,0-1.66,1.06h0l0-.94h-.64ZM117.4,6c0,1-.32,2.16-1.54,2.16S114.33,6.92,114.33,6s.39-2.17,1.53-2.17S117.4,5,117.4,6m-3.71,4.72h.64v-3h0a1.6,1.6,0,0,0,1.61,1c1.43,0,2.14-1.18,2.14-2.71s-.61-2.71-2.14-2.71a1.79,1.79,0,0,0-1.65,1.06h0l0-.94h-.64ZM112,3.39h-.64V6.25c0,.87-.37,1.89-1.54,1.89-.88,0-1.23-.63-1.23-1.6V3.39H108V6.7c0,1.14.49,2,1.77,2a1.64,1.64,0,0,0,1.68-1h0v.93h.62c0-.42,0-.83,0-1.22Zm-9.4,5a3.92,3.92,0,0,0,1.61.31,2.08,2.08,0,0,0,2.32-2c0-2.07-3.25-2.09-3.25-3.51,0-.91.8-1.22,1.54-1.22a2.89,2.89,0,0,1,1.28.27l.12-.64a4.31,4.31,0,0,0-1.39-.23c-1.25,0-2.25.71-2.25,1.84,0,1.86,3.25,2,3.25,3.43a1.41,1.41,0,0,1-1.59,1.45,2.77,2.77,0,0,1-1.57-.42Z\"\n />\n <rect fill={colorLogo} x=\"92.12\" width=\"0.75\" height=\"56.99\" />\n <path fill={colorLogo} d=\"M2.46,50.42H4.22v5.07H7.29V57H2.46Z\" />\n <path\n fill={colorLogo}\n d=\"M10.84,57.2a3.59,3.59,0,0,1-1.37-.26,3.27,3.27,0,0,1-1.82-1.83,4,4,0,0,1,0-2.79,3.5,3.5,0,0,1,.72-1.1,3.28,3.28,0,0,1,1.1-.72,3.59,3.59,0,0,1,1.37-.26,3.65,3.65,0,0,1,1.38.26,3.14,3.14,0,0,1,1.09.72,3.33,3.33,0,0,1,.72,1.1,4,4,0,0,1,0,2.79,3.3,3.3,0,0,1-1.81,1.83A3.65,3.65,0,0,1,10.84,57.2Zm0-1.65a1.67,1.67,0,0,0,.69-.14A1.65,1.65,0,0,0,12,55a1.68,1.68,0,0,0,.32-.59,2.35,2.35,0,0,0,.11-.71,2.41,2.41,0,0,0-.11-.72,1.64,1.64,0,0,0-.32-.58,1.54,1.54,0,0,0-.51-.4,1.77,1.77,0,0,0-1.38,0,1.54,1.54,0,0,0-.51.4,1.64,1.64,0,0,0-.32.58,2.41,2.41,0,0,0-.11.72,2.35,2.35,0,0,0,.11.71,1.68,1.68,0,0,0,.32.59,1.65,1.65,0,0,0,.51.39A1.67,1.67,0,0,0,10.84,55.55Z\"\n />\n <path fill={colorLogo} d=\"M16.43,52h-2V50.42h5.83V52h-2V57H16.43Z\" />\n <path fill={colorLogo} d=\"M22.49,52h-2V50.42h5.83V52h-2V57H22.49Z\" />\n <path fill={colorLogo} d=\"M26.7,50.42h4.77v1.52h-3v1h2.47v1.43H28.46v1.13h3.22V57h-5Z\" />\n <path\n fill={colorLogo}\n d=\"M32.4,50.42h2.74a3.24,3.24,0,0,1,1,.14,2.05,2.05,0,0,1,.74.41,2,2,0,0,1,.48.68,2.5,2.5,0,0,1,.16.94,2.19,2.19,0,0,1-.28,1.14,2.27,2.27,0,0,1-.77.77L37.86,57H36l-1.13-2.25h-.73V57H32.4Zm2.57,3a.75.75,0,0,0,.79-.79.8.8,0,0,0-.21-.59.77.77,0,0,0-.59-.22h-.84v1.6Z\"\n />\n <path fill={colorLogo} d=\"M39.81,54.4l-2.35-4h2l1.29,2.36L42,50.42h2l-2.36,4V57H39.81Z\" />\n <path fill={colorLogo} d=\"M45.71,50.42h4.62V52H47.47v1.28h2.21v1.45H47.47V57H45.71Z\" />\n <path\n fill={colorLogo}\n d=\"M50.76,50.42h1.76V54.3a1.46,1.46,0,0,0,.25.89,1.17,1.17,0,0,0,1.67,0,1.48,1.48,0,0,0,.25-.89V50.42h1.78v4a3,3,0,0,1-.21,1.15,2.4,2.4,0,0,1-.59.86,2.66,2.66,0,0,1-.9.55,3.58,3.58,0,0,1-2.3,0,2.85,2.85,0,0,1-.91-.54,2.49,2.49,0,0,1-.59-.86,3,3,0,0,1-.21-1.16Z\"\n />\n <path fill={colorLogo} d=\"M57.42,50.42H59l2.54,3.69V50.42h1.74V57h-1.5l-2.64-3.8V57H57.42Z\" />\n <path\n fill={colorLogo}\n d=\"M64.28,50.42h2.54a4.85,4.85,0,0,1,1.41.2,3.06,3.06,0,0,1,1.13.6,2.67,2.67,0,0,1,.74,1.05,3.78,3.78,0,0,1,.27,1.49,3.56,3.56,0,0,1-.27,1.44,2.77,2.77,0,0,1-.75,1,3.18,3.18,0,0,1-1.13.62,5,5,0,0,1-1.41.2H64.28Zm2.47,5.07a1.67,1.67,0,0,0,1.81-1.76,2.27,2.27,0,0,0-.11-.72,1.59,1.59,0,0,0-.34-.56,1.29,1.29,0,0,0-.56-.36,2.13,2.13,0,0,0-.8-.13H66v3.53Z\"\n />\n <path fill={colorLogo} d=\"M71.05,50.42h4.76v1.52h-3v1h2.47v1.43H72.8v1.13H76V57h-5Z\" />\n <path\n fill={colorLogo}\n d=\"M76.75,50.42h2.54a4.85,4.85,0,0,1,1.41.2,3.15,3.15,0,0,1,1.13.6,2.89,2.89,0,0,1,.74,1.05,3.78,3.78,0,0,1,.27,1.49,3.56,3.56,0,0,1-.27,1.44,3,3,0,0,1-.75,1,3.18,3.18,0,0,1-1.13.62,5,5,0,0,1-1.41.2H76.75Zm2.47,5.07A1.66,1.66,0,0,0,81,53.73a2,2,0,0,0-.11-.72,1.44,1.44,0,0,0-.33-.56,1.36,1.36,0,0,0-.56-.36,2.13,2.13,0,0,0-.8-.13H78.5v3.53Z\"\n />\n <path\n fill={colorBackground}\n d=\"M28.47,18.89a2.62,2.62,0,0,0-1.56.63c.16-1.82-.51-3.17-1.76-3.63a3.22,3.22,0,0,0-2.33.1l-1-2.44c.93-2.28,2.56-5.06,2.56-7.34,0-1.77-.89-3.07-2.6-3.07a4.45,4.45,0,0,0-3.05,1.95C17.53,2.45,16.28,1.2,14.94,1.2c-2.13,0-3,2.13-3,4a18.84,18.84,0,0,0,2,7.52,63.85,63.85,0,0,0-2.9,7.57,8.59,8.59,0,0,0-6.12-2.7,6.3,6.3,0,0,0-3.53,1A2.93,2.93,0,0,0,0,20.87a2.64,2.64,0,0,0,2.23,2.54C4.56,24,5.6,25.9,6.48,29.58c1.61,6.64,5.76,10.63,12.14,10.63A12.26,12.26,0,0,0,30.86,28a14.77,14.77,0,0,0-.26-2.64,10.78,10.78,0,0,0,.46-1.56c.57-2.85-.52-4.88-2.59-4.88\"\n />\n <path\n fill={colorLogo}\n d=\"M24.62,17.33c1.08.5,1.17,2.76.08,5.45-.88,2.6-2.15,4.18-3.34,4.19-.93,0-1.71-.66-1.71-2.42,0-3.32,2.73-8.25,5-7.22\"\n />\n <path\n fill={colorLogo}\n d=\"M13.43,5.15c0-1.09.47-2.39,1.51-2.39q1.08,0,2.64,3.42a27.54,27.54,0,0,0-2.75,4.52,17.18,17.18,0,0,1-1.4-5.55\"\n />\n <path\n fill={colorLogo}\n d=\"M18.62,38.66c-5.45,0-9.18-3.79-10.63-9.44-1-3.89-2.23-6.49-5.4-7.32-.36-.1-1-.36-1-1S2.75,19.1,4.93,19.1a7.68,7.68,0,0,1,6.17,3.69l1.11-.41c.16-2.12,1.24-5,3.14-9.09,2.39-5.13,4.81-8.63,6.42-8.59a1.41,1.41,0,0,1,1.12,1.51c0,2.12-1.87,5.31-3.51,8.78-.17.35-.91,2-.91,2l1.07.46c.35-.59,1.08-2,1.18-2.24l.8,1.77a11.34,11.34,0,0,0-3.21,7.58c0,2,.88,3.2,2.17,3.61a2.91,2.91,0,0,0,3.22-1,2.57,2.57,0,0,0,2.65,2.32,3.35,3.35,0,0,0,3.06-2.21A11,11,0,0,1,18.62,38.66\"\n />\n <path\n fill={colorLogo}\n d=\"M29.66,23.56c-.36,2.18-1.68,4.6-3.31,4.6s-1.47-2.06-1.11-3.3c.57-2.23,2.09-4.57,3.23-4.57s1.5,1.41,1.19,3.27\"\n />\n <path\n fill={colorBackground}\n d=\"M24.15,34.49c-4.61,2.62-8.91.95-10.53-3.83L15,30c1.32,3.89,5.13,5,8.65,3.13Z\"\n />\n <path fill={colorBackground} d=\"M22.9,24.5a1.21,1.21,0,1,1-1.21-1.21A1.21,1.21,0,0,1,22.9,24.5\" />\n <path fill={colorBackground} d=\"M28,26a1.09,1.09,0,1,1-1.09-1.09A1.09,1.09,0,0,1,28,26\" />\n <path\n fill={colorBackground}\n d=\"M25.9,6.58a1.15,1.15,0,0,1-.41-.08,1.23,1.23,0,0,1-.33-.23,1.12,1.12,0,0,1-.22-.33,1.07,1.07,0,0,1-.08-.41,1.06,1.06,0,0,1,.08-.4,1.33,1.33,0,0,1,.22-.34,1.46,1.46,0,0,1,.33-.22,1.16,1.16,0,0,1,.42-.08,1.06,1.06,0,0,1,.4.08,1.12,1.12,0,0,1,.33.22,1.11,1.11,0,0,1,.22.34,1.06,1.06,0,0,1,.08.4,1.07,1.07,0,0,1-.08.41,1,1,0,0,1-.22.33,1,1,0,0,1-.33.23A1.11,1.11,0,0,1,25.9,6.58Zm0-.2a.72.72,0,0,0,.33-.07.76.76,0,0,0,.26-.18.78.78,0,0,0,.17-.26,1,1,0,0,0,.06-.33.88.88,0,0,0-.06-.33.73.73,0,0,0-.17-.27.76.76,0,0,0-.26-.18.71.71,0,0,0-.32-.07.72.72,0,0,0-.33.07.68.68,0,0,0-.26.18.73.73,0,0,0-.17.27.88.88,0,0,0-.06.33,1,1,0,0,0,.06.33.78.78,0,0,0,.17.26.68.68,0,0,0,.26.18A.71.71,0,0,0,25.9,6.38ZM25.54,5H26a.47.47,0,0,1,.17,0,.41.41,0,0,1,.11.07.3.3,0,0,1,.07.1.52.52,0,0,1,0,.11.41.41,0,0,1-.05.19.31.31,0,0,1-.15.12l.25.44h-.22l-.24-.41h-.17v.41h-.2Zm.4.49a.17.17,0,0,0,.13,0,.17.17,0,0,0,.05-.12.13.13,0,0,0-.05-.11.2.2,0,0,0-.14,0h-.19v.32Z\"\n />\n </g>\n </g>\n </svg>\n </SponsorLogoWrapper>\n );\n};\n\nexport default SponsorLogo;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const CustomImage = styled.img`\n max-height: 100px;\n max-width: auto;\n\n @media ${devices.tablet} {\n max-height: 55px;\n }\n\n @media ${devices.mobile} {\n max-height: 45px;\n }\n`;\n\nexport const SponsorshipStyledIframe = styled.div`\n background-color: transparent;\n height: 80px;\n margin: 0px;\n overflow: hidden;\n padding: 0;\n width: 80px;\n\n & > iframe {\n border: 0;\n display: block;\n margin: 0px;\n padding: 0px;\n overflow: hidden;\n width: 100%;\n height: 100%;\n }\n\n @media ${devices.mobile} {\n & {\n height: 40px;\n width: 40px;\n }\n & iframe {\n height: 80px;\n transform: scale(0.5) translate(-40px, -40px);\n width: 80px;\n }\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport { ISponsorshipProps } from '../../../types/types';\nimport { SponsorshipStyledIframe, CustomImage } from './Sponsorship.style';\n\nconst DEFAULT_SPONSORSHIP_IFRAME = 'https://static.roh.org.uk/rolex/v4/rolex.html?size=80';\nconst DEFAULT_SPONSORSHIP_TITLE = 'rolex';\nconst DEFAULT_DATA_ROH = 'ImgAdvert';\nconst DEFAULT_SPONSORSHIP_ALT_TEXT = \"Sponsor's logo\";\n\nconst Sponsorship: FunctionComponent<ISponsorshipProps> = ({\n src = DEFAULT_SPONSORSHIP_IFRAME,\n dataRoh = DEFAULT_DATA_ROH,\n title = DEFAULT_SPONSORSHIP_TITLE,\n altText = DEFAULT_SPONSORSHIP_ALT_TEXT,\n isCustomImage,\n}) => {\n if (isCustomImage) return <CustomImage src={src} alt={altText} data-roh={dataRoh} data-testid=\"custom-sponsor\" />;\n\n return (\n <SponsorshipStyledIframe>\n <iframe src={src} scrolling=\"no\" data-roh={dataRoh} title={title} className=\"desktopIframe\" />\n </SponsorshipStyledIframe>\n );\n};\n\nexport default Sponsorship;\n","import styled from 'styled-components';\nimport { ITabProps } from '../../../types/types';\nimport { devices } from '../../../styles/viewports';\n\nexport const TabText = styled.a<ITabProps>`\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-black);\n margin-right: 0px;\n margin-top: 5px;\n text-decoration: none;\n text-transform: uppercase;\n\n ${(props) => {\n if (props.withIcon === 'left') {\n return `margin-left: 5px;`;\n }\n\n return ``;\n }}\n\n @media ${devices.mobileAndTablet} {\n ${(props) => {\n if (!props.withTextInMobile) {\n return `\n display: none;\n `;\n }\n\n return ``;\n }}\n }\n`;\n\nexport const TitleContainer = styled.div<ITabProps>`\n display: flex;\n flex-direction: row;\n width: fit-content;\n border-bottom: 1px solid transparent;\n\n ${(props) => {\n if (props.withIcon === 'left') {\n return `\n flex-direction: row-reverse;\n svg {\n margin-right: 6px;\n }`;\n }\n\n return `\n svg {\n margin-left: 6px;\n }`;\n }}\n\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n\n ${({ selected, colorPrimary }) => {\n if (selected) {\n return `\n cursor: pointer;\n border-bottom: 1px solid var(--base-color-${colorPrimary});\n && a {\n color: var(--base-color-${colorPrimary});\n } \n && svg path {\n fill: var(--base-color-${colorPrimary});\n } \n `;\n }\n\n return '';\n }}\n\n ${(props) => {\n if (!props.withTextInMobile) {\n return `\n svg {\n margin-right: 6px;\n }\n `;\n }\n return ``;\n }}\n\n @media ${devices.mobileAndTablet} {\n svg {\n margin-right: 0px;\n }\n }\n\n :hover {\n cursor: pointer;\n border-bottom: 1px solid var(--base-color-${({ colorPrimary }) => colorPrimary});\n && a {\n color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n && svg path {\n fill: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n`;\n","import React from 'react';\nimport { TabText, TitleContainer } from './Tab.style';\nimport { ITabProps } from '../../../types/types';\nimport { Icon } from '../Icons';\n\nconst Tab = ({\n title,\n titleLink = '',\n onClick,\n onFocus,\n onReset,\n selected = false,\n iconName = 'DropdownArrow',\n withIcon = 'right',\n withTextInMobile = true,\n colorPrimary = 'primary',\n}: ITabProps) => {\n const clickHandler = () => {\n if (onClick) {\n onClick(titleLink);\n }\n };\n\n const onFocusHandler = () => onFocus?.();\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n clickHandler();\n } else if (e.key === 'Escape') {\n onReset?.();\n }\n };\n\n return (\n <TitleContainer\n colorPrimary={colorPrimary}\n withTextInMobile={withTextInMobile}\n withIcon={withIcon}\n selected={selected}\n onClick={() => clickHandler()}\n onFocus={onFocusHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={0}\n >\n <TabText withTextInMobile={withTextInMobile}>{title}</TabText>\n {withIcon !== 'none' && <Icon iconName={iconName} />}\n </TitleContainer>\n );\n};\n\nexport default Tab;\n","import styled from 'styled-components';\nimport { ITabLinkProps } from '../../../types/navigation';\nimport { devices } from '../../../styles/viewports';\n\nexport const TabLinkWrapper = styled.a<ITabLinkProps>`\n padding: ${({ iconName }) =>\n iconName ? 'calc(var(--text-link-underline-offset) - 4px) 0' : 'var(--text-link-underline-offset) 0'};\n font-family: var(--font-family-navigation);\n font-size: var(--font-size-navigation);\n font-weight: var(--font-weight-navigation);\n line-height: var(--line-height-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n text-transform: var(--text-transform-navigation);\n color: ${({ selected, color, hoverColor }) =>\n selected ? `var(--base-color-${hoverColor})` : `var(--base-color-${color})`};\n width: fit-content;\n display: flex;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n border-bottom: ${({ selected, hoverColor }) =>\n selected ? `1px solid var(--base-color-${hoverColor})` : '1px solid transparent'};\n ${({ selected, hoverColor }) =>\n selected\n ? `&& svg path {\n fill: var(--base-color-${hoverColor});\n }`\n : ''}\n\n @media ${devices.desktop}, ${devices.largeDesktop} {\n &:hover {\n color: var(--base-color-${({ hoverColor }) => hoverColor});\n border-bottom: 1px solid var(--base-color-${({ hoverColor }) => hoverColor});\n\n && svg path {\n fill: var(--base-color-${({ hoverColor }) => hoverColor});\n }\n }\n }\n`;\n\nexport const TabLinkIconWrapper = styled.span`\n width: var(--button-icon-width);\n height: var(--button-icon-height);\n margin-right: var(--button-icon-margin);\n`;\n","import React, { FunctionComponent } from 'react';\nimport { TabLinkWrapper, TabLinkIconWrapper } from './TabLink.style';\nimport { Icon } from '..';\nimport { ITabLinkProps } from '../../../types/navigation';\nimport { Colors } from '../../../types/types';\n\nconst TabLink: FunctionComponent<ITabLinkProps> = ({\n children,\n iconName,\n iconDirection,\n color = Colors.DarkGrey,\n hoverColor = Colors.Primary,\n ...rest\n}) => {\n return (\n <TabLinkWrapper color={color} iconName={iconName} hoverColor={hoverColor} {...rest}>\n {iconName ? (\n <TabLinkIconWrapper data-testid=\"tab-link-icon\">\n <Icon iconName={iconName} direction={iconDirection} color={color} />\n </TabLinkIconWrapper>\n ) : null}\n {children}\n </TabLinkWrapper>\n );\n};\n\nexport default TabLink;\n","import styled from 'styled-components';\nimport { ITextAreaProps } from '../../../types/formTypes';\n\nexport const TextAreaWrapper = styled.div<Pick<ITextAreaProps, 'width' | 'height'>>`\n width: ${({ width }) => (width ? `${width}px;` : '100%;')};\n height: ${({ height }) => `${height}px;`};\n`;\n\nexport const TextAreaLabel = styled.div<Pick<ITextAreaProps, 'darkMode'>>`\n margin-block: 0 15px;\n ${({ darkMode }) => (darkMode ? 'color: var(--base-color-white)' : '')};\n`;\n\nexport const TextAreaBox = styled.textarea<Pick<ITextAreaProps, 'error' | 'darkMode'>>`\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n box-sizing: border-box;\n resize: none;\n padding: 20px;\n width: 100%;\n height: 100%;\n border: 1px solid ${({ error }) => (error ? 'var(--base-color-errorstate)' : 'var(--base-color-lightgrey)')};\n\n ${({ error, darkMode }) => {\n if (!darkMode || !error) return '';\n\n return 'outline: 3px solid var(--base-color-errorstate)';\n }};\n\n :disabled {\n background-color: var(--base-color-lightgrey);\n border: 1px solid transparent;\n outline: none;\n }\n\n :focus {\n outline-style: solid;\n outline-width: ${({ darkMode }) => (darkMode ? '4px' : '3px')};\n outline-color: ${({ darkMode }) => (darkMode ? 'var(--base-color-lemonchiffon)' : 'var(--base-color-lapislazuli)')};\n }\n`;\n\nexport const TextAreaError = styled.div<Pick<ITextAreaProps, 'darkMode'>>`\n ${({ darkMode }) => (darkMode ? 'color: var(--base-color-white)' : '')};\n color: ${({ darkMode }) => (darkMode ? 'var(--base-color-white)' : 'var(--base-color-errorstate)')};\n margin-block: 15px 0;\n`;\n","import styled from 'styled-components';\nimport { ITextFieldProps } from '../../../types/formTypes';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const InputWrapper = styled.div<Pick<ITextFieldProps, 'width'>>`\n position: relative;\n width: auto;\n max-width: ${({ width }) => {\n if (!width) return 'none';\n return `${width}px`;\n }};\n`;\n\nexport const Input = styled.input<Pick<ITextFieldProps, 'error' | 'darkMode'> & { isPasswordField: boolean }>`\n box-sizing: border-box;\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n text-transform: var(--text-transform-altHeader);\n border-radius: 0;\n width: 100%;\n height: 48px;\n padding-left: 20px;\n -moz-appearance: textfield;\n padding-right: ${({ isPasswordField }) => {\n if (isPasswordField) return `80px`;\n return `20px`;\n }};\n outline: none;\n border: ${({ error }) => {\n if (error !== undefined) return `1px solid var(--base-color-errorstate)`;\n return `1px solid var(--base-color-darkgrey)`;\n }};\n &:disabled {\n background-color: var(--base-color-lightgrey);\n border: 1px solid transparent;\n outline: none;\n }\n\n &:focus {\n outline: ${({ darkMode }) => {\n if (darkMode) return `4px solid var(--base-color-lemonchiffon)`;\n return `3px solid var(--base-color-lapislazuli)`;\n }};\n }\n\n /* remove search decoration */\n &::-webkit-search-decoration,\n &::-webkit-search-cancel-button,\n &::-webkit-search-results-button,\n &::-webkit-search-results-decoration {\n display: none;\n }\n\n /* remove number decoration */\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n`;\n\nexport const ShowHideButton = styled.button`\n position: absolute;\n width: 53px;\n top: 50%;\n margin-top: calc(var(--line-height-overline-1) / 2 * -1);\n right: 20px;\n border: none;\n background: none;\n padding: 0;\n display: block;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n color: var(--base-color-black);\n`;\n\nexport const TextLabel = styled.div<Pick<ITextFieldProps, 'darkMode'>>`\n margin-bottom: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return `var(--base-color-white)`;\n return `var(--base-color-black)`;\n }};\n`;\n\nexport const ErrorLabel = styled.div<Pick<ITextFieldProps, 'darkMode'>>`\n margin-top: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return `var(--base-color-white)`;\n return `var(--base-color-errorstate)`;\n }};\n`;\n","import React, { useState, forwardRef } from 'react';\n\nimport { Container, InputWrapper, Input, TextLabel, ErrorLabel, ShowHideButton } from './TextField.style';\n\nimport { ITextFieldProps } from '../../../types/formTypes';\nimport { AltHeader, Overline } from '../Typography';\n\n/**\n * A text field component, that wraps around the native `<input />` element\n * and adds some extra states and information around it (i.e. a text and an error labels,\n * error state, show/hide button for password field).\n *\n * # Label\n * You can use this component just like you would use a regular `<input />` element,\n * just with the extra `label` prop, to set the label of the content. For example:\n * ```tsx\n * <TextField label=\"This is a label\" />\n * ```\n *\n * # Error state\n * An error label will be shown below the text input field if the `error` prop exists.\n * Also input will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Password mode\n * If type `password` provided this will be rendered with the `Show/Hide` button over the input field.\n * Clicking on that changes type to `text` and back to `password`.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n * ```tsx\n * <div>\n * <WhiteBackgroundContainer>\n * <TextField label=\"...\" />\n * </WhiteBackgroundContainer>\n * <BlackBackgroundContainer>\n * <TextField darkMode label=\"...\" />\n * </BlackBackgroundContainer>\n * <BlueBackgroundContainer>\n * <TextField darkMode label=\"...\" />\n * </BlueBackgroundContainer>\n * </div>\n * ```\n */\nconst TextFieldComponent = (\n { label, type = 'text', error, darkMode = false, width, ...inputProps }: ITextFieldProps,\n ref: React.Ref<HTMLInputElement>\n): React.ReactElement => {\n const [showPassword, setShowPassword] = useState(false);\n\n const isPasswordField = type === 'password';\n const showHideButtonText = showPassword ? 'Hide' : 'Show';\n const inputType = (() => {\n if (type !== 'password') return type;\n if (showPassword) return 'text';\n return 'password';\n })();\n\n const showHideClickHandler = () => {\n setShowPassword((prev) => !prev);\n };\n\n return (\n <Container>\n <label htmlFor={inputProps.id}>\n {!!label && (\n <TextLabel darkMode={darkMode} data-testid=\"text-field-text-label\">\n <AltHeader level={6}>{label}</AltHeader>\n </TextLabel>\n )}\n <InputWrapper width={width}>\n <Input\n isPasswordField={isPasswordField}\n type={inputType}\n error={error}\n darkMode={darkMode}\n data-testid=\"text-field-input\"\n ref={ref}\n id={inputProps.id}\n {...inputProps}\n />\n {isPasswordField && (\n <ShowHideButton type=\"button\" onClick={showHideClickHandler}>\n <Overline level={1}>{showHideButtonText}</Overline>\n </ShowHideButton>\n )}\n </InputWrapper>\n </label>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"text-field-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\nconst TextField = forwardRef<HTMLInputElement, ITextFieldProps>(TextFieldComponent);\n\nexport default TextField;\n","import styled, { css } from 'styled-components';\nimport { ITextFieldProps } from '../../../types/formTypes';\nimport { Theme } from '../../../types/utility';\n\nexport const TextFieldContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst textStyles = css`\n font-family: var(--font-family-body);\n font-weight: ${({ theme }) => (theme as Theme).fonts.desktop.weights.body[1]};\n font-size: ${({ theme }) => (theme as Theme).fonts.desktop.sizes.altHeaders[6]};\n line-height: ${({ theme }) => (theme as Theme).spacing[7]};\n`;\n\nexport const Input = styled.input<Pick<ITextFieldProps, 'error' | 'darkMode'>>`\n ${textStyles}\n\n width: ${({ width }) => (width ? `${width}px` : '196px')};\n height: 48px;\n padding: 0px 20px;\n\n border: 1px solid ${({ theme }) => (theme as Theme).colors.darkgrey};\n outline: none;\n\n ${({ error, theme }) => {\n if (!error) return;\n // eslint-disable-next-line consistent-return\n return `\n border: 1px solid ${(theme as Theme).colors.error};\n `;\n }}\n\n :disabled {\n background-color: ${({ theme }) => (theme as Theme).colors.lightgrey};\n border: 1px solid transparent;\n outline: none;\n }\n\n :focus {\n outline: ${({ darkMode, theme }) => {\n if (darkMode) return `4px solid ${(theme as Theme).colors.lemonChiffon}`;\n return `3px solid ${(theme as Theme).colors.lapisLazuli}`;\n }}};\n }\n`;\n\nexport const TextLabel = styled.p<Pick<ITextFieldProps, 'darkMode'>>`\n ${textStyles};\n\n color: ${({ darkMode, theme }) => (darkMode ? (theme as Theme).colors.white : (theme as Theme).colors.black)};\n`;\n\nexport const ErrorLabel = styled.p<Pick<ITextFieldProps, 'darkMode'>>`\n ${textStyles};\n\n color: ${({ darkMode, theme }) => (darkMode ? (theme as Theme).colors.white : (theme as Theme).colors.error)};\n`;\n","import styled from 'styled-components';\nimport { ITextLinkProps } from '../../../types/types';\n\nexport const TextLinkWrapper = styled.a<ITextLinkProps>`\n border-bottom: 1px solid;\n padding-bottom: ${({ iconName }) =>\n iconName ? 'calc(var(--text-link-underline-offset) - 4px)' : 'var(--text-link-underline-offset)'};\n font-family: var(--font-family-overline);\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n line-height: var(--line-height-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n text-transform: var(--text-transform-overline);\n color: var(--base-color-${({ color }) => color});\n width: fit-content;\n display: flex;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n`;\n\nexport const TextLinkIconWrapper = styled.span`\n width: var(--button-icon-width);\n height: var(--button-icon-height);\n margin-left: var(--button-icon-margin);\n`;\n","import React, { FunctionComponent } from 'react';\nimport { TextLinkWrapper, TextLinkIconWrapper } from './TextLink.style';\nimport { Icon } from '../Icons';\nimport { ITextLinkProps } from '../../../types/types';\n\nconst TextLink: FunctionComponent<ITextLinkProps> = ({ children, iconName, iconDirection, color, ...rest }) => {\n const truncatedString = (children as string).substring(0, 30);\n return (\n <TextLinkWrapper color={color} iconName={iconName} {...rest}>\n {truncatedString}\n {iconName ? (\n <TextLinkIconWrapper data-testid=\"text-link-icon\">\n <Icon iconName={iconName} direction={iconDirection} color={color} />\n </TextLinkIconWrapper>\n ) : null}\n </TextLinkWrapper>\n );\n};\n\nexport default TextLink;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { TickboxLabelProps, TickboxInputProps, TickboxCheckmarkProps } from '../../../types/tickbox';\n\ninterface ITickboxErrorProps {\n dark: boolean;\n}\n\nexport const TickboxError = styled.div<ITickboxErrorProps>`\n margin-block: 20px;\n color: var(--base-color-${({ dark }) => (dark ? 'white' : 'errorstate')});\n`;\n\nexport const TickboxLabel = styled.label<TickboxLabelProps>`\n display: block;\n width: fit-content;\n position: relative;\n padding-left: 32px;\n color: var(\n --base-color-${({ dark, disabled }) => {\n if (dark) return disabled ? 'lightgrey' : 'white';\n return disabled ? 'darkgrey' : 'black';\n }}\n );\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n div {\n margin-left: -32px;\n }\n\n @media ${devices.mobileAndTablet} {\n &:focus {\n outline: 0;\n }\n }\n`;\n\nexport const TickboxCheckmark = styled.span<TickboxCheckmarkProps>`\n position: absolute;\n top: 1px;\n left: 0;\n height: 20px;\n width: 20px;\n padding: 3px;\n box-sizing: border-box;\n border: 1px solid\n var(\n --base-color-${({ dark, disabled, error }) => {\n if (error) return 'errorstate';\n if (disabled) return 'midgrey';\n if (dark) return 'white';\n return 'black';\n }}\n );\n background-color: var(--base-color-${({ disabled }) => (disabled ? 'lightgrey' : 'white')});\n outline: ${({ error, dark }) => (dark && error ? '1px solid var(--base-color-errorstate)' : 'none')};\n\n svg {\n display: none;\n }\n\n @media ${devices.mobile} {\n top: 0;\n }\n`;\n\nexport const TickboxInput = styled.input<TickboxInputProps>`\n display: none;\n\n &:checked ~ ${TickboxCheckmark} {\n background-color: var(\n --base-color-${({ dark, whiteBox, disabled }) => {\n if (disabled) return 'lightgrey';\n if (dark || whiteBox) return 'white';\n return 'black';\n }}\n );\n & svg {\n display: block;\n path {\n fill: var(\n --base-color-${({ dark, whiteBox, disabled }) => {\n if (disabled) return 'midgrey';\n if (dark || whiteBox) return 'black';\n return 'white';\n }}\n );\n }\n }\n }\n`;\n","import styled from 'styled-components';\nimport { ITickbox2Props } from '../../../types/formTypes';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const Tickbox = styled.div<Pick<ITickbox2Props, 'error' | 'darkMode' | 'disabled' | 'blackBox'>>`\n position: absolute;\n top: 1px;\n left: 0;\n z-index: 1;\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: ${({ error, darkMode, disabled }) => {\n if (error !== undefined) return '1px solid var(--error-color-state)';\n if (disabled) return '1px solid var(--base-color-midgrey)';\n if (darkMode) return '1px solid var(--base-color-white)';\n return '1px solid var(--base-color-black)';\n }};\n background-color: ${({ disabled, darkMode }) => {\n if (disabled) return 'var(--base-color-lightgrey)';\n if (darkMode) return 'var(--base-color-white)';\n return ' var(--base-color-white)';\n }};\n color: ${({ disabled, blackBox, darkMode }) => {\n if (disabled) return 'var(--base-color-midgrey)';\n if (darkMode) return 'var(--base-color-black)';\n if (blackBox) return 'var(--base-color-white)';\n return ' var(--base-color-black)';\n }};\n`;\n\nexport const TickboxLabel = styled.label<Pick<ITickbox2Props, 'darkMode' | 'blackBox'>>`\n position: relative;\n padding-left: 32px;\n input[type='checkbox'] {\n width: 1px;\n height: 1px;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n z-index: 0;\n &:checked + ${Tickbox} {\n background-color: ${({ blackBox, darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n if (blackBox) return 'var(--base-color-black)';\n return ' var(--base-color-white)';\n }};\n }\n &:focus + ${Tickbox} {\n outline: ${({ darkMode }) => {\n if (darkMode) return '4px solid var(--base-color-lemonchiffon)';\n return '3px solid var(--base-color-lapislazuli)';\n }};\n }\n }\n`;\n\nexport const TickboxIcon = styled.div`\n display: none;\n color: inherit;\n svg {\n font-size: 12px;\n width: 1em;\n height: 1em;\n fill: currentColor;\n color: inherit;\n path {\n fill: currentColor;\n color: inherit;\n }\n }\n input[type='checkbox']:checked + ${Tickbox} & {\n display: block;\n }\n`;\n\nexport const TextLabel = styled.div<Pick<ITickbox2Props, 'darkMode' | 'disabled'>>`\n color: ${({ darkMode, disabled }) => {\n if (darkMode && disabled) return 'var(--base-color-lightgrey)';\n if (darkMode) return 'var(--base-color-white)';\n if (disabled) return 'var(--base-color-darkgrey)';\n return 'var(--base-color-black)';\n }};\n`;\n\nexport const ErrorLabel = styled.div<Pick<ITickbox2Props, 'darkMode'>>`\n margin-top: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n return 'var(--base-color-errorstate)';\n }};\n`;\n","import React, { forwardRef } from 'react';\n\nimport { Container, TickboxLabel, Tickbox, TickboxIcon, TextLabel, ErrorLabel } from './Tickbox2.style';\n\nimport { ITickbox2Props } from '../../../types/formTypes';\nimport { BodyText, AltHeader } from '../Typography';\nimport { Icon } from '../Icons';\n\n/**\n * A Tickbox component, that wraps around the native `<input type=\"checkbox\"/>` element\n * and adds some extra styling, states and information around it (i.e. an error label,\n * error state).\n *\n * # Error state\n * An error label will be shown below the tickbox if the `error` prop exists.\n * Also tickbox will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n *\n * # Black box mode\n * If `blackBox` prop is true checked state will be styled as black box with white tick icon.\n * This style was used before as a default. Not preferred in new components.\n * This will be ignored if `darkMode` is true.\n */\nconst Tickbox2Component = (\n { children, disabled = false, error, darkMode = false, blackBox = false, ...inputProps }: ITickbox2Props,\n ref: React.Ref<HTMLInputElement>\n): React.ReactElement => {\n return (\n <Container>\n <TickboxLabel darkMode={darkMode} blackBox={blackBox}>\n <input {...inputProps} disabled={disabled} type=\"checkbox\" ref={ref} data-testid=\"tickbox-input\" />\n <Tickbox error={error} darkMode={darkMode} disabled={disabled} blackBox={blackBox}>\n <TickboxIcon>\n <Icon iconName=\"Tick\" />\n </TickboxIcon>\n </Tickbox>\n <TextLabel disabled={disabled} darkMode={darkMode} data-testid=\"tickbox-content\">\n <BodyText level={1}>{children}</BodyText>\n </TextLabel>\n </TickboxLabel>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"tickbox-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\nconst Tickbox2 = forwardRef<HTMLInputElement, ITickbox2Props>(Tickbox2Component);\n\nexport default Tickbox2;\n","import styled from 'styled-components';\nimport { ITimerProps } from '../../../types/timer';\nimport { devices } from '../../../styles/viewports';\n\nexport const TimerWrapper = styled.div<Pick<ITimerProps, 'color'>>`\n color: var(--base-color-${({ color }) => color});\n`;\n\nexport const Line = styled.div<Pick<ITimerProps, 'color'>>`\n height: 1px;\n background-color: var(--base-color-${({ color }) => color});\n margin-top: 32px;\n\n @media ${devices.mobileAndTablet} {\n margin-top: 20px;\n }\n`;\n\nexport const TitleWrapper = styled.div`\n margin-bottom: 16px;\n\n @media ${devices.mobileAndTablet} {\n margin-bottom: 8px;\n }\n`;\n\nexport const ValuesWrapper = styled.div`\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n display: flex;\n\n @media ${devices.tablet} {\n font-size: var(--font-size-header-5);\n }\n`;\n\nexport const TimerLabel = styled.div`\n font-family: var(--font-family-overline);\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n line-height: var(--line-height-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n text-transform: var(--text-transform-overline);\n margin-top: 4px;\n`;\n\nexport const TimerValueSeparator = styled.div`\n margin: 0 20px;\n\n @media ${devices.tablet} {\n margin: 0 12px;\n }\n\n @media ${devices.mobile} {\n margin: 0 12px;\n }\n`;\n\nexport const TimerValueWrapper = styled.div``;\n\nexport const TimerValue = styled.div``;\n","import React, { FunctionComponent } from 'react';\nimport moment from 'moment';\nimport {\n TimerValueWrapper,\n TimerValue,\n TimerLabel,\n TimerValueSeparator,\n TimerWrapper,\n ValuesWrapper,\n Line,\n TitleWrapper,\n} from './Timer.style';\nimport { ITimerProps } from '../../../types/timer';\nimport { Colors } from '../../../types/types';\nimport { AltHeader } from '../Typography';\n\nconst Timer: FunctionComponent<ITimerProps> = ({\n endDate,\n title,\n endDateHandler,\n bottomLine = true,\n color = Colors.Black,\n}) => {\n const [seconds, setSeconds] = React.useState('00');\n const [minutes, setMinutes] = React.useState('00');\n const [hours, setHours] = React.useState('00');\n const [days, setDays] = React.useState('00');\n const [isEndDateReached, setIsEndDateReached] = React.useState(false);\n\n const renderTimerValue = (value: string, label: string, separator: boolean = true): React.ReactElement => (\n <>\n <TimerValueWrapper>\n <TimerValue className=\"harmonic-timer-value\">{value}</TimerValue>\n <TimerLabel className=\"harmonic-timer-label\">{label}</TimerLabel>\n </TimerValueWrapper>\n {separator && <TimerValueSeparator>:</TimerValueSeparator>}\n </>\n );\n\n React.useEffect(() => {\n if (isEndDateReached) return undefined;\n\n // We use this to set values for the timer immediately\n const setIntervalAndExecute = (fn: VoidFunction, delay: number) => {\n fn();\n return setInterval(fn, delay);\n };\n\n const updateValues = () => {\n const futureDate = moment(endDate);\n const nowDate = moment();\n const differenceInMilliseconds = futureDate.valueOf() - nowDate.valueOf();\n const difference = moment(differenceInMilliseconds).utc();\n if (differenceInMilliseconds < 0) {\n setIsEndDateReached(true);\n if (endDateHandler) endDateHandler();\n } else {\n const fullDaysLeft = Math.floor(futureDate.diff(nowDate, 'days', true));\n const daysDiff = fullDaysLeft < 10 ? `0${fullDaysLeft}` : fullDaysLeft.toString();\n const hoursDiff = difference.format('HH');\n const minutesDiff = difference.format('mm');\n const secondsDiff = difference.format('ss');\n\n setDays(daysDiff);\n setHours(hoursDiff);\n setMinutes(minutesDiff);\n setSeconds(secondsDiff);\n }\n };\n\n const interval = setIntervalAndExecute(updateValues, 1000);\n\n return () => {\n clearInterval(interval);\n };\n });\n\n const hideTimer = moment(endDate).isBefore(moment());\n\n if (hideTimer) return null;\n\n return (\n <TimerWrapper color={color}>\n {title && (\n <TitleWrapper className=\"harmonic-timer-title-wrapper\">\n <AltHeader level={5}>{title}</AltHeader>\n </TitleWrapper>\n )}\n <ValuesWrapper className=\"harmonic-timer-values-wrapper\">\n {renderTimerValue(days, 'Days')}\n {renderTimerValue(hours, 'Hrs')}\n {renderTimerValue(minutes, 'Mins')}\n {renderTimerValue(seconds, 'Secs', false)}\n </ValuesWrapper>\n {bottomLine && <Line className=\"harmonic-timer-bottom-line\" data-testid=\"timer-bottom-line\" color={color} />}\n </TimerWrapper>\n );\n};\n\nexport default Timer;\n","import styled from 'styled-components';\n\nexport const TypeTagsContainer = styled.ul`\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n & li {\n display: inline-block;\n margin: 0;\n }\n\n & li:before {\n content: '—';\n margin: 0 0.5em;\n }\n\n & li:first-child:before {\n display: none;\n }\n`;\n","import React from 'react';\nimport { TypeTagsContainer } from './TypeTags.style';\nimport { ITypeTagsProps } from '../../../types/types';\nimport { Overline } from '../Typography';\n\nconst TypeTags = ({ list }: ITypeTagsProps) => {\n return (\n <TypeTagsContainer>\n {list.map((t) => (\n <Overline level={1} tag=\"li\" key={t}>\n {t}\n </Overline>\n ))}\n </TypeTagsContainer>\n );\n};\n\nexport default TypeTags;\n","import styled, { css } from 'styled-components';\n\ntype WithDeviceVolume = {\n volumeHidden?: boolean;\n};\n\nconst VideoPlayButton = styled.button`\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background-color: #fff;\n border: none;\n padding: 12px;\n cursor: pointer;\n`;\n\nconst VideoFullscreenButton = styled.button`\n width: 56px;\n height: 36px;\n background-color: rgb(26, 26, 26, 0.6);\n border-radius: 5px;\n padding: 5px 14px;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n`;\n\nconst VideoControlsWrapper = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n`;\n\nconst VideoControlsInnerWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 40px 17px 30px;\n`;\n\nconst LeftWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst VideoVolume = styled.input`\n width: 100px;\n margin-left: 24px;\n`;\n\nconst VideoMute = styled.button`\n width: 17px;\n height: 17px;\n background: none;\n border: none;\n padding: 0;\n svg {\n width: 100%;\n height: 100%;\n }\n cursor: pointer;\n`;\n\nconst thumbStyles = css`\n -webkit-appearance: none;\n appearance: none;\n border: none;\n height: 8px;\n width: 8px;\n border-radius: 50%;\n background: #ffffff;\n border: none;\n transform: translateY(-25%);\n`;\n\nconst trackStyles = css`\n width: 100%;\n cursor: pointer;\n height: 4px;\n background: rgb(241, 241, 241, 0.5);\n border-radius: 1.3px;\n border: none;\n`;\n\nconst VolumeControlsWrapper = styled.div<WithDeviceVolume>`\n display: flex;\n margin: 0 12px;\n padding: 0;\n background-color: rgb(26, 26, 26, 0.6);\n border-radius: 5px;\n height: 36px;\n width: ${({ volumeHidden }) => (volumeHidden ? '40px' : '100px')};\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n /* Range slider overrides */\n input[type='range' i] {\n -webkit-appearance: none;\n appearance: none;\n width: 42px;\n margin: 0;\n margin-left: 7px;\n background: transparent; /* Otherwise white in Chrome */\n\n ::-webkit-slider-runnable-track {\n ${trackStyles}\n }\n ::-moz-range-track {\n ${trackStyles}\n }\n ::-ms-track {\n ${trackStyles}\n }\n ::-ms-fill-lower {\n ${trackStyles}\n }\n ::-ms-fill-upper {\n ${trackStyles}\n }\n\n ::-webkit-slider-thumb {\n ${thumbStyles}\n }\n ::-moz-range-thumb {\n ${thumbStyles}\n }\n ::-ms-thumb {\n ${thumbStyles}\n }\n }\n`;\n\nconst StoryBookWrapper = styled.div`\n position: relative;\n width: 100%;\n height: 70vh;\n background: #c8102e;\n video {\n min-width: 100%;\n min-height: 100%;\n object-fit: cover;\n }\n`;\n\nexport {\n VideoPlayButton,\n VideoControlsWrapper,\n VideoVolume,\n VideoMute,\n VolumeControlsWrapper,\n StoryBookWrapper,\n VideoFullscreenButton,\n LeftWrapper,\n VideoControlsInnerWrapper,\n};\n","import React, { ChangeEvent, FunctionComponent, useCallback, useEffect, useState } from 'react';\nimport { Icon } from '../Icons';\nimport {\n VideoControlsWrapper,\n VolumeControlsWrapper,\n VideoMute,\n VideoVolume,\n VideoPlayButton,\n VideoFullscreenButton,\n LeftWrapper,\n VideoControlsInnerWrapper,\n} from './VideoControls.style';\nimport { IVideoControlsProps } from '../../../types/types';\n\nconst FullscreenButton = ({\n isFullscreen,\n handleMinimise,\n handleFullscreen,\n}: {\n isFullscreen: boolean;\n handleMinimise: () => void;\n handleFullscreen: () => void;\n}) => {\n return (\n <VideoFullscreenButton\n id=\"fullscreen\"\n onClick={isFullscreen ? handleMinimise : handleFullscreen}\n className=\"video-fullscreen-button\"\n data-testid=\"video-fullscreen-button\"\n aria-label={isFullscreen ? 'Minimise video' : 'Fullscreen video'}\n >\n <Icon data-testid=\"fullscreen-icon\" iconName={isFullscreen ? 'Minimise' : 'FullScreen'} color=\"white\" />\n </VideoFullscreenButton>\n );\n};\n\nconst VideoControls: FunctionComponent<IVideoControlsProps> = ({\n videoElementId,\n videoContainerId,\n muted = true,\n autoPlay = false,\n soundControl = false,\n fullScreenOption = false,\n loop = false,\n}) => {\n const [playing, setPlaying] = useState(autoPlay && muted); // browsers won't autoplay an unmuted video.\n const [isMuted, setIsMuted] = useState(muted);\n const [volume, setVolume] = useState(50);\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n const getVideoElement = (): HTMLMediaElement | null => document.querySelector(`#${videoElementId}`);\n\n useEffect(() => {\n const video = getVideoElement();\n if (video) {\n video.loop = loop;\n }\n }, [loop]);\n\n useEffect(() => {\n const handleFullscreenChange = () => {\n setIsFullscreen(!!document.fullscreenElement);\n };\n\n document.addEventListener('fullscreenchange', handleFullscreenChange);\n\n return () => {\n document.removeEventListener('fullscreenchange', handleFullscreenChange);\n };\n }, []);\n\n const handleFullscreen = useCallback(async () => {\n const videoContainer = document.querySelector(`#${videoContainerId}`);\n\n if (!videoContainer?.requestFullscreen) return;\n await videoContainer.requestFullscreen();\n\n setIsFullscreen(true);\n }, []);\n\n const handleMinimise = useCallback(async () => {\n if (!document.fullscreenElement) return;\n await document.exitFullscreen();\n\n setIsFullscreen(false);\n }, []);\n\n const handlePlay = useCallback(() => {\n const video = getVideoElement();\n if (!video) return;\n if (playing) {\n video.pause();\n setPlaying(false);\n } else {\n video?.play();\n setPlaying(true);\n }\n }, [playing]);\n\n const handleMute = useCallback(() => {\n const video = getVideoElement();\n if (video) {\n if (isMuted) {\n video.muted = false;\n setIsMuted(false);\n } else {\n video.muted = true;\n setIsMuted(true);\n }\n }\n }, [isMuted]);\n\n const handleVolume = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const video = getVideoElement();\n const newVolume = Number(e.target.value);\n if (video) {\n video.volume = newVolume / 100;\n if (newVolume === 0) {\n video.muted = true;\n setIsMuted(true);\n } else {\n video.muted = false;\n setIsMuted(false);\n }\n setVolume(newVolume);\n }\n },\n [isMuted]\n );\n\n return (\n <VideoControlsWrapper className=\"video-controls-container\">\n <VideoControlsInnerWrapper>\n <LeftWrapper>\n <VideoPlayButton\n id=\"play\"\n onClick={handlePlay}\n className=\"video-play-button\"\n data-testid=\"video-play-button\"\n aria-label={!playing ? 'Play' : 'Pause'}\n >\n <Icon iconName={!playing ? 'Play' : 'Pause'} />\n </VideoPlayButton>\n\n <VolumeControlsWrapper volumeHidden={!soundControl}>\n <VideoMute\n id=\"mute\"\n className=\"video-mute-button\"\n data-testid=\"video-mute-button\"\n onClick={handleMute}\n aria-label={muted ? 'Unmute' : 'Mute'}\n >\n <Icon data-testid=\"mute-icon\" iconName={isMuted ? 'Muted' : 'Volume'} color=\"white\" />\n </VideoMute>\n {soundControl && (\n <VideoVolume\n id=\"vol-control\"\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"1\"\n onChange={handleVolume}\n value={isMuted ? 0 : volume}\n aria-label={`Volume - ${volume}%`}\n />\n )}\n </VolumeControlsWrapper>\n </LeftWrapper>\n {fullScreenOption && (\n <FullscreenButton\n isFullscreen={isFullscreen}\n handleFullscreen={handleFullscreen}\n handleMinimise={handleMinimise}\n />\n )}\n </VideoControlsInnerWrapper>\n </VideoControlsWrapper>\n );\n};\n\nexport default VideoControls;\n","import styled from 'styled-components';\nimport { IStepperProps } from '../../../types/formTypes';\n\nexport const StepperWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: left;\n align-items: left;\n`;\n\nexport const StepperError = styled.div<Pick<IStepperProps, 'darkMode'>>`\n color: var(--base-color-${({ darkMode }) => (darkMode ? 'white' : 'errorstate')});\n margin-block: 15px 0;\n\n * {\n margin: 0;\n }\n`;\n\nexport const StepperBox = styled.div<Pick<IStepperProps, 'error' | 'darkMode' | 'disabled'>>`\n width: 154px;\n height: 48px;\n display: flex;\n flex-direction: row;\n align-items: center;\n border: 1px solid\n var(\n --base-color-${({ darkMode, disabled, error }) => {\n if (error) return 'errorstate';\n if (disabled) return 'midgrey';\n if (darkMode) return 'darkgrey';\n return 'darkgrey';\n }}\n );\n background-color: var(--base-color-${({ disabled }) => (disabled ? 'lightgrey' : 'white')});\n ${({ error, darkMode }) => (error && darkMode ? 'outline: 1px solid var(--base-color-errorstate);' : '')};\n\n * {\n color: var(--base-color-${({ disabled }) => (disabled ? 'midgrey' : 'black')});\n word-break: unset;\n user-select: none;\n }\n\n path {\n fill: var(--base-color-${({ disabled }) => (disabled ? 'midgrey' : 'black')}) !important;\n }\n\n & > * {\n width: 51px;\n }\n`;\n\nexport const StepperValue = styled.input<Pick<IStepperProps, 'disabled'>>`\n width: 51px;\n border: 0;\n text-align: center;\n font-family: var(--font-family-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n background-color: transparent;\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'text')};\n`;\n\nexport const StepperButton = styled.div<Pick<IStepperProps, 'disabled'>>`\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n\n span {\n display: flex;\n justify-content: center;\n }\n\n svg {\n width: 40%;\n height: auto;\n }\n`;\n","import styled from 'styled-components';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { devices } from '../../../styles/viewports';\nimport zIndexes from '../../../styles/zIndexes';\nimport { INavigationWrapperProps } from '../../../types/navigation';\n\nexport const NavigationWrapper = styled.div<INavigationWrapperProps>`\n @media ${devices.mobileAndTablet} {\n ${({ isMenuOpen }) =>\n isMenuOpen &&\n `\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: ${zIndexes.overlay};\n background-color: var(--base-color-white);\n overflow-y: auto;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n `}\n }\n`;\n\nexport const FullScreenContainer = styled.div`\n background-color: var(--base-color-black);\n width: 100vw;\n position: absolute;\n z-index: ${zIndexes.searchOverlay};\n opacity: 0.4;\n`;\n\nexport const NavigationGrid = styled(Grid)`\n position: relative;\n background-color: var(--base-color-white);\n height: 140px;\n z-index: ${zIndexes.navigation};\n\n @media ${devices.mobile} {\n height: 80px;\n }\n`;\n\nexport const SearchBackground = styled.div<{ visible?: boolean }>`\n visibility: ${({ visible }) => (visible ? 'visible' : 'hidden')};\n background-color: var(--base-color-white);\n height: 100px;\n border-top: 1px solid var(--base-color-light-grey);\n width: 100%;\n position: absolute;\n top: 140px;\n z-index: ${zIndexes.search};\n\n @media ${devices.mobile} {\n height: 100%;\n top: 80px;\n }\n`;\n\nexport const GridItemSearch = styled(GridItem)<{ visible?: boolean }>`\n visibility: ${({ visible }) => (visible ? 'visible' : 'hidden')};\n background-color: var(--base-color-white);\n border-top: 1px solid var(--base-color-light-grey);\n width: 100%;\n position: absolute;\n top: 140px;\n z-index: ${zIndexes.search};\n height: 100px;\n\n @media ${devices.mobile} {\n height: 100%;\n top: 80px;\n }\n`;\n\nexport const NavigationGridMobile = styled(Grid)`\n display: none;\n\n @media ${devices.mobileAndTablet} {\n display: grid;\n background-color: var(--base-color-white);\n padding-top: ${({ theme }) => theme.spacing[12]};\n padding-bottom: var(--navigation-large-margin);\n }\n`;\n\nexport const LogoContainer = styled.div`\n height: 140px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n &&& .logoImg {\n height: 96px;\n width: 66px;\n }\n\n @media ${devices.mobile} {\n height: 80px;\n\n &&& .logoImg {\n width: 100%;\n height: 64px;\n }\n }\n`;\n\nexport const MenuContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 140px;\n\n @media ${devices.mobileAndTablet} {\n flex-direction: row;\n height: 80px;\n justify-content: flex-end;\n }\n`;\n\nexport const NavContainer = styled.div`\n height: 40px;\n margin-top: auto;\n\n @media ${devices.mobileAndTablet} {\n background-color: var(--base-color-white);\n height: auto;\n margin-top: 0px;\n }\n`;\n\nexport const NavContainerGridItem = styled(GridItem)`\n @media ${devices.desktop} {\n grid-column: 3 / span 14;\n }\n`;\n\nexport const NavTopContainer = styled.div`\n height: 26px;\n right: 50px;\n top: 20px;\n position: absolute;\n\n @media ${devices.mobileAndTablet} {\n margin-top: 1px;\n position: inherit;\n }\n`;\n","import styled from 'styled-components';\n\nexport const LogoWrapper = styled.div`\n width: 66px;\n height: auto;\n cursor: pointer;\n & img {\n width: auto;\n height: 100%;\n }\n`;\n","import React from 'react';\nimport { LogoWrapper } from './Logo.style';\nimport { ILogoProps } from '../../../types/types';\nimport { devices } from '../../../styles/viewports';\n\nconst Logo = ({\n id = 'Logo',\n dataRoh = 'imgLogo',\n urlLink = 'https://www.rbo.org.uk/',\n desktopImage,\n devicesImage,\n title = 'Royal Ballet and Opera',\n altText = 'Royal Ballet and Opera Homepage',\n}: ILogoProps) => {\n return (\n <a data-roh={dataRoh} rel=\"noopener noreferrer\" href={urlLink} title={title}>\n <LogoWrapper id={id} className=\"logoImg\">\n <picture>\n <source srcSet={devicesImage || desktopImage} media={devices.mobileAndTablet} />\n <img src={desktopImage} alt={altText} />\n </picture>\n </LogoWrapper>\n </a>\n );\n};\n\nexport default Logo;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const NavTopContainer = styled.div`\n display: flex;\n flex-direction: row;\n column-gap: 16px;\n justify-content: flex-end;\n height: 26px;\n\n @media ${devices.mobile} {\n column-gap: 8px;\n }\n`;\n","import styled from 'styled-components';\nimport { IBasketProps } from '../../../types/navigation';\n\nexport const BasketContainer = styled.div<IBasketProps>`\n display: inline-flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n border-bottom: 1px solid var(--base-color-transparent);\n\n ${({ selected, colorPrimary }) => {\n if (selected) {\n return `\n border-bottom: 1px solid var(--base-color-${colorPrimary});\n && a {\n color: var(--base-color-${colorPrimary});\n }\n && svg path {\n fill: var(--base-color-${colorPrimary});\n }\n `;\n }\n return '';\n }}\n\n :hover {\n border-bottom: 1px solid var(--base-color-${({ colorPrimary }) => colorPrimary});\n && a {\n color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n && svg path {\n fill: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n\n ${({ isActive, colorPrimary }) => {\n if (isActive) {\n return `\n && a {\n color: var(--base-color-${colorPrimary});\n }\n && svg path {\n fill: var(--base-color-${colorPrimary});\n }\n `;\n }\n return '';\n }}\n`;\n\nexport const SvgContainer = styled.div`\n position: relative;\n\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n`;\n\nexport const NumContainer = styled.div`\n display: flex;\n justify-content: center;\n width: 12px;\n height: 12px;\n position: absolute;\n top: 8px;\n margin-left: 6px;\n\n & .basket-num {\n color: white;\n font-size: 10px;\n font-family: var(--font-family-navigation);\n }\n`;\n\nexport const BasketText = styled.a`\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n color: var(--base-color-black);\n margin-left: 6px;\n text-decoration: none;\n`;\n","export const getSecondsUntil = (expiryUnixTimestamp: number | undefined): number => {\n if (!expiryUnixTimestamp) return 0;\n const now = Date.now();\n const expiry = new Date(expiryUnixTimestamp * 1000);\n const diff = Math.round((expiry.getTime() - now) / 1000);\n return diff > 0 ? diff : 0;\n};\n\nexport const formatTime = (seconds: number): string => {\n if (seconds > 60) {\n return `${Math.ceil(seconds / 60)} mins`;\n }\n return `${seconds} sec${seconds === 1 ? '' : 's'}`;\n};\n\nexport const checkTimeRed = (seconds: number): boolean => {\n if (seconds <= 0) {\n return false;\n }\n return seconds / 60 <= 5;\n};\n","import React from 'react';\nimport { BasketContainer, SvgContainer, NumContainer, BasketText } from './Basket.style';\nimport { IBasketProps } from '../../../types/navigation';\nimport { Icon } from '../../atoms/Icons';\nimport { useBasket } from './hooks';\n\nconst Basket = ({\n text,\n expiryTime,\n link,\n selected = false,\n numItems = 0,\n numVirtualItems = 0,\n onClick,\n colorPrimary = 'primary',\n}: IBasketProps) => {\n const onClickHandler = () => {\n if (onClick) {\n onClick(link || '/basket');\n }\n };\n\n const { basketText, basketTotalNumItems, basketIsActive, basketIsEmpty } = useBasket(\n expiryTime,\n numItems,\n numVirtualItems\n );\n\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onClickHandler();\n }\n };\n\n return (\n <BasketContainer\n selected={selected}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n colorPrimary={colorPrimary}\n isActive={basketIsActive}\n tabIndex={0}\n >\n <SvgContainer>\n {basketIsEmpty ? (\n <Icon iconName=\"Basket\" ariaLabel=\"basket icon\" />\n ) : (\n <>\n <Icon iconName=\"BasketFull\" />\n <NumContainer>\n <span className=\"basket-num\">{basketTotalNumItems}</span>\n </NumContainer>\n </>\n )}\n </SvgContainer>\n <div>\n {!basketIsEmpty ? <BasketText data-testid=\"baskettext\">{expiryTime ? basketText : text}</BasketText> : ''}\n </div>\n </BasketContainer>\n );\n};\n\nexport default Basket;\n","import { useState, useEffect } from 'react';\nimport { getSecondsUntil, formatTime, checkTimeRed } from './helpers';\n\ninterface BasketProps {\n basketText?: string;\n basketTotalNumItems: number;\n basketIsActive?: boolean;\n basketIsEmpty: boolean;\n}\n\nexport const useBasket = (expiryUnixTimestamp?: number, numItems = 0, numVirtualItems = 0): BasketProps => {\n const [basketText, setBasketText] = useState<string | undefined>();\n const [basketIsActive, setBasketIsActive] = useState<boolean>();\n const [basketTotalNumItems, setBasketTotalNumItems] = useState<number>(0);\n const [seconds, setSeconds] = useState<number>(getSecondsUntil(expiryUnixTimestamp));\n const [timer, setTimer] = useState<NodeJS.Timeout | undefined>();\n const [basketIsEmpty, setBasketIsEmpty] = useState<boolean>(true);\n\n useEffect(() => {\n if (numItems > 0 || numVirtualItems > 0) {\n setBasketIsEmpty(false);\n } else {\n setBasketIsEmpty(true);\n }\n setBasketTotalNumItems(numItems + numVirtualItems);\n }, [numItems, numVirtualItems]);\n\n useEffect(() => {\n if (!expiryUnixTimestamp) return;\n setSeconds(getSecondsUntil(expiryUnixTimestamp));\n }, [expiryUnixTimestamp]);\n\n useEffect(() => {\n if (timer) {\n clearInterval(timer); // clears the old timer before setting a new one\n }\n\n if (!expiryUnixTimestamp || numItems === 0) return () => undefined;\n const interval = setInterval(() => {\n setSeconds(getSecondsUntil(expiryUnixTimestamp));\n }, 1000);\n setTimer(interval);\n\n return () => clearInterval(interval);\n }, [expiryUnixTimestamp]);\n\n useEffect(() => {\n if (!timer) return;\n if (seconds > 0) {\n setBasketText(formatTime(seconds));\n setBasketIsActive(checkTimeRed(seconds));\n } else {\n clearInterval(timer);\n setBasketTotalNumItems(numVirtualItems);\n setBasketText('');\n setBasketIsActive(false);\n setBasketIsEmpty(true);\n }\n }, [seconds, timer]);\n\n return { basketText, basketTotalNumItems, basketIsActive, basketIsEmpty };\n};\n","import styled from 'styled-components';\nimport { ISearchProps } from '../../../types/navigation';\n\nexport const SearchContainer = styled.div<ISearchProps>`\n display: inline-flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n border-bottom: 1px solid var(--base-color-transparent);\n ${({ selected, colorPrimary }) => {\n if (selected) {\n return `\n border-bottom: 1px solid var(--base-color-${colorPrimary});\n && svg path {\n fill: var(--base-color-${colorPrimary});\n }\n `;\n }\n return '';\n }}\n\n :hover {\n border-bottom: 1px solid var(--base-color-${({ colorPrimary }) => colorPrimary});\n && svg path {\n fill: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n`;\n\nexport const SvgContainer = styled.div`\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n`;\n","import React from 'react';\nimport { SearchContainer, SvgContainer } from './Search.style';\nimport { ISearchProps } from '../../../types/navigation';\nimport SvgIcon from '../Icons/Icons';\n\nconst Search = ({ selected = false, onClick, colorPrimary = 'primary' }: ISearchProps) => {\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onClick?.();\n }\n };\n return (\n <SearchContainer\n selected={selected}\n onClick={onClick}\n onKeyDown={onKeyDownHandler}\n data-testid=\"search-icon\"\n colorPrimary={colorPrimary}\n tabIndex={0}\n >\n <SvgContainer>\n <SvgIcon iconName=\"Search\" />\n </SvgContainer>\n </SearchContainer>\n );\n};\n\nexport default Search;\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport React, { useEffect, useState, useRef } from 'react';\nimport { TabContainer, OptionsContainer, OptionItem } from './Dropdown.style';\nimport { IDropdownProps, INodeProps } from '../../../types/types';\nimport Tab from '../Tab';\n\nconst Dropdown = ({\n title,\n titleLink,\n selected = false,\n options = [],\n onChange,\n iconName = 'DropdownArrow',\n isMobileBehaviour = false,\n withOptionsInMobile = true,\n withIcon = 'right',\n colorPrimary = 'primary',\n}: IDropdownProps) => {\n const node: INodeProps = useRef();\n const [open, setOpen] = useState(false);\n const [lockOpen, setLockOpen] = useState(false);\n const [titleSelected, setTitleSelected] = useState(selected);\n let timerCloseOptions: NodeJS.Timeout;\n\n const handleClick = (e: MouseEvent) => {\n if (node.current.contains(e.target)) {\n return;\n }\n\n if (isMobileBehaviour) {\n if (timerCloseOptions) {\n clearTimeout(timerCloseOptions);\n }\n\n timerCloseOptions = setTimeout(() => {\n setOpen(false);\n setLockOpen(false);\n setTitleSelected(false);\n }, 200);\n } else {\n setOpen(false);\n setLockOpen(false);\n setTitleSelected(false);\n }\n };\n\n const handleChange = (optionLink: string) => {\n if (onChange) {\n onChange(optionLink);\n }\n\n setOpen(false);\n setLockOpen(false);\n setTitleSelected(false);\n };\n\n const withOptions = () => options.length > 0;\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClick);\n\n return () => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, []);\n\n const handleClickTitle = (value: string) => {\n if (withOptions()) {\n setLockOpen(true);\n setOpen(true);\n setTitleSelected(titleSelected);\n }\n\n if (onChange) {\n onChange(value);\n }\n };\n\n const onMouseHandler = (value: boolean) => {\n if (withOptions() && !lockOpen) {\n setOpen(value);\n setTitleSelected(value);\n }\n };\n\n const clickMobileHandler = () => {\n if (withOptions()) {\n setOpen(!open);\n setTitleSelected(!open);\n }\n };\n\n const onFocusTitleHandler = () => {\n if (withOptions()) {\n setLockOpen(true);\n setOpen(true);\n setTitleSelected(titleSelected);\n }\n };\n\n const onResetHandler = () => {\n setOpen(false);\n setLockOpen(false);\n setTitleSelected(false);\n };\n\n const onBlurHandler = (i: number) => {\n if (i === options.length - 1) {\n onResetHandler();\n }\n };\n\n const onKeyDownHandler = (e: React.KeyboardEvent, link: string) => {\n if (e.key === 'Enter') {\n handleChange(link);\n } else if (e.key === 'Escape') {\n onResetHandler();\n }\n };\n\n const renderTab = () => {\n return (\n <>\n <Tab\n title={title}\n titleLink={titleLink}\n selected={titleSelected}\n iconName={iconName}\n withIcon={withIcon}\n withTextInMobile={withOptionsInMobile}\n onClick={(value) => handleClickTitle(value)}\n onFocus={onFocusTitleHandler}\n onReset={onResetHandler}\n colorPrimary={colorPrimary}\n />\n {withOptions() && open && (\n <OptionsContainer withOptionsInMobile={withOptionsInMobile} withIcon={withIcon} colorPrimary={colorPrimary}>\n {options.map((optionItem, index) => (\n <OptionItem\n key={`key-${index}-${optionItem.option}`}\n onClick={() => handleChange(optionItem.optionLink)}\n onBlur={() => onBlurHandler(index)}\n onKeyDown={(e) => onKeyDownHandler(e, optionItem.optionLink)}\n colorPrimary={colorPrimary}\n tabIndex={0}\n href={optionItem.optionLink}\n >\n {optionItem.option}\n </OptionItem>\n ))}\n </OptionsContainer>\n )}\n </>\n );\n };\n\n return (\n <>\n {isMobileBehaviour ? (\n <TabContainer ref={node} onClick={() => clickMobileHandler()}>\n {renderTab()}\n </TabContainer>\n ) : (\n <TabContainer ref={node} onMouseEnter={() => onMouseHandler(true)} onMouseLeave={() => onMouseHandler(false)}>\n {renderTab()}\n </TabContainer>\n )}\n </>\n );\n};\n\nexport default Dropdown;\n","import React from 'react';\nimport { IAccountProps } from '../../../types/navigation';\nimport Dropdown from '../Dropdown';\n\nconst Account = ({ title, options = [], onClick, iconName, titleLink, colorPrimary = 'primary' }: IAccountProps) => {\n const onChangeHandler = (link: string) => {\n if (onClick) {\n onClick(link);\n }\n };\n\n return (\n <Dropdown\n titleLink={titleLink}\n title={title}\n options={options}\n onChange={onChangeHandler}\n iconName={iconName}\n withOptionsInMobile={false}\n withIcon=\"left\"\n colorPrimary={colorPrimary}\n />\n );\n};\n\nexport default Account;\n","import React from 'react';\nimport { NavTopContainer } from './NavTop.style';\nimport { INavTopProps } from '../../../types/navigation';\nimport Basket from '../Basket';\nimport Search from '../../atoms/Search';\nimport Account from '../../atoms/Account';\n\nconst NavTop = ({\n accountText,\n accountLink,\n accountIcon,\n accountOptions,\n onLink,\n basketText,\n basketExpiryUnixTimestamp,\n basketLink,\n basketNumItems,\n basketNumVirtualItems,\n onClickSearch,\n isShowSearch = false,\n colorPrimary = 'primary',\n}: INavTopProps) => {\n return (\n <NavTopContainer>\n <Search onClick={onClickSearch} selected={isShowSearch} colorPrimary={colorPrimary} />\n <Basket\n link={basketLink}\n text={basketText}\n expiryTime={basketExpiryUnixTimestamp}\n numItems={basketNumItems}\n numVirtualItems={basketNumVirtualItems}\n onClick={onLink}\n colorPrimary={colorPrimary}\n />\n <Account\n title={accountText}\n titleLink={accountLink}\n options={accountOptions}\n iconName={accountIcon}\n onClick={onLink}\n colorPrimary={colorPrimary}\n />\n </NavTopContainer>\n );\n};\n\nexport default NavTop;\n","import styled from 'styled-components';\nimport { ITabsProps } from '../../../types/types';\nimport { devices } from '../../../styles/viewports';\n\nexport const TabsContainer = styled.div`\n display: inline-flex;\n flex-direction: row;\n column-gap: 32px;\n`;\n\nexport const ItemsContainer = styled.div<ITabsProps>`\n display: inline-flex;\n flex-direction: row;\n column-gap: 32px;\n\n @media ${devices.desktop} {\n column-gap: 15px;\n }\n\n @media ${devices.desktop}, ${devices.largeDesktop} {\n div:last-child > div {\n right: 1px;\n }\n }\n\n @media ${devices.mobileAndTablet} {\n ${(props) => {\n if (props.showMenu) {\n return `\n display: flex;\n flex-direction: column;\n row-gap: 32px;\n `;\n }\n return `display: none;`;\n }}\n }\n`;\n\nexport const MenuContainer = styled.div<ITabsProps>`\n display: none;\n width: 60px;\n\n & a {\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-black);\n text-decoration: none;\n cursor: pointer;\n\n :hover {\n color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n\n :hover {\n && svg path {\n fill: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n\n @media ${devices.mobileAndTablet} {\n display: block;\n\n svg {\n width: 24px;\n height: 24px;\n margin-left: 40px;\n margin-top: -20px;\n }\n\n a {\n margin-left: 20px;\n }\n }\n`;\n\nexport const MenuItem = styled.div`\n @media ${devices.mobileAndTablet} {\n a {\n margin-left: 20px;\n }\n }\n`;\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useState } from 'react';\nimport { TabsContainer, MenuContainer, ItemsContainer, MenuItem } from './Tabs.style';\nimport { ITabsProps } from '../../../types/types';\nimport ControlledDropdown from '../../atoms/ControlledDropdown';\nimport SvgIcon from '../../atoms/Icons/Icons';\n\nconst Tabs = ({ items = [], onChange, onShowMenu, showMenu = false, colorPrimary = 'primary' }: ITabsProps) => {\n const [openMenu, setOpenMenu] = useState(false);\n const [activeDropdown, setActiveDropdown] = useState(-1);\n const [hoverOverDropdown, setHoverOverDropdown] = useState(-1);\n\n const onClickHandler = (value: boolean) => {\n setOpenMenu(value);\n if (onShowMenu) {\n onShowMenu(value);\n }\n };\n\n const isActiveDropdown = (i: number) => {\n const isHoverOver = i === hoverOverDropdown;\n const noneIsHoverOver = hoverOverDropdown === -1;\n const isActive = i === activeDropdown;\n\n return isHoverOver || (noneIsHoverOver && isActive);\n };\n\n const onResetActive = () => {\n setActiveDropdown(-1);\n setHoverOverDropdown(-1);\n };\n\n const onChangeHandler = (link: string) => {\n if (onChange) {\n onChange(link);\n }\n onResetActive();\n };\n\n const onDropdownClick = (i: number, link?: string) => {\n const isActiveDropdownClicked = i === activeDropdown;\n const nextActive = isActiveDropdownClicked ? -1 : i;\n setActiveDropdown(nextActive);\n if (isActiveDropdownClicked) setHoverOverDropdown(-1);\n if (onChange && link) onChange(link);\n };\n\n const onDropdownMouseEnter = (i: number) => {\n if (!showMenu) {\n setHoverOverDropdown(i);\n }\n };\n\n const onDropdownMouseLeave = () => {\n if (!showMenu) {\n setHoverOverDropdown(-1);\n }\n };\n\n const onFocus = (i: number) => setActiveDropdown(i);\n const onBlur = (i: number) => {\n if (i === (items?.length ?? 0) - 1) {\n onResetActive();\n }\n };\n\n return (\n <TabsContainer>\n <ItemsContainer showMenu={showMenu}>\n {items.map((item, index) => (\n <ControlledDropdown\n key={`key-${item.title}`}\n text={item.title as string}\n options={item.options}\n onClick={() => onDropdownClick(index, item.titleLink)}\n onOptionClick={onChangeHandler}\n onMouseEnter={() => onDropdownMouseEnter(index)}\n onMouseLeave={() => onDropdownMouseLeave()}\n onFocus={() => onFocus(index)}\n onBlur={() => onBlur(index)}\n onReset={onResetActive}\n active={isActiveDropdown(index)}\n activeColor={colorPrimary}\n />\n ))}\n </ItemsContainer>\n {!showMenu && (\n <MenuContainer colorPrimary={colorPrimary}>\n {openMenu ? (\n <a\n onClick={(e) => {\n e.preventDefault();\n onClickHandler(false);\n }}\n >\n <SvgIcon className=\"close-img\" iconName=\"Close\" />\n </a>\n ) : (\n <MenuItem>\n <a\n onClick={(e) => {\n e.preventDefault();\n onClickHandler(true);\n }}\n >\n MENU\n </a>\n </MenuItem>\n )}\n </MenuContainer>\n )}\n </TabsContainer>\n );\n};\n\nexport default Tabs;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const SearchBarContainer = styled.div`\n display: flex;\n flex-direction: row;\n column-gap: 64px;\n justify-content: space-between;\n align-items: center;\n height: 100%;\n background-color: var(--base-color-transparent);\n\n @media ${devices.mobile} {\n column-gap: 12px;\n }\n`;\n\nexport const SvgContainerSearch = styled.div`\n svg {\n width: var(--navigation-xlarge-gap);\n height: var(--navigation-xlarge-gap);\n }\n`;\n\nexport const SvgContainerClose = styled.div`\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n\n :hover {\n cursor: pointer;\n && svg path {\n fill: var(--base-color-navigation);\n }\n }\n`;\n\nexport const SearchUnavailableContainer = styled.div`\n width: 100%;\n background-color: var(--base-color-transparent);\n font-size: var(--font-size-search);\n font-family: var(--font-family-search);\n color: var(--base-color-darkgrey);\n cursor: not-allowed;\n\n @media ${devices.mobileAndTablet} {\n font-size: var(--font-size-body-2);\n line-height: var(--line-height-body-2);\n padding-bottom: 12px;\n }\n`;\n\nexport const InputContainer = styled.div`\n background-color: blue;\n width: 100%;\n\n input {\n font-size: var(--font-size-search);\n font-family: var(--font-family-search);\n border: none;\n border-radius: 0;\n outline: none;\n outline-color: var(--base-color-white);\n height: 48px;\n box-sizing: border-box;\n width: 100%;\n -webkit-appearance: none;\n\n &.search-input {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n @media ${devices.mobile} {\n column-gap: 24px;\n }\n }\n`;\n\nexport const SearchLinkContainer = styled.div`\n @media ${devices.mobile} {\n display: none;\n }\n`;\n\nexport const SearchArrowContainer = styled.a`\n display: none;\n height: 24px;\n width: 24px;\n\n @media ${devices.mobile} {\n display: block;\n }\n`;\n","import React, { useEffect, useRef, useState } from 'react';\nimport {\n SearchBarContainer,\n SvgContainerClose,\n SvgContainerSearch,\n InputContainer,\n SearchLinkContainer,\n SearchArrowContainer,\n} from './SearchBar.style';\nimport { ISearchBarProps } from '../../../types/navigation';\nimport SvgIcon from '../../atoms/Icons/Icons';\nimport TextLink from '../../atoms/TextLink';\nimport { Colors } from '../../../types/types';\n\nconst SearchBar = ({ onClick, onClose }: ISearchBarProps) => {\n const [showSearchLink, setShowSearchLink] = useState(false);\n const [searchValue, setSearchValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n inputRef?.current?.focus();\n return () => inputRef?.current?.blur();\n }, [inputRef]);\n\n const onSearchHandler = (value: string) => {\n onClick(value);\n setSearchValue('');\n };\n\n const handleKeypress = (e: React.KeyboardEvent<HTMLInputElement | HTMLAnchorElement>, value: string) => {\n if (e.key === 'Enter' && showSearchLink) {\n onSearchHandler(value);\n }\n };\n\n const onCloseHandler = (e?: React.MouseEvent) => {\n if (onClose) {\n onClose(e);\n }\n setShowSearchLink(false);\n setSearchValue('');\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\n e.preventDefault();\n const { value } = e.target;\n if (value) {\n setShowSearchLink(true);\n setSearchValue(value);\n } else {\n setShowSearchLink(false);\n setSearchValue('');\n }\n };\n\n const onKeyboardCloseHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onCloseHandler();\n }\n };\n\n return (\n <SearchBarContainer>\n <SvgContainerSearch>\n <SvgIcon iconName=\"Search\" />\n </SvgContainerSearch>\n <InputContainer>\n <input\n data-testid=\"input-html\"\n ref={inputRef}\n className=\"search-input\"\n placeholder=\"Search the website...\"\n type=\"text\"\n onChange={(e) => {\n onChangeHandler(e);\n }}\n onKeyPress={(e) => handleKeypress(e, searchValue)}\n value={searchValue}\n />\n </InputContainer>\n {showSearchLink && (\n <span>\n <SearchLinkContainer data-testid=\"search-button\">\n <TextLink\n color={Colors.Core}\n onClick={() => onSearchHandler(searchValue)}\n onKeyDown={(e) => handleKeypress(e, searchValue)}\n tabIndex={0}\n >\n SEARCH\n </TextLink>\n </SearchLinkContainer>\n <SearchArrowContainer data-testid=\"search-arrow-button\" onClick={() => onSearchHandler(searchValue)}>\n <SvgIcon iconName=\"Arrow\" color={Colors.Core} />\n </SearchArrowContainer>\n </span>\n )}\n <SvgContainerClose\n tabIndex={0}\n onClick={onCloseHandler}\n onKeyDown={onKeyboardCloseHandler}\n data-testid=\"close-icon\"\n >\n <SvgIcon iconName=\"Close\" />\n </SvgContainerClose>\n </SearchBarContainer>\n );\n};\n\nexport default SearchBar;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const FooterSection = styled.section`\n background-color: var(--base-color-black);\n color: var(--base-color-white);\n`;\n\nexport const FooterContainer = styled.div`\n height: var(--footer-height);\n padding-top: var(--footer-padding-top);\n padding-bottom: var(--footer-padding-bottom);\n display: grid;\n grid-template-rows:\n min-content var(--footer-vertical-spacing-lg) min-content var(--footer-vertical-spacing-lg) min-content var(\n --footer-vertical-spacing-sm\n )\n min-content;\n grid-template-areas:\n 'row1'\n '.'\n 'row2'\n '.'\n 'row3'\n '.'\n 'row4';\n`;\n\nexport const PolicyLinksRow = styled.div`\n grid-area: row1;\n justify-self: center;\n\n @media ${devices.mobile} {\n & {\n justify-self: start;\n grid-area: row2;\n }\n }\n`;\n\nexport const ContactNewsletterRow = styled.div`\n grid-area: row2;\n\n @media ${devices.mobile} {\n & {\n grid-area: row1;\n }\n }\n`;\n\nexport const ArtsLogoRow = styled.div`\n grid-area: row3;\n justify-self: center;\n\n @media ${devices.mobile} {\n justify-self: start;\n }\n`;\n\nexport const AdditionalInfo = styled.p`\n grid-area: row4;\n font-family: var(--font-family-body);\n font-size: var(--font-size-body-3);\n line-height: var(--line-height-body-3);\n text-align: center;\n margin: 0;\n padding: 0;\n\n @media ${devices.mobile} {\n text-align: left;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const PolicyLinksList = styled.ul`\n margin: 0 auto;\n padding: 0;\n list-style: none;\n display: flex;\n gap: var(--footer-items-gap);\n\n @media ${devices.mobile} {\n & {\n margin: 0;\n flex-direction: column;\n }\n }\n`;\n\nexport const PolicyLinkItem = styled.li`\n font-family: var(--font-family-overline);\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n line-height: var(--line-height-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n text-transform: var(--text-transform-overline);\n text-align: center;\n\n @media ${devices.mobile} {\n & {\n text-align: left;\n }\n }\n`;\n\nexport const PolicyLink = styled.a`\n width: fit-content;\n text-decoration: none;\n text-transform: uppercase;\n color: var(--base-color-white);\n cursor: pointer;\n`;\n","import React, { FunctionComponent } from 'react';\nimport { PolicyLinksList, PolicyLinkItem, PolicyLink } from './PolicyLinks.style';\nimport { IPolicyLinksProps } from '../../../types/footer';\n\nconst PolicyLinks: FunctionComponent<IPolicyLinksProps> = ({ items = [] }) => {\n return (\n <PolicyLinksList>\n {items.map((item) => (\n <PolicyLinkItem key={item.name}>\n <PolicyLink data-roh={item.dataRoh} href={item.href} title={item.title}>\n {item.title}\n </PolicyLink>\n </PolicyLinkItem>\n ))}\n </PolicyLinksList>\n );\n};\n\nexport default PolicyLinks;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const ContactNewsletterWrapper = styled.div`\n display: grid;\n grid-template-columns: calc(50% - 1px) 2px calc(50% - 1px);\n grid-template-rows: 100px;\n gap: 0;\n\n @media ${devices.mobile} {\n & {\n display: grid;\n grid-template-columns: 100%;\n grid-template-rows: min-content min-content;\n gap: var(--footer-vertical-spacing-lg);\n }\n }\n`;\n\nexport const ContactNewsletterSeparator = styled.div`\n grid-column: 2;\n justify-self: center;\n height: 100%;\n border: 1px solid var(--base-color-white);\n\n @media ${devices.mobile} {\n & {\n grid-column: auto;\n display: none;\n }\n }\n`;\n\nexport const SignUpWrapper = styled.div`\n grid-column: 1;\n padding-top: 9px;\n justify-self: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n @media ${devices.mobile} {\n & {\n grid-column: auto;\n align-items: start;\n justify-self: start;\n padding-top: 0;\n }\n }\n`;\n\nexport const SignUpText = styled.p`\n font-family: var(--font-family-body);\n font-size: var(--font-size-body-2);\n line-height: var(--line-height-body-2);\n width: 60%;\n margin: 0 auto;\n height: 60px;\n text-align: center;\n\n @media ${devices.mobile} {\n & {\n width: 100%;\n height: auto;\n text-align: left;\n font-size: 14px;\n margin-bottom: var(--footer-vertical-spacing-lg);\n }\n }\n`;\n\nexport const ContactWrapper = styled.div`\n grid-column: 3;\n justify-self: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 9px;\n\n @media ${devices.mobile} {\n & {\n grid-column: auto;\n align-items: start;\n justify-self: start;\n padding-top: 0;\n }\n }\n`;\n\nexport const MediaLinksWrapper = styled.div`\n display: flex;\n gap: var(--footer-media-gap);\n height: 60px;\n\n @media ${devices.mobile} {\n & {\n height: auto;\n margin-bottom: var(--footer-vertical-spacing-lg);\n }\n }\n`;\n\nexport const MediaIconWrapper = styled.a`\n height: var(--footer-media-icon-height);\n width: var(--footer-media-icon-width);\n`;\n\nexport const TextLinkWrapper = styled.div`\n &&& {\n font-family: var(--font-family-overline);\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n line-height: var(--line-height-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n text-transform: var(--text-transform-overline);\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport TextLink from '../../atoms/TextLink';\nimport { Icon } from '../../atoms/Icons';\nimport {\n ContactNewsletterWrapper,\n ContactNewsletterSeparator,\n SignUpWrapper,\n ContactWrapper,\n SignUpText,\n MediaLinksWrapper,\n MediaIconWrapper,\n TextLinkWrapper,\n} from './ContactNewsletter.style';\nimport { IContactNewsletterProps } from '../../../types/footer';\n\nconst ContactNewsletter: FunctionComponent<IContactNewsletterProps> = ({\n signUpText,\n signUpLink,\n socialMediaLinks,\n contact,\n}) => {\n return (\n <ContactNewsletterWrapper>\n <SignUpWrapper>\n <SignUpText>{signUpText}</SignUpText>\n <TextLinkWrapper>\n <TextLink href={signUpLink.href} title={signUpLink.title}>\n {signUpLink.title}\n </TextLink>\n </TextLinkWrapper>\n </SignUpWrapper>\n <ContactNewsletterSeparator />\n <ContactWrapper>\n <MediaLinksWrapper>\n {socialMediaLinks.map((mediaLink) => (\n <MediaIconWrapper key={mediaLink.name} href={mediaLink.href} title={mediaLink.name}>\n <Icon iconName={mediaLink.name} color=\"white\" />\n </MediaIconWrapper>\n ))}\n </MediaLinksWrapper>\n <TextLinkWrapper>\n <TextLink href={contact.href} title={contact.title}>\n {contact.title}\n </TextLink>\n </TextLinkWrapper>\n </ContactWrapper>\n </ContactNewsletterWrapper>\n );\n};\n\nexport default ContactNewsletter;\n","import styled from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\nimport { devices } from '../../../styles/viewports';\nimport { IAnchorTabArrowsBoxProps, IAnchorTabsListProps, IAnchorTabBarBorderProps } from '../../../types/navigation';\nimport zIndexes from '../../../styles/zIndexes';\n\nexport const LIST_ITEM_GAP = 32;\n\nexport const AnchorTabbarWrapper = styled.div<IAnchorTabBarBorderProps>`\n position: sticky;\n width: 100%;\n top: 0;\n border-bottom: ${({ bottomBorder }) => (bottomBorder ? '2px solid var(--base-color-light-grey)' : 'none')};\n background-color: var(--base-color-white);\n z-index: ${zIndexes.anchor};\n`;\n\nexport const TabsGrid = styled(Grid)`\n height: var(--anchor-tabs-height);\n`;\n\nexport const TabsWrapper = styled.div`\n display: flex;\n`;\n\nexport const TabsList = styled.ul<IAnchorTabsListProps>`\n width: ${({ tabsOverflow }) => (tabsOverflow ? 'calc(100% - 74px)' : '100%')};\n display: flex;\n gap: ${LIST_ITEM_GAP}px;\n justify-content: ${({ tabsOverflow }) => (tabsOverflow ? 'start' : 'center')};\n align-items: center;\n list-style: none;\n padding: 0;\n margin: 0;\n height: var(--anchor-tabs-height);\n white-space: nowrap;\n overflow: scroll;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n scroll-behavior: smooth;\n\n @media ${devices.mobileAndTablet} {\n background: linear-gradient(\n 135deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0.48) 85%,\n rgba(235, 235, 235, 0.4) 99%,\n rgba(255, 255, 255, 0.39) 100%\n );\n }\n\n @media ${devices.mobile} {\n & {\n width: ${({ tabsOverflow, hasTwoArrows }) => (tabsOverflow && hasTwoArrows ? 'calc(100% - 50px)' : '100%')};\n }\n }\n`;\n\nexport const ArrowsContainer = styled.div<IAnchorTabArrowsBoxProps>`\n width: ${({ fullWidth }) => (fullWidth ? '74px' : '46px')};\n height: var(--anchor-tabs-height);\n background-color: var(--base-color-white);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 10px;\n`;\n\nexport const ArrowWrapper = styled.div`\n width: 24px;\n height: 24px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: flex-center;\n\n :hover {\n && svg path {\n fill: var(--base-color-primary);\n }\n }\n`;\n","import styled from 'styled-components';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { PrimaryButton } from '../../atoms/Buttons';\nimport { ITitleCTAProps, ITitleCTAGridItemProps } from '../../../types/navigation';\nimport { devices } from '../../../styles/viewports';\nimport zIndexes from '../../../styles/zIndexes';\n\nexport const TitleCTAGridWrapper = styled.div<ITitleCTAProps>`\n position: ${({ sticky }) => (sticky ? 'sticky' : 'initial')};\n top: -1px;\n background-color: var(--base-color-white);\n z-index: ${zIndexes.anchor};\n`;\n\nexport const TitleCTAGrid = styled(Grid)`\n border-bottom: solid 2px var(--base-color-lightgrey);\n`;\n\nexport const TitleCTAGridItem = styled.div<ITitleCTAGridItemProps>`\n grid-column: 2 / span 15;\n display: flex;\n align-items: center;\n flex-direction: ${({ title }) => (title ? 'row' : 'row-reverse')};\n gap: 40px;\n justify-content: space-between;\n\n @media ${devices.tablet} {\n & {\n grid-column: 2 / span 13;\n gap: 20px;\n }\n }\n\n @media ${devices.mobile} {\n & {\n grid-column: 2 / span 12;\n }\n }\n`;\n\nexport const AnchorTitle = styled.div`\n display: flex;\n align-items: center;\n min-height: var(--button-height);\n\n h5 {\n padding: 0;\n margin: 0;\n }\n\n @media ${devices.mobile} {\n & {\n min-height: 50px;\n }\n }\n`;\n\nexport const GridItemTitleWrapper = styled(GridItem)`\n @media ${devices.tablet} {\n grid-column: 2 / span 9;\n }\n`;\n\nexport const ButtonsDesktopWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n @media ${devices.mobile} {\n display: none;\n }\n\n a {\n width: max-content;\n }\n`;\n\nexport const ButtonsMobileWrapper = styled.div`\n display: none;\n\n @media ${devices.mobile} {\n & {\n display: block;\n }\n }\n`;\n\nexport const PrimaryButtonReverse = styled(PrimaryButton)`\n && {\n background-color: ${({ theme }) => theme.colors.primaryButtonReverseBg};\n border-color: ${({ theme }) => theme.colors.primaryButtonReverseBg};\n color: ${({ theme }) => theme.colors.primaryButtonReverse};\n svg path {\n fill: ${({ theme }) => theme.colors.primaryButtonReverse};\n }\n }\n`;\n\nexport const MessageWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-right: var(--grid-outer-margin);\n height: var(--button-height);\n\n h6 {\n margin: 0;\n padding: 0;\n }\n\n @media ${devices.tablet} {\n & {\n margin-right: var(--grid-margin);\n }\n }\n\n @media ${devices.mobile} {\n & {\n display: none;\n }\n }\n`;\n\nexport const MessageWrapperMobile = styled.div`\n h6 {\n margin: 0;\n padding: 0;\n }\n display: none;\n\n @media ${devices.mobile} {\n & {\n display: flex;\n align-items: center;\n margin-left: var(--grid-margin);\n padding: 12px 0;\n }\n }\n`;\n","import styled from 'styled-components';\nimport { Colors } from '../../../types';\nimport { devices } from '../../../styles/viewports';\n\ntype WithColor = {\n theme: {\n color: Colors;\n };\n};\n\nexport const Wrapper = styled.div`\n background-color: var(--base-color-lightgrey);\n padding: 40px;\n\n display: block;\n position: relative;\n\n @media ${devices.tablet} {\n margin-top: 0;\n padding: 40px 20px;\n }\n`;\n\nexport const PromoLabelWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-self: flex-end;\n height: 15px;\n`;\n\nexport const PromoLabel = styled.div<WithColor>`\n background: ${({ theme }) => theme.colors.primary};\n color: ${Colors.White};\n padding: 6px 8px;\n width: fit-content;\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 20px;\n top: 0;\n width: auto;\n margin: auto;\n font-family: var(--font-family-header);\n font-feature-settings:\n 'tnum' on,\n 'lnum' on,\n 'liga' off,\n 'calt' off;\n font-size: var(--font-size-overline-2);\n line-height: 12px;\n text-align: center;\n letter-spacing: 1px;\n text-transform: uppercase;\n`;\n\nexport const ButtonContainer = styled.div`\n margin-top: 2em;\n width: fit-content;\n`;\n\nexport const TitleContainer = styled.div`\n & > * {\n margin-top: 0;\n margin-bottom: 0.5em;\n }\n`;\n\nexport const OfferTextWrapper = styled.div`\n & > * {\n margin-bottom: 0.5em;\n }\n margin-bottom: 1em;\n`;\n\nexport const PriceRow = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 6px 12px;\n padding: 5px 0 8px 0;\n`;\n\nexport const LineThrough = styled.div`\n text-decoration-line: line-through;\n color: var(--base-color-darkgrey);\n`;\n","/* eslint-disable react/no-danger */\nimport React from 'react';\nimport { OfferTextWrapper } from './UpsellCard.style';\nimport { BodyText, Overline } from '../../atoms/Typography';\nimport { IOfferTextProps } from '../../../types/upsell';\n\nexport const OfferText = ({ title, description }: IOfferTextProps) => {\n return (\n <OfferTextWrapper>\n <Overline semanticLevel={5} level={1}>\n {title}\n </Overline>\n <BodyText level={1}>\n <div dangerouslySetInnerHTML={{ __html: description ?? '' }} />\n </BodyText>\n </OfferTextWrapper>\n );\n};\n","// Set max. character length\nexport const setMaxCharLength = (value: string, maxLength: number) => {\n return value.slice(0, maxLength);\n};\n\n// Format price to contain £ if not already present\nexport const formatPrice = (value: string | undefined): string => {\n if (Number.isNaN(Number(value))) return value ?? '';\n return `£${Number(value).toFixed(2)}`;\n};\n","import React, { FunctionComponent } from 'react';\nimport PrimaryButton from '../../atoms/Buttons/Primary/PrimaryButton';\nimport {\n Wrapper,\n PromoLabel,\n ButtonContainer,\n TitleContainer,\n PriceRow,\n LineThrough,\n PromoLabelWrapper,\n} from './UpsellCard.style';\nimport { AltHeader, Overline, Subtitle } from '../../atoms/Typography';\nimport { IUpsellCardProps } from '../../../types/upsell';\nimport { OfferText } from './OfferText';\nimport { ThemeType } from '../../../types';\nimport { ThemeProvider } from '../..';\nimport { formatPrice, setMaxCharLength } from '../../../helpers/formatStrings';\n\nconst LENGTH_SMALL_TEXT = 19;\nconst OFFER_TEXTS_LIMIT = 3;\nconst FLAG_CHAR_LIMIT = 30;\n\nconst UpsellCard: FunctionComponent<IUpsellCardProps> = ({\n title = '',\n subTitle,\n price,\n promoPrice,\n flag,\n offerTexts,\n link,\n theme = ThemeType.Core,\n}) => {\n const truncate = (str: string, n: number) => (str.length >= n ? str.slice(0, n) : str);\n\n const reducedOfferTexts = offerTexts?.slice(0, OFFER_TEXTS_LIMIT);\n\n return (\n <ThemeProvider theme={theme}>\n <Wrapper>\n {flag && (\n <PromoLabelWrapper>\n <PromoLabel>{setMaxCharLength(flag, FLAG_CHAR_LIMIT)}</PromoLabel>\n </PromoLabelWrapper>\n )}\n\n <TitleContainer>\n <Subtitle semanticLevel={2} level={1}>\n {title}\n </Subtitle>\n {subTitle && (\n <Overline semanticLevel={3} level={1}>\n {subTitle}\n </Overline>\n )}\n {promoPrice ? (\n <PriceRow>\n <LineThrough>\n <AltHeader level={4}>{formatPrice(price)}</AltHeader>\n </LineThrough>\n <AltHeader level={4}>{formatPrice(promoPrice)}</AltHeader>\n </PriceRow>\n ) : (\n <PriceRow>\n <AltHeader level={4}>{formatPrice(price)}</AltHeader>\n </PriceRow>\n )}\n </TitleContainer>\n {reducedOfferTexts?.length &&\n reducedOfferTexts.map((offerText) => {\n return <OfferText key={offerText.title} title={offerText.title} description={offerText.description} />;\n })}\n {link && (\n <ButtonContainer>\n <PrimaryButton {...link}>{truncate(link.text, LENGTH_SMALL_TEXT)}</PrimaryButton>\n </ButtonContainer>\n )}\n </Wrapper>\n </ThemeProvider>\n );\n};\n\nexport default UpsellCard;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const Wrapper = styled.div`\n display: grid;\n gap: 60px 75px;\n grid-template-columns: repeat(2, 1fr);\n width: 100%;\n\n @media ${devices.tablet} {\n padding-left: 0;\n padding-right: 0;\n }\n\n @media ${devices.mobile} {\n width: 100%;\n padding-left: 0;\n padding-right: 0;\n grid-template-columns: 1fr;\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport UpsellCard from '../../molecules/UpsellCard';\nimport { Wrapper } from './UpsellCards.style';\nimport { IUpsellCardsProps } from '../../../types/upsell';\n\nconst UpsellCards: FunctionComponent<IUpsellCardsProps> = ({ upsellCards }) => (\n <Wrapper>\n {upsellCards?.map((card, index) => {\n return (\n <UpsellCard\n key={`upsell-card-${index}`}\n title={card.title}\n subTitle={card.subTitle}\n price={card.price}\n promoPrice={card.promoPrice}\n flag={card.flag}\n offerTexts={card.offerTexts}\n link={card.link}\n theme={card.theme}\n />\n );\n })}\n </Wrapper>\n);\n\nexport default UpsellCards;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const UpsellBorderBox = styled.div`\n border: solid 4px;\n border-color: ${({ theme }) => theme.colors.primary};\n padding: 80px;\n\n @media ${devices.mobile} {\n & {\n border-left: none;\n border-right: none;\n padding-top: 2.5em;\n padding-left: 0;\n padding-right: 0;\n padding-bottom: 2.5em;\n }\n }\n\n @media ${devices.tablet} {\n & {\n padding: 25px;\n padding-top: 2.5em;\n }\n }\n`;\n\nexport const TitleContainer = styled.div`\n margin: 0;\n @media ${devices.mobile} {\n margin-left: 1.5em;\n margin-right: 1.5em;\n }\n`;\n\nexport const TextContainer = styled.div`\n margin-bottom: 2.5em;\n div > :first-child {\n margin-top: 1.5em;\n }\n\n @media ${devices.tablet} {\n margin-top: 0;\n div > :first-child {\n margin-top: 0.5em;\n }\n }\n\n @media ${devices.mobile} {\n margin-left: 1.5em;\n margin-right: 1.5em;\n & {\n div > :first-child {\n margin-top: 1em;\n }\n }\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const AccordionContainer = styled.div`\n display: flex;\n flex-direction: column;\n div {\n overflow: hidden;\n }\n`;\n\nexport const LineContainer = styled.div`\n height: 2px;\n background-color: var(--base-color-lightgrey);\n width: 100%;\n`;\n\nexport const ChildrenContainer = styled.div<{ isVisible: boolean }>`\n margin: 0px 20px 28px 20px;\n\n visibility: ${({ isVisible }) => (isVisible ? 'visible' : 'hidden')};\n\n @media ${devices.mobile} {\n margin: 12px 0px 24px 0px;\n }\n \n @media print { \n visibility: visible;\n }\n}\n`;\n\nexport const TitleContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n\n && h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n div {\n margin: 21px 20px;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n @media ${devices.mobile} {\n margin: 12px 20px 12px 0px;\n }\n }\n\n && svg {\n width: var(--navigation-middle-gap);\n height: var(--navigation-middle-gap);\n margin-right: 20px;\n\n @media ${devices.mobile} {\n margin-right: 0px;\n }\n }\n\n :hover {\n cursor: pointer;\n }\n`;\n\nexport const ContentContainer = styled.div<{ textHeight?: string }>`\n overflow: auto;\n transition: max-height 0.2s ease;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n max-height: ${({ textHeight }) => textHeight};\n\n @media print {\n max-height: max-content;\n }\n\n & h1 {\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & h2 {\n font-size: var(--font-size-subtitle-1);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & em {\n font-family: var(--font-family-body-italics);\n }\n\n & u {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n }\n\n @media ${devices.mobile} {\n transition: 100% 0.2s ease;\n }\n`;\n\nexport const PrintHideWrapper = styled.div`\n @media print {\n display: none;\n }\n`;\n","/* eslint-disable react/no-unstable-nested-components */\nimport React, { FunctionComponent, useState, useRef, useEffect } from 'react';\nimport {\n AccordionContainer,\n TitleContainer,\n ContentContainer,\n ChildrenContainer,\n LineContainer,\n PrintHideWrapper,\n} from './Accordion.style';\nimport { IAccordionProps, INodeProps } from '../../../types/types';\nimport { Icon } from '../../atoms/Icons';\nimport { IconNameType } from '../../../types/iconTypes';\nimport { Header, Subtitle } from '../../atoms/Typography/Typography';\nimport { ISubtitleProps, TypographyLevel } from '../../../types/typography';\n\nconst Accordion: FunctionComponent<IAccordionProps> = ({\n title = '',\n showLine = true,\n children,\n visibleStandfirst,\n initOpen = false,\n contentType = 'subtitle', // 'header' or 'subtitle'\n semanticLevel = 4,\n displayLevel = 1,\n}) => {\n const [openAccordion, setOpenAccordion] = useState<boolean>(initOpen);\n const [textHeight, setTextHeight] = useState<string>('0px');\n const [iconName, setIconName] = useState<IconNameType>(initOpen ? 'Detract' : 'Expand');\n // Contents children visibility is set to prevent it from being keyboard tabbable when the accordion is closed\n const [childrenVisibility, setChildrenVisibility] = useState<boolean>(initOpen);\n const content: INodeProps = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (content?.current && initOpen) {\n setTextHeight(`${content.current.scrollHeight}px`);\n }\n }, [content, initOpen]);\n\n const toggleAccordion = () => {\n if (!children) return;\n setOpenAccordion(!openAccordion);\n setTextHeight(openAccordion ? '0px' : `${content.current.scrollHeight}px`);\n setIconName(openAccordion ? 'Expand' : 'Detract');\n setChildrenVisibility(!openAccordion);\n };\n\n const keyDown = (e: { key: string }) => {\n if (e.key === 'Enter' || e.key === 'Space') {\n toggleAccordion();\n }\n };\n\n const Standfirst = () =>\n visibleStandfirst ? (\n <ContentContainer>\n <ChildrenContainer isVisible={childrenVisibility}>{visibleStandfirst}</ChildrenContainer>\n </ContentContainer>\n ) : null;\n\n const contentContainerId = `${title}-accordion-content`;\n\n const AccordionTitle: FunctionComponent<{\n level: TypographyLevel;\n semanticLevel: TypographyLevel;\n }> = ({ level, semanticLevel: localSemanticLevel }) => {\n let subtitleLevel = level;\n if (contentType === 'header') {\n return (\n <Header semanticLevel={localSemanticLevel} level={level}>\n {title}\n </Header>\n );\n }\n if (contentType === 'subtitle') {\n if (contentType === 'subtitle') {\n if (![1, 2].includes(level)) {\n console.warn('Invalid Subtitle level:', level);\n subtitleLevel = level > 2 ? 2 : level;\n }\n }\n\n return (\n <Subtitle {...({ level: subtitleLevel, semanticLevel: localSemanticLevel } as ISubtitleProps)}>\n {title}\n </Subtitle>\n );\n }\n\n return null;\n };\n\n return (\n <AccordionContainer tabIndex={0} onKeyDown={keyDown}>\n <LineContainer />\n <TitleContainer\n onClick={toggleAccordion}\n tabIndex={-1}\n role=\"button\"\n aria-label={title}\n aria-expanded={openAccordion}\n aria-controls={contentContainerId}\n >\n <AccordionTitle level={displayLevel} semanticLevel={semanticLevel}>\n {title}\n </AccordionTitle>\n {children && (\n <PrintHideWrapper>\n <Icon iconName={iconName} />\n </PrintHideWrapper>\n )}\n </TitleContainer>\n {visibleStandfirst && <Standfirst />}\n <ContentContainer\n data-testid=\"richcontainer\"\n ref={content}\n textHeight={textHeight}\n id={contentContainerId}\n aria-live=\"polite\"\n >\n <ChildrenContainer isVisible={childrenVisibility}>{children}</ChildrenContainer>\n </ContentContainer>\n {showLine && <LineContainer />}\n </AccordionContainer>\n );\n};\n\nexport default Accordion;\n","import styled from 'styled-components';\n\nexport const AccordionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n","import React from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport { themes } from './themes';\nimport { IThemeProviderProps } from '../types/types';\n\nconst Theme = ({ children, theme }: IThemeProviderProps) => {\n const chosenTheme = themes[theme];\n return <ThemeProvider theme={chosenTheme}>{children}</ThemeProvider>;\n};\n\nexport default Theme;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const AnnouncementBannerWrapper = styled.div`\n padding: 28px 0;\n background-color: ${({ theme }) => theme.colors.primary};\n color: var(--base-color-white);\n\n @media ${devices.mobile} {\n padding: 20px 0;\n }\n`;\n\nexport const SvgContainer = styled.div`\n height: 100%;\n display: flex;\n align-items: center;\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n\n @media ${devices.mobile} {\n align-items: flex-start;\n }\n`;\n\nexport const ContentContainer = styled.div`\n overflow: auto;\n transition: max-height 0.2s ease;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n color: var(--base-color-white);\n a {\n color: var(--base-color-white);\n text-decoration: underline;\n }\n`;\n","import styled from 'styled-components';\nimport Button from '../Button';\nimport { IAuxiliaryButtonProps } from '../../../../types';\n\nconst AuxiliaryButtonWrapper = styled(Button)<IAuxiliaryButtonProps>`\n background-color: ${({ bgColor, theme }) =>\n bgColor ? `var(--base-color-${bgColor})` : theme.colors.auxiliaryButton};\n height: 20px;\n border: none;\n padding: 0;\n font-family: var(--font-family-buttons);\n font-size: var(--button-font-size);\n font-weight: var(--button-font-weight);\n color: var(--base-color-${({ color }) => color});\n width: fit-content;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n cursor: pointer;\n text-decoration: none;\n box-sizing: border-box;\n\n .auxiliaryButtonIcon {\n width: 12px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n`;\n\nexport default AuxiliaryButtonWrapper;\n","import React, { FunctionComponent } from 'react';\nimport { Colors, IAuxiliaryButtonProps } from '../../../../types';\nimport AuxiliaryButtonWrapper from './AuxiliaryButton.style';\n\nconst AuxiliaryButton: FunctionComponent<IAuxiliaryButtonProps> = ({ children, ...props }) => {\n return (\n <AuxiliaryButtonWrapper {...props} color={props.color ?? Colors.Black} iconClassName=\"auxiliaryButtonIcon\">\n {children}\n </AuxiliaryButtonWrapper>\n );\n};\n\nexport default AuxiliaryButton;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { ICardButtonContainerProps, ICardContentContainerProps } from '../../../types/card';\nimport zIndexes from '../../../styles/zIndexes';\nimport { Colors } from '../../..';\n\nconst LENGTH_LARGE_TEXT = 28;\nconst LENGTH_SMALL_TEXT = 19;\nconst LENGTH_TEXT_TABLET = 10;\n\nexport const CardContainer = styled.div<{ onlyShowButtonsOnHover: boolean; isCardClickable: boolean }>`\n cursor: ${({ isCardClickable }) => (isCardClickable ? 'pointer' : 'default')};\n position: relative;\n ${({ onlyShowButtonsOnHover }) =>\n !onlyShowButtonsOnHover\n ? `height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between; \n `\n : ''}\n\n .targetLink {\n text-decoration: none;\n color: inherit;\n }\n`;\n\nexport const HoverContainer = styled.div<{ lineColor?: Colors }>`\n height: var(--editorial-spacing-hover);\n background-color: ${({ lineColor, theme }) => {\n if (lineColor === Colors.Cinema) return 'var(--base-color-white)';\n return lineColor ? `var(--base-color-${lineColor})` : theme.colors.primary;\n }};\n position: absolute;\n width: 100%;\n z-index: ${zIndexes.contentOverlay};\n`;\n\nexport const ProgressContainer = styled.div`\n margin-top: -10px;\n`;\n\nexport const ContentContainer = styled.div<ICardContentContainerProps>`\n display: flex;\n flex-direction: column;\n margin-top: var(--editorial-margin-between);\n\n @media ${devices.mobile} {\n margin-left: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n margin-right: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n }\n`;\n\nexport const TitleContainer = styled.div`\n margin: calc(-1 * var(--editorial-margin-between)) 0 calc(-1 * var(--editorial-margin-between)) 0;\n\n @media ${devices.mobileAndTablet} {\n display: none;\n }\n`;\n\nexport const TitleContainerMobile = styled.div`\n margin: calc(-1 * var(--editorial-margin-between)) 0 calc(-1 * var(--editorial-margin-between)) 0;\n display: none;\n\n @media ${devices.mobileAndTablet} {\n display: block;\n }\n`;\n\nexport const TextContainer = styled.div`\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin-top: var(--editorial-spacing-hover);\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n em {\n font-family: var(--font-family-body-italics);\n }\n`;\n\nexport const HighlightTextContainer = styled(TextContainer)`\n color: var(--base-color-primary);\n margin-top: 4px;\n`;\n\nexport const SubtitleContainer = styled.span`\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n display: block;\n overflow-wrap: break-word;\n`;\n\nexport const LabelContainer = styled.div<{ isVisible: boolean; isGridCard: boolean }>`\n visibility: ${({ isVisible }) => (isVisible ? `visible` : 'hidden')};\n width: fit-content;\n height: 30px;\n\n @media ${devices.mobile} {\n margin-left: ${({ isGridCard }) => (isGridCard ? '20px' : '0')};\n }\n`;\n\nexport const ExtraActionsContainer = styled.div<{ fullWidth?: boolean }>`\n margin-top: var(--editorial-margin-between);\n\n @media ${devices.mobile} {\n margin-left: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n margin-right: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n }\n`;\n\nexport const LabelElements = styled.div<{ bgColor?: Colors }>`\n display: flex;\n align-items: center;\n height: 30px;\n padding: 0 8px;\n background-color: ${({ bgColor, theme }) => (bgColor ? `var(--base-color-${bgColor})` : theme.colors.primary)};\n color: var(--base-color-white);\n`;\n\nexport const LabelIconWrapper = styled.div`\n margin-left: 10px;\n\n svg {\n height: 24px;\n width: 24px;\n }\n`;\n\nconst getButtonsOpacity = ({ onlyShowButtonsOnHover }: ICardButtonContainerProps) =>\n onlyShowButtonsOnHover ? 'opacity: 0;' : 'opacity: 1;';\n\nconst getButtonsMinHeight = ({ onlyShowButtonsOnHover }: ICardButtonContainerProps) =>\n onlyShowButtonsOnHover ? 'min-height: unset;' : 'min-height: 120px;';\n\nexport const ButtonsContainer = styled.div<ICardButtonContainerProps>`\n ${getButtonsOpacity};\n display: flex;\n gap: 16px;\n margin-top: var(--editorial-margin-between);\n\n ${({ size, primaryButtonTextLength, tertiaryButtonTextLength }) => {\n const isLinksLayoutColumn =\n size === 'small'\n ? primaryButtonTextLength >= LENGTH_SMALL_TEXT || tertiaryButtonTextLength >= LENGTH_SMALL_TEXT\n : primaryButtonTextLength >= LENGTH_LARGE_TEXT || tertiaryButtonTextLength >= LENGTH_LARGE_TEXT;\n\n if (isLinksLayoutColumn) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n\n @media ${devices.mobile} {\n ${getButtonsMinHeight};\n margin-left: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n margin-right: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n opacity: 1 !important;\n gap: 24px;\n margin-top: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ${devices.tablet} {\n ${getButtonsMinHeight};\n opacity: 1 !important;\n gap: 24px;\n margin-top: 24px;\n align-items: flex-start;\n\n ${({ primaryButtonTextLength, tertiaryButtonTextLength }) => {\n const isLinksLayoutColumnTablet =\n primaryButtonTextLength >= LENGTH_TEXT_TABLET || tertiaryButtonTextLength >= LENGTH_TEXT_TABLET;\n\n if (isLinksLayoutColumnTablet) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n }\n`;\n","import React from 'react';\nimport { renderToString } from 'react-dom/server';\n\nexport const stripAllHtmlTags = (htmlString: string): string => htmlString.replace(/<[^>]*>/g, '');\n\nexport const truncateHtmlString = (htmlString: string, resultLength: number, addDots: boolean = false): string => {\n const textContent = stripAllHtmlTags(htmlString);\n\n if (textContent.length <= resultLength) {\n return htmlString;\n }\n\n let accumulatedText = '';\n const tagStack: string[] = [];\n let charCount = 0;\n\n const closeTags = (): void => {\n while (tagStack.length > 0) {\n accumulatedText += `</${tagStack.pop()}>`;\n }\n };\n\n for (let i = 0; i < htmlString.length; i++) {\n const char = htmlString[i];\n if (char === '<') {\n accumulatedText += char;\n if (htmlString[i + 1] !== '/') {\n const tagNameEnd = htmlString.indexOf('>', i);\n const tagName = htmlString.slice(i + 1, tagNameEnd).split(' ')[0];\n tagStack.push(tagName);\n accumulatedText += `${tagName}>`;\n i = tagNameEnd;\n }\n } else if (char === '>') {\n accumulatedText += char;\n } else if (charCount < resultLength) {\n accumulatedText += char;\n charCount++;\n }\n\n if (charCount >= resultLength) {\n if (addDots) {\n accumulatedText += '...';\n }\n break;\n }\n }\n\n closeTags();\n\n return accumulatedText;\n};\n\nexport const truncate = (str: string, n: number) => (str.length >= n ? str.substring(0, n) : str);\n\nexport const truncateReactNodeString = (\n node: React.ReactNode,\n resultLength: number,\n addDots: boolean = false\n): string => {\n const nodeString = renderToString(React.createElement(React.Fragment, null, node));\n return truncateHtmlString(nodeString, resultLength, addDots);\n};\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { useState, useRef, FunctionComponent } from 'react';\nimport { ButtonType, AspectRatio } from '../../../types';\nimport { IButtonProps } from '../../../types/buttonTypes';\nimport AuxiliaryButton from '../../atoms/Buttons/Auxiliary/AuxiliaryButton';\nimport {\n ContentContainer,\n TitleContainer,\n TitleContainerMobile,\n SubtitleContainer,\n ButtonsContainer,\n TextContainer,\n HoverContainer,\n CardContainer,\n ProgressContainer,\n LabelContainer,\n LabelIconWrapper,\n LabelElements,\n ExtraActionsContainer,\n HighlightTextContainer,\n} from './Card.style';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport { PrimaryButton, Header, SecondaryButton, TertiaryButton, Overline, Icon, BodyText } from '../../atoms';\nimport { ICardProps } from '../../../types/card';\nimport Progress from '../../atoms/Progress';\nimport TypeTags from '../../atoms/TypeTags';\nimport { Colors, INodeProps } from '../../../types/types';\nimport { truncateHtmlString } from '../../../helpers/htmlStrings';\n\nconst LENGTH_LARGE_TEXT = 28;\nconst LENGTH_SMALL_TEXT = 19;\n\nconst buttonTypeToButton = {\n [ButtonType.Primary]: PrimaryButton,\n [ButtonType.Secondary]: SecondaryButton,\n [ButtonType.Tertiary]: TertiaryButton,\n};\n\nconst Card: FunctionComponent<ICardProps> = ({\n progress = 0,\n title = '',\n subtitle,\n text = '',\n highlightText = '',\n links,\n tags = [],\n image,\n imageAltText = '',\n withContinueWatching = false,\n size = 'small',\n fullWidth = false,\n onlyShowButtonsOnHover = true,\n hoverLineColor,\n labelParams,\n isGridCard = false,\n auxiliaryCTA,\n}) => {\n const truncate = (str: string, n: number) => (str.length >= n ? str.substr(0, n) : str);\n\n const node: INodeProps = useRef();\n const [hovered, setHovered] = useState(false);\n\n const truncatedText = truncateHtmlString(text, 185, true);\n const firstButton = links?.[0];\n const { text: firstButtonText = '', ...restFirstButton } = firstButton || {};\n const primaryButtonTextTruncate =\n size === 'small' ? truncate(firstButtonText, LENGTH_SMALL_TEXT) : truncate(firstButtonText, LENGTH_LARGE_TEXT);\n\n const secondButton = links?.[1];\n const { text: secondButtonText = '', ...restSecondButton } = secondButton || {};\n const tertiaryButtonTextTruncate =\n size === 'small' ? truncate(secondButtonText, LENGTH_SMALL_TEXT) : truncate(secondButtonText, LENGTH_LARGE_TEXT);\n\n const hoverHandler = (value: boolean) => {\n if (value) {\n node.current.style.opacity = '1';\n node.current.style.transition = 'opacity 0.3s';\n } else {\n node.current.style.opacity = '0';\n node.current.style.transition = 'opacity 0.3s';\n }\n\n setHovered(value);\n };\n\n const FirstButtonComponent = firstButton?.buttonType\n ? (buttonTypeToButton[firstButton.buttonType] as FunctionComponent<IButtonProps>)\n : PrimaryButton;\n\n const SecondButtonComponent = secondButton?.buttonType\n ? (buttonTypeToButton[secondButton.buttonType] as typeof TertiaryButton)\n : TertiaryButton;\n\n return (\n <CardContainer\n onMouseOver={() => (onlyShowButtonsOnHover ? hoverHandler(true) : undefined)}\n onMouseLeave={() => (onlyShowButtonsOnHover ? hoverHandler(false) : undefined)}\n onlyShowButtonsOnHover={onlyShowButtonsOnHover}\n data-testid=\"cardcontainer\"\n isCardClickable={!!firstButton}\n >\n <a\n href={firstButton?.href}\n target={firstButton?.target}\n className=\"targetLink\"\n style={{\n flexGrow: onlyShowButtonsOnHover ? 'unset' : 1,\n }}\n >\n <LabelContainer isGridCard={isGridCard} isVisible={!!labelParams}>\n {labelParams && (\n <LabelElements bgColor={labelParams?.bgColor}>\n <Overline level={2}>{labelParams.text.substring(0, 25)}</Overline>\n {labelParams.iconName && (\n <LabelIconWrapper>\n <Icon\n iconName={labelParams.iconName}\n direction={labelParams.iconDirection}\n color={labelParams.color ?? Colors.White}\n />\n </LabelIconWrapper>\n )}\n </LabelElements>\n )}\n </LabelContainer>{' '}\n {hovered && <HoverContainer lineColor={hoverLineColor} data-testid=\"hovercontainer\" />}\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n <img src={image} alt={imageAltText} />\n </ImageAspectRatioWrapper>\n {withContinueWatching && (\n <ProgressContainer>\n <Progress progress={progress} height={10} />\n </ProgressContainer>\n )}\n <ContentContainer fullWidth={fullWidth}>\n {tags ? <TypeTags list={tags} /> : null}\n <TitleContainer>\n <Header level={size === 'small' ? 6 : 5}>{title}</Header>\n </TitleContainer>\n <TitleContainerMobile>\n <Header level={6}>{title}</Header>\n </TitleContainerMobile>\n {subtitle ? <SubtitleContainer>{subtitle}</SubtitleContainer> : null}\n <TextContainer dangerouslySetInnerHTML={{ __html: truncatedText }} />\n {highlightText && (\n <HighlightTextContainer>\n <BodyText level={1}>{highlightText}</BodyText>\n </HighlightTextContainer>\n )}\n </ContentContainer>\n </a>\n {auxiliaryCTA && (\n <ExtraActionsContainer fullWidth={fullWidth}>\n <AuxiliaryButton {...auxiliaryCTA}>{auxiliaryCTA.text}</AuxiliaryButton>\n </ExtraActionsContainer>\n )}\n {links && (\n <ButtonsContainer\n ref={node}\n data-testid=\"buttonscontainer\"\n className=\"cardButtonsContainer\"\n size={size}\n primaryButtonTextLength={firstButtonText.length}\n tertiaryButtonTextLength={secondButtonText.length}\n onlyShowButtonsOnHover={onlyShowButtonsOnHover}\n fullWidth={fullWidth}\n >\n {firstButton && <FirstButtonComponent {...restFirstButton}>{primaryButtonTextTruncate}</FirstButtonComponent>}\n {secondButton && (\n <SecondButtonComponent {...restSecondButton}>{tertiaryButtonTextTruncate}</SecondButtonComponent>\n )}\n </ButtonsContainer>\n )}\n </CardContainer>\n );\n};\n\nexport default Card;\n","import styled from 'styled-components';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { devices } from '../../../styles/viewports';\n\nexport const CardsContainer = styled(Grid)`\n gap: var(--line-height-people-listing-gap) var(--grid-column-gap);\n\n @media ${devices.mobile} {\n grid-row-gap: var(--cards-spacing-stack);\n }\n`;\n\nexport const GridItemContainer = styled(GridItem)`\n @media ${devices.mobile} {\n grid-column: 1 / span 14;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IContactCardWrapperProps } from '../../../types/contactCard';\n\nexport const ContentWrapper = styled.div`\n & > div {\n margin-bottom: 2px;\n\n &:first-child {\n margin-bottom: 4px;\n\n @media ${devices.mobile} {\n margin-bottom: 6px;\n }\n }\n }\n\n @media ${devices.mobileAndTablet} {\n grid-column: 2 / span 12;\n }\n`;\n\nexport const Wrapper = styled.div<IContactCardWrapperProps>`\n ${({ hideBottomBorder }) => `border-bottom: ${hideBottomBorder ? 'none' : '2px solid var(--base-color-midgrey)'};`}\n ${({ hideTopBorder }) => `border-top: ${hideTopBorder ? 'none' : '2px solid var(--base-color-midgrey)'};`}\n padding: 30px 0;\n\n @media ${devices.mobileAndTablet} {\n display: grid;\n grid-template-columns: var(--grid-template-columns);\n grid-template-rows: max-content;\n gap: var(--grid-column-gap);\n margin: 0;\n }\n`;\n\nexport const AddressWrapperDesktop = styled.div`\n @media ${devices.mobile} {\n display: none;\n }\n`;\n\nexport const AddressWrapperMobile = styled.div`\n display: none;\n\n & > div {\n margin-bottom: 2px;\n }\n\n @media ${devices.mobile} {\n display: block;\n }\n`;\n\nexport const DetailsWrapper = styled.div`\n display: flex;\n\n @media ${devices.mobile} {\n flex-direction: column;\n margin: 4px 0;\n }\n\n a {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n color: var(--base-color-black);\n text-decoration: underline;\n\n &:before {\n display: inline-block;\n content: '';\n background-color: var(--base-color-black);\n width: 1px;\n height: 18px;\n margin: 0 8px -4px;\n\n @media ${devices.mobile} {\n display: none;\n }\n }\n\n &:first-child:before {\n display: none;\n }\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { BodyText } from '../../atoms';\n\ninterface BodyTextProps {\n truncate?: number;\n}\n\ninterface ContentSummaryProps {\n showImage?: boolean;\n}\n\ninterface Clickable {\n clickable?: boolean;\n}\n\nexport const BodyTextRelative = styled(BodyText)`\n position: relative;\n`;\n\nexport const ContentSummaryWrapper = styled.article<Clickable>`\n display: flex;\n position: relative;\n justify-items: start;\n align-items: center;\n margin: 20px 0;\n gap: 24px;\n cursor: ${(props) => (props.clickable ? 'pointer' : 'default')};\n\n @media ${devices.mobile} {\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n`;\n\nexport const ContentSummaryImageWrapper = styled.div`\n flex: 0 0 33.3%;\n`;\n\nexport const ContentSummaryTextWrapper = styled.div<ContentSummaryProps>`\n grid-column: ${(props) => (props.showImage ? 2 : '1 / span 4')};\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n gap: 22px;\n\n & > * {\n margin-block-start: 0;\n margin-block-end: 0;\n }\n\n @media ${devices.mobile} {\n margin: 0 20px;\n gap: 12px;\n }\n\n & .content-summary-text-link {\n height: unset;\n }\n`;\n\nexport const ContentSummaryTitleWrapper = styled.div`\n & > * {\n margin: 0;\n }\n\n @media ${devices.mobile} {\n & > * {\n font-size: var(--font-size-header-5);\n font-weight: var(--font-weight-header-5);\n }\n }\n`;\n\nexport const BodyTextLimit = styled.div`\n display: block;\n position: relative;\n`;\n\nexport const ContentSummaryBodyTextWrapper = styled.div<BodyTextProps>`\n & p:not(:last-child):after {\n content: '\\\\A\\\\A';\n white-space: pre;\n }\n\n ${(props) =>\n !!props.truncate &&\n `\n overflow: hidden;\n position: relative;\n display: -webkit-box;\n -webkit-line-clamp: ${props.truncate};\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n min-height: 1em;\n max-height: 3em;\n `}\n`;\n","import styled from 'styled-components';\nimport { IEditorialGridProps } from '../../../types/editorial';\nimport { devices } from '../../../styles/viewports';\n\nexport const EditorialGrid = styled.div<IEditorialGridProps>`\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n gap: var(--grid-column-gap);\n grid-template-areas: ${({ imageToLeft }) =>\n imageToLeft\n ? `'left left left left left . right right right right right right'`\n : `'left left left left left left . right right right right right'`};\n\n @media ${devices.mobile} {\n & {\n display: grid;\n grid-template-columns: 100%;\n grid-template-rows: min-content 24px min-content;\n grid-template-areas:\n 'row1'\n '.'\n 'row2';\n }\n }\n`;\n\nexport const EditorialImageWrapper = styled.div<IEditorialGridProps>`\n align-self: center;\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'left' : 'right')};\n @media ${devices.mobile} {\n & {\n grid-area: row1;\n }\n`;\n\nexport const EditorialTextWrapper = styled.div<IEditorialGridProps>`\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'right' : 'left')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n grid-area: row2;\n align-self: start;\n }\n`;\n\nexport const EditorialSubtitle = styled.span`\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n margin-bottom: var(--editorial-subtitle-margin-bottom);\n display: block;\n overflow-wrap: break-word;\n`;\n\nexport const EditorialText = styled.div`\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n em {\n font-family: var(--font-family-body-italics);\n }\n`;\n","import styled from 'styled-components';\nimport { IInformationBackgroundColour, IInformationCtaVariant } from '../../../types/information';\nimport { Grid } from '../../atoms/Grid';\n\nexport const InfoContent = styled('div')`\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n -webkit-letter-spacing: var(--letter-spacing-altHeader-6);\n -moz-letter-spacing: var(--letter-spacing-altHeader-6);\n -ms-letter-spacing: var(--letter-spacing-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n word-break: var(--word-break-altHeader);\n`;\n\nexport const InfoTitle = styled('div')`\n * {\n margin-block: 0;\n }\n`;\n\nexport const InfoCTAWrapper = styled('div')<{ variant: IInformationCtaVariant; infoThemed: boolean }>`\n margin: 32px 0;\n\n ${(props) => {\n if (!props.infoThemed) {\n return '';\n }\n if (props.variant === IInformationCtaVariant.Primary || props.variant === IInformationCtaVariant.Secondary) {\n return `a {\n color: var(--base-color-black);\n background: var(--base-color-white);\n border-color: var(--base-color-transparent);\n }`;\n }\n return `a {\n color: var(--base-color-white);\n background: var(--base-color-transparent});\n }\n svg > path {\n fill: var(--base-color-white);\n stroke: var(--base-color-white);\n stroke-width: 1;\n }\n `;\n }}}\n`;\n\nexport const InfoWrapper = styled(Grid)<{ background: IInformationBackgroundColour }>`\n padding: 60px 0;\n color: ${(props) =>\n props.background !== IInformationBackgroundColour.White ? 'var(--base-color-white)' : 'var(--base-color-black)'};\n background: ${(props) => `var(--base-color-${props.background})`}\n }};\n`;\n\nexport const InfoBodyWrapper = styled('div')<{ background: IInformationBackgroundColour }>`\n a {\n text-decoration: underline;\n color: ${(props) =>\n props.background === IInformationBackgroundColour.White ? 'var(--base-color-black)' : 'var(--base-color-white)'};\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport { IInformationCTAProps, IInformationCtaVariant, IInformationCtaTheme } from '../../../types/information';\nimport { Colors, LinkTarget } from '../../../types/types';\nimport { PrimaryButton, SecondaryButton, TertiaryButton, TextLink } from '../../atoms';\nimport { InfoCTAWrapper } from './Information.style';\nimport { DirectionType, IconNameType } from '../../../types/iconTypes';\n\ntype RenderButtonProps = {\n variant: IInformationCtaVariant;\n theme: IInformationCtaTheme;\n link: string;\n text: string;\n iconName?: IconNameType;\n iconDirection?: DirectionType;\n target: LinkTarget;\n};\n\n// Helper function for rendering buttons based on the variant\nconst renderButton = ({ variant, theme, link, text, iconName, iconDirection, target }: RenderButtonProps) => {\n switch (variant) {\n case IInformationCtaVariant.Secondary:\n return (\n <SecondaryButton\n color={Colors[theme]}\n href={link}\n iconName={iconName}\n iconDirection={iconDirection}\n target={target}\n aria-label={text}\n >\n {text}\n </SecondaryButton>\n );\n case IInformationCtaVariant.Tertiary:\n return (\n <TertiaryButton\n color={Colors.Black}\n href={link}\n iconName={iconName}\n iconDirection={iconDirection}\n target={target}\n aria-label={text}\n >\n {text}\n </TertiaryButton>\n );\n case IInformationCtaVariant.TextLink:\n return (\n <TextLink\n color={Colors.Black}\n href={link}\n iconName={iconName}\n iconDirection={iconDirection}\n target={target}\n aria-label={text}\n >\n {text}\n </TextLink>\n );\n default:\n return (\n <PrimaryButton\n bgColor={Colors[theme]}\n href={link}\n iconName={iconName}\n iconDirection={iconDirection}\n target={target}\n aria-label={text}\n >\n {text}\n </PrimaryButton>\n );\n }\n};\n\nexport const InfoCta: FunctionComponent<IInformationCTAProps> = ({\n variant = IInformationCtaVariant.Primary,\n theme = IInformationCtaTheme.Core,\n link,\n text,\n iconName,\n iconDirection,\n infoThemed,\n target = LinkTarget.Self,\n}): React.ReactElement => {\n return (\n <InfoCTAWrapper variant={variant} infoThemed={infoThemed} theme={theme}>\n {renderButton({ variant, theme, link, text, iconName, iconDirection, target })}\n </InfoCTAWrapper>\n );\n};\n\nexport default InfoCta;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { Grid } from '../../atoms/Grid';\n\nexport interface IPageHeadingWrapperProps {\n isPageHeadingWithoutTitle?: boolean;\n}\n\nexport const PageHeadingWrapper = styled.div<IPageHeadingWrapperProps>`\n padding-bottom: 80px;\n background-color: ${({ theme }) => theme.colors.primary};\n color: var(--base-color-white);\n\n ${({ isPageHeadingWithoutTitle }) =>\n isPageHeadingWithoutTitle &&\n `\n padding-bottom: 42px;\n `};\n\n // remove spacing above/below for all semantic levels of the title\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0;\n padding: 0;\n }\n\n @media ${devices.mobile} {\n padding-bottom: 0;\n }\n`;\n\nexport const PageHeadingGrid = styled(Grid)`\n gap: 0 var(--grid-column-gap);\n grid-template-rows: min-content min-content;\n grid-template-areas:\n '. . title title title title title title title title title title . . logo .'\n '. . text text text text text text text text text button button button . .';\n\n @media ${devices.mobile} {\n & {\n grid-template-rows: 20px min-content min-content min-content 20px;\n grid-template-areas:\n '. . . . . . . . . . . . . .'\n '. title title title title title title title title title title logo logo .'\n '. text text text text text text text text text text text text .'\n '. button button button button button button button button button button button button .'\n '. . . . . . . . . . . . . .';\n }\n }\n\n @media ${devices.tablet} {\n & {\n grid-template-areas:\n '. title title title title title title title title title title logo logo .'\n '. text text text text text text text text text button button button .';\n }\n }\n`;\n\nexport const TitleWrapper = styled.div<IPageHeadingWrapperProps>`\n grid-area: title;\n margin-top: 80px;\n\n ${({ isPageHeadingWithoutTitle }) =>\n isPageHeadingWithoutTitle &&\n `\n margin-top: 42px;\n `};\n\n @media ${devices.mobile} {\n & {\n margin-top: 0;\n }\n }\n`;\n\nexport const ChildrenWrapper = styled.div<IPageHeadingWrapperProps>`\n margin-bottom: 20px;\n width: fit-content;\n height: 43px;\n\n ${({ isPageHeadingWithoutTitle }) =>\n isPageHeadingWithoutTitle &&\n `\n margin: 10px 0;\n `};\n\n @media ${devices.mobile} {\n & {\n height: 33px;\n margin-top: 10px;\n margin-bottom: 20px;\n }\n }\n`;\n\nexport const TextWrapper = styled.div`\n grid-area: text;\n align-self: end;\n margin-top: 12px;\n\n h6 {\n margin: 0;\n padding: 0;\n }\n`;\n\nexport const LogoWrapper = styled.div`\n grid-area: logo;\n justify-self: end;\n margin-top: 20px;\n position: relative;\n\n > div {\n position: absolute;\n top: 0;\n right: 0;\n }\n\n @media ${devices.mobile} {\n & {\n align-self: start;\n margin-top: 0;\n }\n }\n`;\n\nexport const ButtonWrapper = styled.div`\n grid-area: button;\n justify-self: end;\n align-self: end;\n\n @media ${devices.mobile} {\n & {\n justify-self: center;\n align-self: center;\n width: 100%;\n margin-top: 16px;\n }\n }\n`;\n\nexport const PageHeadingText = styled.div`\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-family: var(--font-family-altHeader);\n text-transform: var(--text-transform-altHeader);\n word-break: var(--word-break-altHeader);\n`;\n","import React, { FunctionComponent } from 'react';\nimport { IPageHeadingProps } from '../../../types/editorial';\nimport { Header } from '../../atoms/Typography';\nimport { PrimaryButton } from '../../atoms/Buttons';\nimport Sponsorship from '../../atoms/Sponsorship';\nimport {\n PageHeadingWrapper,\n PageHeadingGrid,\n TitleWrapper,\n TextWrapper,\n LogoWrapper,\n ButtonWrapper,\n ChildrenWrapper,\n PageHeadingText,\n} from './PageHeading.style';\n\nconst PageHeading: FunctionComponent<IPageHeadingProps> = ({\n title,\n text,\n link,\n sponsor = false,\n children,\n semanticLevel = 1,\n copyCharLimit = 250,\n titleCharLimit = 40,\n}) => {\n const { text: linkText, ...restLink } = link || {};\n const truncatedText = text?.substring(0, copyCharLimit);\n const truncatedTitle = title?.substring(0, titleCharLimit);\n const isTitleUnAvailable = !title;\n\n return (\n <PageHeadingWrapper data-testid=\"page-heading-wrapper\" isPageHeadingWithoutTitle={isTitleUnAvailable}>\n <PageHeadingGrid>\n <TitleWrapper data-testid=\"page-heading-title\" isPageHeadingWithoutTitle={isTitleUnAvailable}>\n {children ? (\n <ChildrenWrapper isPageHeadingWithoutTitle={isTitleUnAvailable}>{children}</ChildrenWrapper>\n ) : null}\n {!isTitleUnAvailable && (\n <Header level={2} semanticLevel={semanticLevel}>\n {truncatedTitle}\n </Header>\n )}\n </TitleWrapper>\n {text ? (\n <TextWrapper data-testid=\"page-heading-text\">\n <PageHeadingText dangerouslySetInnerHTML={{ __html: truncatedText as string }} />\n </TextWrapper>\n ) : null}\n {sponsor ? (\n <LogoWrapper data-testid=\"page-heading-sponsor\">\n <Sponsorship />\n </LogoWrapper>\n ) : null}\n {link ? (\n <ButtonWrapper data-testid=\"page-heading-link\">\n <PrimaryButton {...restLink}>{linkText}</PrimaryButton>\n </ButtonWrapper>\n ) : null}\n </PageHeadingGrid>\n </PageHeadingWrapper>\n );\n};\n\nexport default PageHeading;\n","import styled from 'styled-components';\nimport { devices } from '../../../../styles/viewports';\nimport { IImpactWrappersStyledProps } from '../../../../types/editorial';\nimport { Grid } from '../../../atoms/Grid';\nimport zIndexes from '../../../../styles/zIndexes';\n\nexport const ImpactWrapper = styled.div<IImpactWrappersStyledProps>`\n aspect-ratio: 16 / 9;\n @supports not (aspect-ratio: 16 / 9) {\n height: 56.25vw;\n }\n\n position: relative;\n display: flex;\n background: var(--base-color-black);\n\n @media ${devices.mobile} {\n aspect-ratio: 1 / 1;\n @supports not (aspect-ratio: 1 / 1) {\n height: 100vw;\n }\n }\n`;\n\nexport const ImpactHeaderImageWrapper = styled.div`\n width: 100%;\n overflow: hidden;\n aspect-ratio: 16 / 9;\n @supports not (aspect-ratio: 16 / 9) {\n height: 56.25vw;\n }\n\n img {\n width: 100%;\n filter: brightness(0.7);\n opacity: 0.95;\n }\n\n @media ${devices.mobile} {\n height: fit-content;\n aspect-ratio: 1 / 1;\n @supports not (aspect-ratio: 1 / 1) {\n height: 100vw;\n }\n\n img {\n height: 100%;\n object-fit: cover;\n }\n }\n`;\n\nexport const ImpactGrid = styled(Grid)`\n position: absolute;\n align-self: center;\n width: 100%;\n z-index: ${zIndexes.contentOverlay};\n gap: 0 var(--grid-column-gap);\n grid-template-rows: min-content min-content min-content;\n grid-template-areas:\n '. . . . . logo logo logo logo logo logo . . . . .'\n '. . . text text text text text text text text text text . . .'\n '. . . button button button button button button button button button button . . .';\n\n @media ${devices.mobile} {\n & {\n height: 100%;\n grid-template-rows: 1fr max-content 1fr;\n grid-template-areas:\n '. . . logo logo logo logo logo logo logo logo . . .'\n '. text text text text text text text text text text text text .'\n '. button button button button button button button button button button button button .';\n }\n }\n\n @media ${devices.tablet} {\n align-content: center;\n\n & {\n grid-template-areas:\n '. . . logo logo logo logo logo logo logo logo . . .'\n '. . text text text text text text text text text text . .'\n '. . button button button button button button button button button button . .';\n }\n }\n`;\n\nexport const SponsorWrapper = styled.div`\n position: absolute;\n top: 20px;\n right: var(--grid-outer-margin);\n width: fit-content;\n z-index: ${zIndexes.sponsorship};\n\n @media ${devices.mobileAndTablet} {\n & {\n right: var(--grid-margin);\n }\n }\n`;\n\nexport const LogoWrapper = styled.div`\n grid-area: logo;\n align-self: end;\n`;\n\nexport const TextWrapper = styled.div`\n grid-area: text;\n color: var(--base-color-white);\n text-align: center;\n margin-top: 40px;\n max-height: calc(2 * var(--line-height-header-3));\n overflow: hidden;\n\n h3 {\n margin: 0;\n padding: 0;\n }\n\n @media ${devices.tablet} {\n & {\n max-height: calc(4 * var(--line-height-header-3));\n }\n }\n\n @media ${devices.mobile} {\n & {\n margin-top: 12px;\n max-height: calc(4 * var(--line-height-header-3));\n }\n\n h3 {\n font-size: var(--font-size-header-3);\n letter-spacing: var(--letter-spacing-header-5);\n line-height: var(--line-height-header-5);\n }\n }\n`;\n\nexport const ButtonWrapper = styled.div`\n grid-area: button;\n align-self: end;\n display: flex;\n justify-content: center;\n margin-top: 40px;\n\n @media ${devices.mobile} {\n & {\n margin-top: 0px;\n margin-bottom: 20px;\n }\n }\n`;\n\nexport const ScrollDownWrapper = styled.div`\n position: absolute;\n bottom: 20px;\n left: var(--grid-outer-margin);\n width: fit-content;\n z-index: ${zIndexes.contentOverlay};\n\n @keyframes UpDown {\n 0%,\n 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(8px);\n }\n }\n\n a {\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n border: none;\n padding: 0;\n :hover {\n border: none;\n\n > span {\n animation: UpDown 1500ms linear infinite;\n }\n }\n }\n\n @media ${devices.mobile} {\n & {\n display: none;\n }\n }\n\n @media ${devices.tablet} {\n & {\n display: none;\n }\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../../styles/viewports';\nimport { Colors } from '../../../../types';\nimport { Grid } from '../../../atoms';\n\nexport const PanelGrid = styled(Grid)<{ color: string | undefined }>`\n gap: 0 var(--grid-column-gap);\n\n ${({ color }) => `\n background-color: ${color ? `var(--base-color-${color})` : 'var(--base-color-core)'};\n color: ${color === Colors.White ? 'var(--base-color-black)' : 'var(--base-color-white)'};\n `}\n\n @media ${devices.mobileAndTablet} {\n grid-template-rows: 48px max-content max-content;\n }\n`;\n\nexport const LeftPanel = styled.div<{ hasImage: boolean }>`\n grid-area: ${({ hasImage }) => (hasImage ? '1 / 1 / 3 / 7' : '1 / 1 / 3 / 12')};\n box-sizing: border-box;\n height: 100%;\n display: grid;\n grid-auto-rows: 90% 1fr;\n gap: 0px 36px;\n align-items: center;\n\n @media ${devices.mobileAndTablet} {\n grid-area: ${({ hasImage }) => (hasImage ? '3 / 1 / 4 / 15' : '1 / 1 / 3 / 15')};\n }\n`;\n\nexport const RightPanel = styled.div`\n grid-area: 1 / 7 / 3 / 17;\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--base-color-black);\n\n @media ${devices.mobileAndTablet} {\n grid-area: 2 / 1 / 3 / 15;\n }\n`;\n\nexport const InfoWrapper = styled.div`\n margin: 36px;\n max-height: 33vw;\n overflow: hidden;\n\n :first-child * {\n margin-block-start: 0;\n }\n\n @media ${devices.mobileAndTablet} {\n margin: 36px 20px;\n max-height: unset;\n }\n`;\n\nexport const ScrollDownWrapper = styled.div`\n padding: 0 0 25px 36px;\n\n @keyframes UpDown {\n 0%,\n 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(8px);\n }\n }\n\n a {\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n border: none;\n padding: 0;\n\n :hover {\n border: none;\n\n > span {\n animation: UpDown 1500ms linear infinite;\n }\n }\n }\n\n @media ${devices.mobileAndTablet} {\n display: none;\n }\n`;\n","import styled from 'styled-components';\n\nexport const StreamWrapper = styled.div`\n h2::selection,\n div::selection {\n color: #1866dc;\n background-color: #fff;\n }\n`;\n","import styled, { css } from 'styled-components';\nimport { devices } from '../../../../styles/viewports';\nimport { Colors } from '../../../../types';\nimport { Grid } from '../../../atoms/Grid';\nimport { PrimaryButton } from '../../../atoms';\n\ntype WithInversion = {\n invert: boolean;\n theme: {\n colors: Colors;\n };\n};\n\nconst BrandingTextBlock = styled.div`\n font-size: var(--font-size-body-2);\n font-family: var(--font-family-header);\n text-transform: uppercase;\n margin: 0;\n white-space: nowrap;\n @media screen and (max-width: 920px) {\n white-space: normal;\n }\n @media ${devices.mobile} {\n white-space: nowrap;\n }\n`;\n\nconst BrandingTextBody = styled.div`\n font-family: var(--font-family-body);\n font-size: var(--font-size-heading-6);\n line-height: var(--line-height-heading-6);\n`;\n\nconst ComapctHeaderWrapper = styled.div`\n position: relative;\n display: block;\n`;\n\nconst ComapctHeaderGrid = styled(Grid)`\n gap: 0 var(--grid-column-gap);\n grid-template-rows: min-content min-content;\n`;\n\nconst CompactHeaderAssetWrapper = styled.div`\n height: 37.5vw;\n width: 100%;\n position: relative;\n overflow: hidden;\n background-color: #000;\n img {\n position: relative;\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n video {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n object-fit: contain;\n @media ${devices.mobile} {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n margin: auto;\n height: auto;\n max-height: 100vh;\n width: 100%;\n object-fit: contain;\n }\n }\n @media ${devices.mobile} {\n height: 85vw;\n max-height: 100vh;\n }\n`;\n\nconst CompactHeaderCopyWrapper = styled(Grid)<WithInversion>`\n position: relative;\n height: 160px;\n grid-template-rows: min-content min-content;\n grid-template-rows: min-content min-content;\n grid-template-columns: [logo] 1fr [title] 3fr [cta] 1fr;\n align-content: center;\n gap: 0;\n background-color: ${({ invert, theme }) => (invert ? theme.colors.white : theme.colors.primary)};\n color: ${({ invert, theme }) => (invert ? theme.colors.black : theme.colors.white)};\n\n svg {\n width: 210px;\n fill: ${({ invert, theme }) => (invert ? theme.colors.black : theme.colors.white)};\n }\n\n h1::selection,\n div::selection {\n ${({ theme }) =>\n theme.colors.primary === theme.colors.stream &&\n `\n color: ${theme.colors.stream};\n background-color: ${theme.colors.white};\n `};\n }\n\n @media ${devices.tablet} {\n svg {\n width: 145px;\n }\n }\n\n @media ${devices.mobile} {\n display: flex;\n flex-direction: column;\n height: auto;\n padding: 32px 20px;\n\n svg {\n width: 180px;\n }\n }\n`;\n\nconst CompactHeaderLogoWrapper = styled.div`\n display: flex;\n grid-area: logo;\n padding-left: 50px;\n justify-content: left;\n align-items: center;\n width: 100%;\n @media ${devices.mobile} {\n padding-left: 0px;\n justify-content: center;\n }\n @media ${devices.tablet} {\n width: fit-content;\n }\n`;\n\nconst CompactHeaderTitleWrapper = styled.div`\n display: flex;\n grid-area: title;\n align-items: center;\n justify-content: center;\n font-family: var(--font-family-header);\n text-transform: uppercase;\n text-align: center;\n padding: 0 2em;\n @media ${devices.mobile} {\n justify-content: center;\n }\n`;\n\nconst CompactHeaderCTAWrapper = styled.div`\n display: flex;\n grid-area: cta;\n justify-content: right;\n align-items: center;\n padding-right: 50px;\n @media ${devices.mobile} {\n padding-right: 0px;\n justify-content: center;\n }\n`;\n\nconst PrimaryButtonWithInversion = styled(PrimaryButton)<WithInversion>`\n background-color: ${({ invert, theme }) => (invert ? theme.colors.primary : theme.colors.white)};\n color: ${({ invert, theme }) => (invert ? theme.colors.white : theme.colors.black)};\n svg {\n fill: ${({ invert, theme }) => (invert ? theme.colors.white : theme.colors.black)};\n path {\n fill: ${({ invert, theme }) => (invert ? theme.colors.white : theme.colors.black)};\n }\n }\n min-width: 145px;\n`;\nconst PlayButton = styled.button`\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background-color: #fff;\n border: none;\n padding: 12px;\n`;\n\nconst VideoControlsWrapper = styled.div`\n position: absolute;\n left: 50px;\n bottom: 24px;\n display: flex;\n align-items: center;\n @media ${devices.mobile} {\n left: 20px;\n bottom: 12px;\n }\n`;\n\nconst VideoVolume = styled.input`\n width: 100px;\n margin-left: 24px;\n`;\n\nconst VideoMute = styled.button`\n width: 17px;\n height: 17px;\n background: none;\n border: none;\n padding: 0;\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\nconst thumbStyes = css`\n -webkit-appearance: none;\n appearance: none;\n border: none;\n height: 8px;\n width: 8px;\n border-radius: 50%;\n background: #ffffff;\n border: none;\n transform: translateY(-25%);\n`;\n\nconst trackStyles = css`\n width: 100%;\n cursor: pointer;\n height: 4px;\n cursor: pointer;\n background: rgb(241, 241, 241, 0.5);\n border-radius: 1.3px;\n border: none;\n`;\n\nconst VolumeControlsWrapper = styled.div`\n display: flex;\n margin: 12px 12px;\n padding: 0;\n background-color: rgb(26, 26, 26, 0.6);\n height: 36px;\n width: 100px;\n align-items: center;\n justify-content: center;\n\n /* Range slider overrides */\n input[type='range' i] {\n -webkit-appearance: none;\n appearance: none;\n width: 42px;\n margin: 0;\n margin-left: 7px;\n background: transparent; /* Otherwise white in Chrome */\n\n ::-webkit-slider-runnable-track {\n ${trackStyles}\n }\n ::-moz-range-track {\n ${trackStyles}\n }\n ::-ms-track {\n ${trackStyles}\n }\n ::-ms-fill-lower {\n ${trackStyles}\n }\n ::-ms-fill-upper {\n ${trackStyles}\n }\n\n ::-webkit-slider-thumb {\n ${thumbStyes}\n }\n ::-moz-range-thumb {\n ${thumbStyes}\n transform: translateY(0);\n }\n ::-ms-thumb {\n ${thumbStyes}\n }\n }\n`;\n\nexport {\n BrandingTextBlock,\n BrandingTextBody,\n ComapctHeaderWrapper,\n ComapctHeaderGrid,\n CompactHeaderAssetWrapper,\n CompactHeaderCopyWrapper,\n CompactHeaderLogoWrapper,\n CompactHeaderTitleWrapper,\n CompactHeaderCTAWrapper,\n PrimaryButtonWithInversion,\n PlayButton,\n VideoControlsWrapper,\n VideoVolume,\n VideoMute,\n VolumeControlsWrapper,\n};\n","import React, { FunctionComponent } from 'react';\nimport { BrandingTextBlock, BrandingTextBody, CompactHeaderLogoWrapper } from '../Compact.style';\nimport { TextLink, StreamBadge, CinemaBadge } from '../../../../atoms';\nimport { Colors } from '../../../../../types';\nimport { stripAllHtmlTags, truncate, truncateHtmlString } from '../../../../../helpers/htmlStrings';\nimport { BrandingStyle } from '../../../../../types/impactHeader';\nimport { useSameSiteUrl } from '../../../../../helpers/urls';\n\ninterface IBrandingProps {\n brandingStyle: BrandingStyle;\n brandingLink?: string;\n brandingText?: string;\n invert: boolean;\n}\n\nconst renderBranding = (\n brandingStyle: BrandingStyle,\n invert: boolean,\n brandingText?: string,\n brandingLink?: string\n) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const sameSiteUrl = brandingLink && useSameSiteUrl(brandingLink);\n const target = sameSiteUrl ? '_self' : '_blank';\n const color = invert ? Colors.Black : Colors.White;\n switch (brandingStyle) {\n case 'BlockText':\n return (\n brandingText?.trim() && <BrandingTextBlock>{truncate(stripAllHtmlTags(brandingText), 25)}</BrandingTextBlock>\n );\n case 'BodyText':\n return (\n brandingText?.trim() && (\n <BrandingTextBody dangerouslySetInnerHTML={{ __html: truncateHtmlString(brandingText, 65) }} />\n )\n );\n case 'TextLink':\n return (\n brandingText?.trim() &&\n brandingLink && (\n <TextLink target={target} href={brandingLink} color={color}>\n {truncate(stripAllHtmlTags(brandingText), 25)}\n </TextLink>\n )\n );\n case 'StreamLogo':\n return <StreamBadge invert={invert} />;\n case 'CinemaLogo':\n return <CinemaBadge invert={invert} />;\n default:\n return null;\n }\n};\n\nconst CompactHeaderBranding: FunctionComponent<IBrandingProps> = ({\n brandingStyle,\n invert = false,\n brandingText,\n brandingLink,\n}) => {\n return (\n <CompactHeaderLogoWrapper>\n {renderBranding(brandingStyle, invert, brandingText, brandingLink)}\n </CompactHeaderLogoWrapper>\n );\n};\n\nexport default CompactHeaderBranding;\n","import { useEffect, useState } from 'react';\n\n// Function to check if a URL is from the same site\n// NOTE: This function is not SSR compatible\nexport const isSameSiteUrl = (url: string) => {\n if (url[0] === '/') return true; // URL is relative (e.g. /about)\n if (!window?.location) return false; // window.location is not available (e.g. in SSR)\n const currentPageURL = window.location.href || '';\n const regexPattern = /^(https?:\\/\\/)?(www\\d?\\.)?([\\w.-]+)\\.\\w+.*$/;\n const match = url.match(regexPattern);\n if (match?.[3] && currentPageURL) {\n const urlDomain = match[3]; // Extract the domain from the third capture group\n const currentMatch = currentPageURL.match(regexPattern);\n if (currentMatch) {\n const currentDomain = currentMatch[3];\n return urlDomain === currentDomain;\n }\n }\n\n return false; // URL didn't match the pattern\n};\n\n// Hook to check if a URL is from the same site - use for SSR\nexport const useSameSiteUrl = (url: string) => {\n const [hasSameSiteUrl, setSameSiteUrl] = useState(false);\n useEffect(() => {\n setSameSiteUrl(isSameSiteUrl(url));\n }, [url]);\n return hasSameSiteUrl;\n};\n","import { useEffect, useState } from 'react';\nimport { breakpoints } from '../styles/viewports';\n\n// WARNING: Do not use this on server side rendering, it may throw an error.\nconst isIOS = (): boolean => {\n try {\n console.warn('Do not use this on server side rendering, it may throw an error.');\n if (typeof navigator === undefined) return false;\n return (\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document)\n );\n } catch (e) {\n console.warn('Error checking if device is iOS.', e);\n return false;\n }\n};\n\n// React hook version of isIOS (for server side rendering)\nexport const useIOS = (): boolean => {\n const [IOS, setIOS] = useState(false);\n useEffect(() => {\n if (typeof navigator === undefined) return;\n setIOS(isIOS());\n }, []);\n return IOS;\n};\n\n// Checks device size based on window width\nexport const isMobile = (): boolean => {\n try {\n console.warn('Do not use this on server side rendering, it may throw an error.');\n if (typeof window === undefined) return false;\n return window.innerWidth < breakpoints.sm;\n } catch (e) {\n console.warn('Error checking if device is mobile.', e);\n return false;\n }\n};\n\n// React hook version of isMobile (for server side rendering)\nexport const useMobile = (): boolean => {\n const [mobile, setMobile] = useState(false);\n useEffect(() => {\n if (typeof window === undefined) return;\n setMobile(isMobile());\n }, []);\n return mobile;\n};\n","import React, { FunctionComponent, useEffect, useState } from 'react';\nimport { devices } from '../../../../styles/viewports';\nimport { IPageHeadingCompactProps } from '../../../../types/impactHeader';\nimport { Sponsorship, VideoControls, Header } from '../../../atoms';\nimport { SponsorWrapper } from '../Impact/Impact.style';\nimport {\n ComapctHeaderWrapper,\n CompactHeaderAssetWrapper,\n CompactHeaderCopyWrapper,\n CompactHeaderTitleWrapper,\n CompactHeaderCTAWrapper,\n PrimaryButtonWithInversion,\n} from './Compact.style';\nimport CompactHeaderBranding from './components/CompactHeaderBranding';\nimport { truncate } from '../../../../helpers/htmlStrings';\nimport { useIOS, useMobile } from '../../../../helpers/devices';\n\ntype VideoPoster = {\n desktop?: string;\n mobile?: string;\n alt: string;\n};\n\ntype Video = {\n elementId: string;\n desktop?: string;\n mobile?: string;\n};\n\ninterface IVideoProps {\n video: Video;\n poster: VideoPoster;\n}\n\nconst useResponsiveVideo = (video: Video, poster: VideoPoster) => {\n const mobileVideo = video.mobile || video.desktop;\n const desktopVideo = video.desktop || video.mobile;\n const mobilePoster = poster.mobile || poster.desktop;\n const desktopPoster = poster.desktop || poster.mobile;\n const [posterUrl, setPoster] = useState(desktopPoster);\n const [videoUrl, setVideoUrl] = useState(desktopVideo);\n const isMobile = useMobile();\n\n useEffect(() => {\n setPoster(isMobile ? mobilePoster : desktopPoster);\n setVideoUrl(isMobile ? mobileVideo : desktopVideo);\n }, [isMobile]);\n\n return { posterUrl, videoUrl };\n};\n\nconst VideoWithControls: FunctionComponent<IVideoProps> = ({ video, poster }) => {\n const { posterUrl, videoUrl } = useResponsiveVideo(video, poster);\n const isIOS = useIOS();\n return (\n <>\n <video\n id={video.elementId}\n width=\"100%\"\n height=\"100%\"\n muted\n poster={posterUrl}\n src={videoUrl}\n data-testid=\"compact-video\"\n playsInline\n >\n <source src={videoUrl} />\n <img src={posterUrl} alt={poster.alt} data-testid=\"compact-image\" />\n </video>\n <VideoControls loop videoElementId={video.elementId} muted autoPlay={false} soundControl={!isIOS} />\n </>\n );\n};\n\nconst CompactHeaderImage: FunctionComponent<VideoPoster> = ({ mobile, desktop, alt }) => {\n return (\n <picture data-testid=\"compact-picture\">\n {mobile && <source srcSet={mobile} media={`${devices.mobile}`} data-testid=\"compact-mobile-image-source\" />}\n <source srcSet={desktop} media={`${devices.desktop}`} data-testid=\"compact-desktop-image-source\" />\n <img src={desktop} alt={alt} data-testid=\"compact-image\" />\n </picture>\n );\n};\n\nconst CompactHeaderVideo: FunctionComponent<IVideoProps> = ({ video, poster }) => {\n if (!video.desktop && !video.mobile) {\n return <CompactHeaderImage {...poster} />;\n }\n return <VideoWithControls video={video} poster={poster} />;\n};\n\nconst PageHeadingCompact: FunctionComponent<IPageHeadingCompactProps> = ({\n title,\n link,\n sponsor = true,\n customSponsorImage,\n bgUrlDesktop,\n bgUrlDevice,\n videoUrlDesktop,\n videoUrlMobile,\n bgImageAltText = '',\n invert = false,\n brandingStyle = 'BlockText',\n brandingText,\n brandingLink,\n showCopy = true,\n semanticLevel = 1,\n}) => {\n const { text: linkText, ...restLink } = link || {};\n const titleSize = title && title.length > 20 ? 4 : 3;\n const video = {\n elementId: 'compact-header-video',\n desktop: videoUrlDesktop,\n mobile: videoUrlMobile,\n };\n const poster = {\n desktop: bgUrlDesktop,\n mobile: bgUrlDevice,\n alt: bgImageAltText,\n };\n return (\n <ComapctHeaderWrapper>\n {sponsor ? (\n <SponsorWrapper data-testid=\"compact-sponsor\">\n {customSponsorImage ? (\n <Sponsorship data-testid=\"compact-custom-sponsor\" {...customSponsorImage} isCustomImage />\n ) : (\n <Sponsorship />\n )}\n </SponsorWrapper>\n ) : null}\n <CompactHeaderAssetWrapper>\n <CompactHeaderVideo video={video} poster={poster} />\n </CompactHeaderAssetWrapper>\n {showCopy && (\n <CompactHeaderCopyWrapper className=\"page-heading-compact__background\" invert={invert}>\n <CompactHeaderBranding\n brandingStyle={brandingStyle}\n brandingText={brandingText}\n brandingLink={brandingLink}\n invert={invert}\n />\n <CompactHeaderTitleWrapper>\n <Header level={titleSize} semanticLevel={semanticLevel}>\n {title && truncate(title, 40)}\n </Header>\n </CompactHeaderTitleWrapper>\n {link && (\n <CompactHeaderCTAWrapper>\n <PrimaryButtonWithInversion {...restLink} invert={invert} className=\"page-heading-compact__button\">\n {linkText}\n </PrimaryButtonWithInversion>\n </CompactHeaderCTAWrapper>\n )}\n </CompactHeaderCopyWrapper>\n )}\n </ComapctHeaderWrapper>\n );\n};\n\nexport default PageHeadingCompact;\n","import styled from 'styled-components';\n\nexport const MorePages = styled.span`\n cursor: not-allowed;\n pointer-events: none;\n`;\n\nexport const PageNumberWrapper = styled.ol`\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 40px;\n margin-bottom: 40px;\n flex-wrap: nowrap;\n flex-direction: row;\n list-style: none;\n padding: 0;\n max-width: fit-content;\n margin: auto;\n li {\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n margin-left: 16px;\n color: var(--base-color-dark-grey);\n display: flex;\n align-items: center;\n border-bottom: 1px solid rgba(0, 0, 0, 0);\n }\n`;\n\n// PageNumber extends bodyText but uses subtitle-1 font size\nexport const PageNumber = styled.a<{ active?: string }>`\n color: inherit;\n margin: 0;\n border-bottom: 1px solid transparent;\n line-height: var(--base-line-height);\n text-decoration: none;\n font-family: var(--font-family-body-1);\n :hover {\n color: var(--base-color-core);\n border-bottom: 1px solid var(--base-color-core);\n svg > path {\n fill: var(--base-color-core);\n }\n }\n /* active state - string used because react returns error for bool */\n ${({ active }) =>\n active === 'true' &&\n ` \n color: var(--base-color-core);\n `}\n`;\n\nexport const NextPage = styled(PageNumber)`\n display: inline-flex;\n width: 25px;\n align-items: center;\n justify-content: center;\n margin-left: 0;\n span {\n height: 1.5em;\n svg > path {\n fill: var(--base-color-dark-grey);\n }\n }\n`;\n","import React from 'react';\nimport { MorePages, NextPage, PageNumber, PageNumberWrapper } from './Pagination.style';\nimport { Icon } from '../../atoms';\n\nexport interface PageData {\n currentPage: number;\n pageCount: number;\n baseUrl: string;\n}\n\nexport const reducePages = (pages: number[], currentPage: number): number[] => {\n // If there are less than 6 pages, return all pages\n if (pages.length < 6) {\n return pages;\n }\n\n // If current page is more than 3 pages from the end, show last 6 pages\n if (currentPage + 3 > pages.length) {\n return pages.slice(pages.length - 6, pages.length);\n }\n\n // If current page is less than 3 pages from the start, show first 6 pages\n if (currentPage < 3) {\n return pages.slice(0, 6);\n }\n\n // Otherwise, show 3 pages before and 2 pages after\n return pages.slice(currentPage - 2, currentPage + 4);\n};\n\nconst Pagination = ({ pageCount, currentPage, baseUrl }: PageData): React.ReactElement => {\n // Array of page numbers starting at 1\n const pageNumbers = Array.from(Array(pageCount + 1).keys()).slice(1);\n const reducedPageNumbers = reducePages(pageNumbers, currentPage);\n return (\n <PageNumberWrapper>\n {\n // {/* Left arrow only appears after page 1 */\n currentPage > 1 && (\n <li key=\"previous-page\" data-testid=\"left-arrow\">\n <NextPage href={`${baseUrl}${currentPage - 1}`}>\n <Icon iconName=\"DropdownArrow\" direction=\"down\" />\n </NextPage>\n </li>\n )\n }\n {/* Dots for less appear beyond page 3 */}\n {currentPage > 3 && (\n <li key=\"more-before\" data-testid=\"elipsis\">\n <MorePages theme=\"core\">...</MorePages>\n </li>\n )}\n {reducedPageNumbers.map((page) => (\n <li key={page}>\n <PageNumber\n theme=\"core\"\n key={page}\n active={`${page === currentPage}`}\n href={`${baseUrl}${page}`}\n data-testid=\"page-number\"\n >\n {page}\n </PageNumber>\n </li>\n ))}\n {/* Dots for more appear if more than 3 pages ahead */}\n {currentPage + 4 < pageCount && (\n <li key=\"more-after\" data-testid=\"elipsis\">\n <MorePages theme=\"core\">...</MorePages>\n </li>\n )}\n {/* Right arrow appears if there are more pages */}\n {currentPage < pageCount && (\n <li key=\"next-page\" data-testid=\"right-arrow\">\n <NextPage href={`${baseUrl}${currentPage + 1}`}>\n <Icon iconName=\"DropdownArrow\" direction=\"up\" />\n </NextPage>\n </li>\n )}\n </PageNumberWrapper>\n );\n};\nexport default Pagination;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { Grid } from '../../atoms/Grid';\n\nexport const PeopleListingGrid = styled(Grid)`\n gap: var(--line-height-people-listing-gap) var(--grid-column-gap);\n\n p {\n margin: 0;\n }\n\n grid-template-columns: 1fr 1fr 1fr;\n\n @media ${devices.mobile} {\n grid-template-columns: 1fr;\n }\n\n @media ${devices.tablet} {\n grid-template-columns: 1fr 1fr;\n }\n\n @media ${devices.largeDesktop} {\n grid-template-columns: 1fr 1fr 1fr 1fr;\n }\n`;\n\nexport const PersonWrapper = styled.div`\n display: grid;\n grid-template-columns: 60px 1fr;\n grid-template-areas: 'headshot role-person';\n grid-column-gap: 10px;\n`;\n\nexport const HeadshotWrapper = styled.div`\n display: flex;\n grid-area: headshot;\n img {\n width: 60px;\n height: 60px;\n }\n`;\n\nexport const RoleWrapper = styled.div`\n color: var(--base-color-darkgrey);\n overflow-wrap: break-word;\n margin-bottom: 4px;\n`;\n\nexport const TextWrapper = styled.div`\n grid-area: role-person;\n break-inside: avoid;\n`;\n\nexport const PersonLink = styled.a`\n color: var(--base-color-black);\n text-decoration: underline;\n\n :hover {\n color: var(--base-color-primary);\n :after {\n color: var(--base-color-black);\n }\n }\n\n :visited {\n color: var(--base-color-black);\n }\n`;\n\nexport const ReplacementWrapper = styled.span`\n color: var(--base-color-darkgrey);\n`;\n","import React, { FunctionComponent } from 'react';\nimport { ListingPerson } from '../../../types/types';\nimport { PersonLink, ReplacementWrapper } from './PeopleListing.style';\nimport { BodyText } from '../../atoms';\n\nconst Person: FunctionComponent<{ person: ListingPerson; withSeparator: boolean }> = ({ person, withSeparator }) => {\n const { link, name, replacement, separator = ', ' } = person;\n const personSeparator = withSeparator ? separator : '';\n\n if (link) {\n return (\n <>\n <PersonLink href={link}>{name}</PersonLink>\n {personSeparator ? <span>{separator}</span> : null}\n </>\n );\n }\n\n return (\n <span>\n {name}\n\n {replacement && (\n <>\n {' '}\n <ReplacementWrapper>\n <BodyText level={1} tag=\"span\">\n {replacement}\n </BodyText>\n </ReplacementWrapper>\n </>\n )}\n\n {personSeparator}\n </span>\n );\n};\n\nexport default Person;\n","/* eslint-disable no-extra-boolean-cast */\nimport React from 'react';\nimport { IPeopleListing, ListingRole } from '../../../types/types';\nimport { GridItem } from '../../atoms/Grid';\nimport { Overline, BodyText } from '../../atoms/Typography';\nimport { HeadshotWrapper, PeopleListingGrid, PersonWrapper, RoleWrapper, TextWrapper } from './PeopleListing.style';\nimport Person from './Person';\n\nfunction hasHeadshot(role: ListingRole): number {\n return +(!!role.people[0].headshot && role.people[0].useHeadshot);\n}\n\nfunction textSection(role: ListingRole): JSX.Element {\n return (\n <TextWrapper>\n <RoleWrapper title=\"role\" data-roh={role.dataROH}>\n <Overline level={1}>{role.name}</Overline>\n </RoleWrapper>\n <BodyText level={1} tag=\"p\">\n {role.people.map((person, personIndex) => (\n <Person\n key={`${person.name}${personIndex}`}\n person={person}\n withSeparator={role.people.length !== personIndex + 1}\n />\n ))}\n </BodyText>\n </TextWrapper>\n );\n}\nconst PeopleListing = ({ roles }: IPeopleListing) => {\n return (\n <PeopleListingGrid>\n {roles\n .sort((a, b) => hasHeadshot(b) - hasHeadshot(a))\n .map((role, index) => {\n return (\n <GridItem key={`${role.name}-${index}`}>\n {!!hasHeadshot(role) ? (\n <PersonWrapper>\n <HeadshotWrapper>\n <img src={role.people[0].headshot} alt={role.people[0].name} />\n </HeadshotWrapper>\n {textSection(role)}\n </PersonWrapper>\n ) : (\n textSection(role)\n )}\n </GridItem>\n );\n })}\n </PeopleListingGrid>\n );\n};\n\nexport default PeopleListing;\n","import styled from 'styled-components';\nimport { PeopleListingGrid } from '../PeopleListing.style';\nimport { devices } from '../../../../styles/viewports';\n\nexport const ReplacementWrapper = styled.div`\n color: var(--base-color-darkgrey);\n`;\n\nexport const CreditListingWrapper = styled(PeopleListingGrid)<{ columnCount: number }>`\n p {\n line-height: 1.5;\n }\n\n grid-template-columns: ${({ columnCount }) => `repeat(${columnCount}, 1fr)`};\n\n @media ${devices.mobile} {\n grid-template-columns: 1fr;\n }\n\n @media ${devices.tablet} {\n grid-template-columns: repeat(2, 1fr);\n }\n`;\n\nexport const DescriptionWrapper = styled.div`\n color: var(--base-color-darkgrey);\n p {\n line-height: 25px;\n margin-bottom: 3px;\n }\n`;\n\nexport const RoleWrapper = styled.div`\n color: var(--base-color-darkgrey);\n overflow-wrap: break-word;\n min-height: 1.5em;\n`;\n\nexport const CreditWrapper = styled.div`\n display: grid;\n grid-template-columns: 0px 1fr;\n grid-template-areas: 'headshot role-person';\n grid-column-gap: 10px;\n`;\n","import styled, { css } from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\nimport { IEditorialGridProps } from '../../../types/editorial';\nimport { IPromoWithTagsStyledProps } from '../../../types/promoWithTags';\nimport { devices } from '../../../styles/viewports';\nimport TypeTags from '../../atoms/TypeTags/TypeTags';\nimport { Header, TextLink } from '../../atoms';\n\nconst LENGTH_TEXT = 28;\nconst LENGTH_TEXT_TABLET = 12;\n\nconst GridTemplateImageToLeft = `'left left left left left left left left . right right right right right . .'`;\nconst GridTemplateImageToRight = `'. . left left left left left . right right right right right right right right'`;\nconst GridTemplateAsCard = `'. . left left left left left right right right right right right right . . '`;\nconst GridTemplateAsCardTablet = `'. . left left left left left left left right right right right right . . '`;\n\nexport const PromoWithTagsGrid = styled(Grid)<IEditorialGridProps>`\n grid-template-areas: ${({ imageToLeft }) => (imageToLeft ? GridTemplateImageToLeft : GridTemplateImageToRight)};\n\n @media ${devices.tablet} {\n & {\n grid-template-areas: ${({ imageToLeft }) =>\n imageToLeft\n ? `'left left left left left left left right right right right right right .'`\n : `'. left left left left left left right right right right right right right'`};\n }\n }\n\n @media ${devices.mobile} {\n & {\n grid-template-columns: var(--grid-margin) minmax(0, 1fr) var(--grid-margin);\n grid-template-rows: min-content 24px min-content;\n gap: 0;\n grid-template-areas:\n 'row1 row1 row1'\n '. . .'\n '. row2 .';\n }\n }\n\n /* Overwrite template for card */\n ${({ asCard }) =>\n asCard\n ? `\n grid-template-areas: ${GridTemplateAsCard};\n @media ${devices.tablet} {\n grid-template-areas: ${GridTemplateAsCardTablet};\n }\n `\n : ``}\n`;\n\nexport const PromoWithTagsSubtitle = styled.span`\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n margin-bottom: var(--editorial-subtitle-margin-bottom);\n display: block;\n overflow-wrap: break-word;\n`;\n\nexport const PromoWithTagsText = styled.div`\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n h5,\n h6 {\n margin: 0 0 4px 0;\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n overflow-wrap: break-word;\n }\n\n em {\n font-family: var(--font-family-body-italics);\n }\n\n a {\n text-decoration: underline;\n cursor: pointer;\n\n &[href^='tel:'] {\n text-decoration: none;\n }\n\n &:link {\n color: ${({ theme }) => theme.colors.black};\n }\n\n &:visited {\n color: ${({ theme }) => theme.colors.darkgrey};\n }\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n }\n }\n`;\n\nexport const ButtonsContainer = styled.div<IEditorialGridProps>`\n display: flex;\n gap: 16px;\n margin-top: 24px;\n\n ${({ hasTextLinks }) => `margin-top: ${hasTextLinks ? '0' : '24px'};`};\n\n ${({ primaryButtonTextLength = 0, tertiaryButtonTextLength = 0 }) => {\n const isLinksLayoutColumn = primaryButtonTextLength >= LENGTH_TEXT || tertiaryButtonTextLength >= LENGTH_TEXT;\n\n if (isLinksLayoutColumn) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n\n @media ${devices.mobile} {\n gap: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ${devices.tablet} {\n gap: 24px;\n align-items: flex-start;\n\n ${({ primaryButtonTextLength = 0, tertiaryButtonTextLength = 0 }) => {\n const isLinksLayoutColumnTablet =\n primaryButtonTextLength >= LENGTH_TEXT_TABLET || tertiaryButtonTextLength >= LENGTH_TEXT_TABLET;\n\n if (isLinksLayoutColumnTablet) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n }\n`;\n\nexport const PromoWithTagsTagWrapper = styled.div<IPromoWithTagsStyledProps>`\n margin-bottom: ${({ marginBottom }) => `${marginBottom}px`};\n`;\n\nexport const PromoWithTagsAdditionalText = styled(PromoWithTagsText)`\n margin: 24px 0;\n`;\n\nexport const TextLinksContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n margin: 24px 0 4px 0;\n`;\n\nexport const TextLinkWrapper = styled.div`\n margin-right: 24px;\n margin-bottom: 20px;\n\n &:last-child {\n margin-right: 0;\n }\n`;\n\nexport const ExtraContentWrapper = styled.div`\n position: relative;\n padding-right: 68px;\n\n iframe {\n height: 800px;\n }\n\n @media ${devices.tablet} {\n padding: 30px 0 0;\n }\n\n @media ${devices.mobile} {\n padding: 0;\n position: initial;\n }\n`;\n\nexport const IconWrapper = styled.div`\n cursor: pointer;\n position: absolute;\n top: 25px;\n right: 35px;\n width: 24px;\n height: 24px;\n\n @media ${devices.tablet} {\n top: 30px;\n right: 30px;\n }\n\n @media ${devices.mobile} {\n top: 3px;\n right: 20px;\n }\n`;\n\nexport const PrimaryButtonWrapper = styled.div`\n height: var(--button-height);\n\n @media ${devices.mobile} {\n width: 100%;\n }\n`;\n\nexport const MobileTitleWrapper = styled.div`\n display: none;\n margin: 0 50px 0 20px;\n\n h2,\n h3 {\n margin: 0;\n }\n\n @media ${devices.mobile} {\n display: block;\n }\n`;\n\nexport const PromoWithTagsTypeTags = styled(TypeTags)``;\nexport const PromoWithTagsHeader = styled(Header)``;\nexport const PromoWithTagsTextLink = styled(TextLink)``;\nconst asCardOverrides = css`\n ${PromoWithTagsSubtitle} {\n font-size: var(--font-size-subtitle-2);\n }\n\n ${PromoWithTagsTypeTags} {\n font-size: var(--font-size-overline-1);\n }\n\n ${ButtonsContainer} {\n flex-direction: row;\n @media ${devices.tablet} {\n flex-direction: row;\n }\n }\n\n ${PromoWithTagsTextLink} {\n font-size: var(--font-size-overline-2);\n font-weight: var(--font-weight-overline-2);\n line-height: var(--line-height-overline-2);\n letter-spacing: var(--letter-spacing-overline-2);\n }\n`;\n\nexport const PromoWithTagsExtraContentWrapper = styled.div<IEditorialGridProps>`\n position: relative;\n grid-area: left;\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'left' : 'right')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n grid-area: row1;\n }\n }\n`;\n\nexport const PromoWithTagsContentWrapper = styled.div<IEditorialGridProps>`\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'right' : 'left')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n display: ${({ hideSection }) => (hideSection ? 'none' : 'block')};\n grid-area: row2;\n align-self: start;\n }\n }\n\n ${({ asCard }) => asCard && asCardOverrides}\n`;\n\nexport const PromoWithTagsContainer = styled.div`\n h2,\n h3 {\n margin: 0 0 16px;\n }\n`;\n\nexport const TimerWrapper = styled.div`\n margin-bottom: 32px;\n`;\n\nexport const EndDateText = styled.div`\n border-bottom: 1px solid var(--base-color-black);\n padding-bottom: 32px;\n margin-bottom: 32px;\n\n @media ${devices.mobile} {\n padding-bottom: 20px;\n margin-bottom: 20px;\n }\n`;\n","import React, { FunctionComponent, useState, MouseEvent, ReactElement } from 'react';\nimport {\n PromoWithTagsGrid,\n PromoWithTagsExtraContentWrapper,\n PromoWithTagsContentWrapper,\n PromoWithTagsSubtitle,\n PromoWithTagsText,\n PromoWithTagsContainer,\n ButtonsContainer,\n PromoWithTagsTagWrapper,\n PromoWithTagsAdditionalText,\n TextLinksContainer,\n TextLinkWrapper,\n ExtraContentWrapper,\n IconWrapper,\n PrimaryButtonWrapper,\n MobileTitleWrapper,\n PromoWithTagsTypeTags,\n PromoWithTagsHeader,\n PromoWithTagsTextLink,\n TimerWrapper,\n EndDateText,\n} from './PromoWithTags.style';\nimport { AltHeader, Icon, PrimaryButton, SecondaryButton, TertiaryButton } from '../../atoms';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport { AspectRatio } from '../../../types/image';\nimport { IPromoWithTagsProps } from '../../../types/promoWithTags';\nimport { EditorialLink } from '../../../types/editorial';\nimport { ButtonType, Colors } from '../../../types';\nimport { devices } from '../../../styles/viewports';\nimport { TypographyLevel } from '../../../types/typography';\nimport { truncate } from '../../../helpers/htmlStrings';\nimport Timer from '../../atoms/Timer';\nimport { IButtonProps } from '../../../types/buttonTypes';\n\nconst LENGTH_TEXT = 28;\nconst LENGTH_TEXT_PARAGRAPH = 130;\n\nconst buttonTypeToButton = {\n [ButtonType.Primary]: PrimaryButton,\n [ButtonType.Secondary]: SecondaryButton,\n [ButtonType.Tertiary]: TertiaryButton,\n};\n\nconst PromoWithTags: FunctionComponent<IPromoWithTagsProps> = ({\n imagePosition = 'left',\n title = '',\n titleSize = 'large',\n subtitle,\n text,\n textLinks,\n links,\n children,\n aboveTitleTags,\n belowTitleTags,\n middleText,\n bottomText,\n image,\n asCard = false,\n disableCTA = false,\n disabledCTACopy = 'Sold Out',\n timerParams,\n}) => {\n const [showExtraContent, setShowExtraContent] = useState(false);\n const [isTimerActive, setIsTimerActive] = useState(true);\n\n const getTitleLevel = (size: string, isCard: boolean): TypographyLevel => {\n if (isCard) {\n return 5;\n }\n if (size === 'large') {\n return 2;\n }\n return 3;\n };\n\n const imageToLeft = imagePosition === 'left';\n const titleLevel = getTitleLevel(titleSize, asCard);\n const isExtraContentPresent = !!children;\n const anchorLink = `${title.replace(' ', '-').toLocaleLowerCase()}-content`;\n\n const handleExtraContent = (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n setShowExtraContent(true);\n if (window.matchMedia?.(devices.mobile).matches) {\n window.location.href = `#${anchorLink}`;\n }\n };\n const defaultOnClickHandler = isExtraContentPresent ? handleExtraContent : undefined;\n\n const firstButton = links?.[0];\n const { text: firstButtonText = '', ...restFirstButton } = firstButton || {};\n const primaryButtonTextTruncate = truncate(firstButtonText, LENGTH_TEXT);\n\n const secondButton = links?.[1];\n const { text: secondButtonText = '', ...restSecondButton } = secondButton || {};\n const secondButtonTextTruncate = truncate(secondButtonText, LENGTH_TEXT);\n const textTruncate = asCard ? truncate(text || '', LENGTH_TEXT_PARAGRAPH) : text;\n\n const FirstButtonComponent = firstButton?.buttonType\n ? (buttonTypeToButton[firstButton.buttonType] as FunctionComponent<IButtonProps>)\n : PrimaryButton;\n\n const SecondButtonComponent = secondButton?.buttonType\n ? (buttonTypeToButton[secondButton.buttonType] as typeof TertiaryButton)\n : TertiaryButton;\n\n const textLinkItems = textLinks\n ? textLinks.map((link: EditorialLink, index) => {\n const { text: textLinkText = '', ...restTextLink } = link;\n return (\n <TextLinkWrapper key={index}>\n <PromoWithTagsTextLink {...restTextLink}>{textLinkText}</PromoWithTagsTextLink>\n </TextLinkWrapper>\n );\n })\n : null;\n\n const renderTimerBlock = (): ReactElement | null => {\n if (!timerParams) return null;\n\n if (!isTimerActive && timerParams.endDateText) {\n return (\n <EndDateText data-testid=\"promo-with-tags-timer-end-date-text\">\n <AltHeader level={5}>{timerParams.endDateText}</AltHeader>\n </EndDateText>\n );\n }\n\n return (\n <TimerWrapper data-testid=\"promo-with-tags-timer-wrapper\">\n <Timer endDateHandler={() => setIsTimerActive(false)} endDate={timerParams.endDate} title={timerParams.title} />\n </TimerWrapper>\n );\n };\n\n return (\n <PromoWithTagsGrid id={anchorLink} data-testid=\"grid-wrapper\" imageToLeft={imageToLeft} asCard={asCard}>\n <PromoWithTagsContentWrapper\n data-testid=\"content-wrapper\"\n imageToLeft={imageToLeft}\n hideSection={showExtraContent}\n asCard={asCard}\n >\n {renderTimerBlock()}\n <PromoWithTagsContainer>\n {!!aboveTitleTags?.length && (\n <PromoWithTagsTagWrapper marginBottom={16}>\n <PromoWithTagsTypeTags list={aboveTitleTags} />\n </PromoWithTagsTagWrapper>\n )}\n <PromoWithTagsHeader semanticLevel={2} level={titleLevel}>\n {title}\n </PromoWithTagsHeader>\n </PromoWithTagsContainer>\n {subtitle && <PromoWithTagsSubtitle>{subtitle}</PromoWithTagsSubtitle>}\n {!!belowTitleTags?.length && (\n <PromoWithTagsTagWrapper marginBottom={8}>\n <PromoWithTagsTypeTags list={belowTitleTags} />\n </PromoWithTagsTagWrapper>\n )}\n <PromoWithTagsText dangerouslySetInnerHTML={{ __html: textTruncate as string }} />\n {middleText && <PromoWithTagsAdditionalText dangerouslySetInnerHTML={{ __html: middleText as string }} />}\n {bottomText && <PromoWithTagsAdditionalText dangerouslySetInnerHTML={{ __html: bottomText as string }} />}\n {!!textLinks?.length && <TextLinksContainer>{textLinkItems}</TextLinksContainer>}\n {links && (\n <ButtonsContainer\n hasTextLinks={!!textLinks?.length}\n data-testid=\"buttons-wrapper\"\n primaryButtonTextLength={firstButtonText.length}\n tertiaryButtonTextLength={secondButtonText.length}\n >\n {firstButton && (\n <PrimaryButtonWrapper>\n {disableCTA ? (\n <FirstButtonComponent bgColor={Colors.MidGrey} onClick={() => null} data-testid=\"diabled-link\">\n {disabledCTACopy || primaryButtonTextTruncate}\n </FirstButtonComponent>\n ) : (\n !showExtraContent && (\n <FirstButtonComponent onClick={defaultOnClickHandler} {...restFirstButton}>\n {primaryButtonTextTruncate}\n </FirstButtonComponent>\n )\n )}\n </PrimaryButtonWrapper>\n )}\n {secondButton && (\n <SecondButtonComponent {...restSecondButton}>{secondButtonTextTruncate}</SecondButtonComponent>\n )}\n </ButtonsContainer>\n )}\n </PromoWithTagsContentWrapper>\n <PromoWithTagsExtraContentWrapper data-testid=\"extra-content-wrapper\" imageToLeft={imageToLeft}>\n {showExtraContent && (\n <MobileTitleWrapper>\n <PromoWithTagsHeader semanticLevel={2} level={titleLevel}>\n {title}\n </PromoWithTagsHeader>\n </MobileTitleWrapper>\n )}\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n {isExtraContentPresent && showExtraContent ? (\n <ExtraContentWrapper>\n {children}\n <IconWrapper\n data-testid=\"extra-content-close-button\"\n onClick={() => setShowExtraContent(false)}\n tabIndex={0}\n onKeyPress={(e) => {\n if (e.key === 'Enter') {\n setShowExtraContent(false);\n }\n }}\n >\n <Icon iconName=\"Close\" color={Colors.Black} />\n </IconWrapper>\n </ExtraContentWrapper>\n ) : (\n image && <img data-testid=\"promo-with-tags-image\" src={image.src} alt={image.alt} />\n )}\n </ImageAspectRatioWrapper>\n </PromoWithTagsExtraContentWrapper>\n </PromoWithTagsGrid>\n );\n};\n\nexport default PromoWithTags;\n","import styled from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\nimport { IEditorialGridProps } from '../../../types/editorial';\nimport { devices } from '../../../styles/viewports';\n\nconst LENGTH_TEXT = 28;\nconst LENGTH_TEXT_TABLET = 10;\n\nexport const PromoWithTitleGrid = styled(Grid)<IEditorialGridProps>`\n grid-template-areas: ${({ imageToLeft }) =>\n imageToLeft\n ? `'left left left left left left left left . right right right right right . .'`\n : `'. . left left left left left . right right right right right right right right'`};\n\n @media ${devices.tablet} {\n & {\n grid-template-areas: ${({ imageToLeft }) =>\n imageToLeft\n ? `'left left left left left left left right right right right right right .'`\n : `'. left left left left left left right right right right right right right'`};\n }\n }\n\n @media ${devices.mobile} {\n & {\n grid-template-columns: var(--grid-margin) minmax(0, 1fr) var(--grid-margin);\n grid-template-rows: min-content 24px min-content;\n gap: 0;\n grid-template-areas:\n 'row1 row1 row1'\n '. . .'\n '. row2 .';\n }\n }\n`;\n\nexport const PromoWithTitleImageWrapper = styled.div<IEditorialGridProps>`\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'left' : 'right')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n grid-area: row1;\n }\n }\n`;\n\nexport const PromoWithTitleContentWrapper = styled.div<IEditorialGridProps>`\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'right' : 'left')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n grid-area: row2;\n align-self: start;\n }\n }\n`;\n\nexport const PromoWithTitleContainer = styled.div`\n h2,\n h3 {\n margin: 0 0 32px;\n\n @media ${devices.mobile} {\n & {\n margin: 0 0 24px;\n }\n }\n }\n`;\n\nexport const PromoWithTitleSubtitle = styled.span`\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n margin-bottom: var(--editorial-subtitle-margin-bottom);\n display: block;\n overflow-wrap: break-word;\n`;\n\nexport const PromoWithTitleText = styled.div`\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n h5,\n h6 {\n margin: 0 0 4px 0;\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n overflow-wrap: break-word;\n }\n\n em {\n font-family: var(--font-family-body-italics);\n }\n\n a {\n text-decoration: underline;\n cursor: pointer;\n\n &[href^='tel:'] {\n text-decoration: none;\n }\n\n &:link {\n color: ${({ theme }) => theme.colors.black};\n }\n\n &:visited {\n color: ${({ theme }) => theme.colors.darkgrey};\n }\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n }\n }\n`;\n\nexport const ButtonsContainer = styled.div<IEditorialGridProps>`\n display: flex;\n gap: 16px;\n margin-top: 32px;\n\n ${({ primaryButtonTextLength = 0, tertiaryButtonTextLength = 0 }) => {\n const isLinksLayoutColumn = primaryButtonTextLength >= LENGTH_TEXT || tertiaryButtonTextLength >= LENGTH_TEXT;\n\n if (isLinksLayoutColumn) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n\n @media ${devices.mobile} {\n gap: 24px;\n margin-top: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ${devices.tablet} {\n gap: 24px;\n margin-top: 24px;\n align-items: flex-start;\n\n ${({ primaryButtonTextLength = 0, tertiaryButtonTextLength = 0 }) => {\n const isLinksLayoutColumnTablet =\n primaryButtonTextLength >= LENGTH_TEXT_TABLET || tertiaryButtonTextLength >= LENGTH_TEXT_TABLET;\n\n if (isLinksLayoutColumnTablet) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n }\n`;\n","import styled from 'styled-components';\nimport { AspectRatio } from '../../../types';\nimport { AspectRatioLegacy, IImageAspectRatioWrapperProps as IVideoContainerProps } from '../../../types/image';\n\nexport const VideoContainer = styled.div<IVideoContainerProps>`\n position: relative;\n aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio};\n\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n width: 100%;\n padding-top: ${({ aspectRatio = AspectRatio['1:1'] }) => AspectRatioLegacy[aspectRatio]}%;\n }\n\n video {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n position: absolute;\n top: 0;\n left: 0;\n }\n }\n`;\n","import React, { FunctionComponent, cloneElement, useMemo, useRef, useState } from 'react';\nimport { IVideoWithControlsProps } from '../../../types/types';\nimport { AspectRatio } from '../../../types';\nimport { VideoControls } from '../../atoms';\nimport { VideoContainer } from './VideoWithControls.style';\nimport { getAspectRatioFromVideo } from '../../../helpers/aspectRatio';\nimport { generateDomElementId } from '../../../helpers/generateDomElementId';\n\nconst VideoWithControls: FunctionComponent<IVideoWithControlsProps> = ({ video, settings }) => {\n const videoRef = useRef<HTMLVideoElement>(null);\n const [aspectRatio, setAspectRatio] = useState(AspectRatio['16:9']);\n const [isVideoReady, setIsVideoReady] = React.useState<boolean>(false);\n const { muted, autoPlay } = settings;\n\n React.useEffect(() => {\n const changeVideoReadiness = () => {\n setIsVideoReady(true);\n };\n if (videoRef.current) {\n videoRef.current.addEventListener('canplay', changeVideoReadiness);\n return () => videoRef.current?.removeEventListener('canplay', changeVideoReadiness);\n }\n return undefined;\n }, []);\n\n const handleMetadataLoaded = () => {\n if (videoRef.current) {\n const newAspectRatio = getAspectRatioFromVideo(videoRef.current);\n setAspectRatio(newAspectRatio);\n }\n };\n\n const videoElementId = useMemo(() => `video-id-${generateDomElementId()}`, []);\n\n const clonedVideo = cloneElement(video, {\n playsInline: true,\n ...(muted ? { muted: true } : {}),\n ...(autoPlay && muted ? { autoPlay: true } : {}),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...({ height: '100%', width: '100%', onLoadedMetadata: handleMetadataLoaded, id: videoElementId } as any),\n poster: autoPlay && isVideoReady ? undefined : video.props.poster,\n ref: videoRef,\n });\n\n const videoContainerId = `video-container-for-${videoElementId}`;\n const videoControlsProps = { ...settings, videoElementId, videoContainerId };\n const showVideoControls = autoPlay ? isVideoReady : true;\n\n return (\n <VideoContainer\n className=\"video-with-controls-container\"\n aspectRatio={aspectRatio}\n id={videoContainerId}\n data-testid=\"video-container\"\n >\n {clonedVideo}\n {showVideoControls && <VideoControls {...videoControlsProps} />}\n </VideoContainer>\n );\n};\n\nexport default VideoWithControls;\n","/**\n * Generates a random string in the format XXX-XXX.\n * Does not meet UUID standards.\n * To be used where only a small number of unique IDs are required, e.g. DOM element IDs.\n *\n * @return {string} A random string in the format XXX-XXX.\n */\nexport const generateDomElementId = (): string => {\n const randomPart = Math.floor(100 + Math.random() * 900).toString();\n const datePart = Date.now().toString().slice(-3);\n return `${randomPart}-${datePart}`;\n};\n","import { AspectRatio } from '../types';\n\nexport const getAspectRatioFromVideo = (video: HTMLVideoElement): AspectRatio => {\n const { videoWidth, videoHeight } = video;\n\n // Finds the greatest common divisor (GCD) using the Euclidean algorithm\n const gcd = (a: number, b: number): number => (b === 0 ? a : gcd(b, a % b));\n\n if (!videoWidth || !videoHeight) return AspectRatio['16:9'];\n\n const divisor = gcd(videoWidth, videoHeight);\n const aspectRatioKey = `${videoWidth / divisor}:${videoHeight / divisor}` as keyof typeof AspectRatio;\n return AspectRatio[aspectRatioKey] || AspectRatio['16:9'];\n};\n","import React, { FunctionComponent, ReactElement } from 'react';\nimport { AspectRatio } from '../../../types';\nimport { PromoWithTitleImageWrapper } from './PromoWithTitle.style';\nimport { ImageAspectRatioWrapper } from '../../atoms';\nimport VideoWithControls from '../VideoWithControls/VideoWithControls';\nimport { IVideoWithControlsSettings } from '../../../types/types';\n\ninterface IPromoChildProps {\n children: ReactElement<HTMLImageElement | HTMLVideoElement>;\n videoSettings: IVideoWithControlsSettings;\n imageToLeft: boolean;\n}\n\nconst PromoChild: FunctionComponent<IPromoChildProps> = ({ children, videoSettings, imageToLeft }) => {\n const isImage = React.Children.only(children).type === 'img';\n const isVideo = React.Children.only(children).type === 'video';\n\n return (\n <PromoWithTitleImageWrapper data-testid=\"image-wrapper\" imageToLeft={imageToLeft}>\n {isImage && (\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']} data-testid=\"AspectRatioWrapper\">\n {children}\n </ImageAspectRatioWrapper>\n )}\n {isVideo && <VideoWithControls video={children as ReactElement<HTMLVideoElement>} settings={videoSettings} />}\n </PromoWithTitleImageWrapper>\n );\n};\n\nexport default PromoChild;\n","import styled from 'styled-components';\n\nexport const RadioGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 30px;\n`;\n","import styled from 'styled-components';\nimport { IRadioGroup2Props } from '../../../types/formTypes';\n\nexport const Container = styled.div``;\n\nexport const RadioGroup = styled.div<Pick<IRadioGroup2Props, 'horizontalMode' | 'gap'>>`\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: ${({ horizontalMode }) => {\n if (horizontalMode) return 'row';\n return 'column';\n }};\n gap: ${({ gap }) => `${gap}px`};\n`;\n\nexport const ErrorLabel = styled.div<Pick<IRadioGroup2Props, 'darkMode'>>`\n margin-top: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n return 'var(--base-color-errorstate)';\n }};\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const StatusBannerWrapper = styled.div`\n padding: 26px 150px;\n display: flex;\n justify-content: space-between;\n background-color: var(--base-color-lightgrey);\n transition: transform 0.3s ease;\n transform-origin: top;\n\n @media ${devices.mobile} {\n padding: 20px 20px;\n }\n\n @media ${devices.tablet} {\n padding: 20px 50px;\n }\n\n &.closing {\n transform: scaleY(0);\n }\n`;\n\nexport const ContentContainer = styled.div`\n overflow: auto;\n transition: max-height 0.3s ease-in-out;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n`;\n\nexport const SvgContainer = styled.div`\n height: 100%;\n display: flex;\n align-items: end;\n\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n padding-left: 50px;\n }\n\n cursor: pointer;\n\n @media ${devices.mobile} {\n padding-left: 20px;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nconst SectionTitleWrapper = styled.div`\n margin: 30px 0;\n\n & > div {\n row-gap: 0;\n }\n\n & h1,\n & h2 {\n margin: 16px 0;\n white-space: pre-wrap;\n }\n\n @media ${devices.mobile} {\n & h1,\n & h2 {\n margin: 12px 0;\n }\n }\n\n & div {\n font-size: var(--font-size-title-description);\n line-height: var(--line-height-title-description);\n margin-block-start: 0;\n }\n`;\n\nexport default SectionTitleWrapper;\n","import styled, { css } from 'styled-components';\nimport zIndexes from '../../../styles/zIndexes';\nimport { Theme } from '../../../types/utility';\nimport { Icon } from '../../atoms';\nimport { ISelectProps } from '../../../types/formTypes';\n\nconst stateStyles = css`\n &:focus,\n &.focus {\n outline: ${({ theme }) => `3px solid ${(theme as Theme).colors.lapisLazuli}`};\n }\n\n &.disabled {\n background-color: ${({ theme }) => (theme as Theme).colors.lightgrey};\n color: ${({ theme }) => (theme as Theme).colors.lightgrey};\n pointer-events: none;\n cursor: none;\n }\n`;\n\nconst borderStyles = css`\n border-radius: 0;\n outline: 1px solid ${({ theme }) => (theme as Theme).colors.darkgrey};\n`;\n\nconst noMarginAndPaddingStyles = css`\n margin: 0;\n padding: 0;\n`;\n\nconst listItemStyles = css`\n list-style: none;\n user-select: none;\n`;\n\nexport const ArrowIcon = styled(Icon).attrs(({ theme }) => ({\n iconName: 'DropdownArrow',\n color: (theme as Theme).colors.black,\n title: 'Select Arrow',\n}))`\n pointer-events: none;\n\n max-width: 24px;\n max-height: 24px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n`;\n\nexport const Wrapper = styled.div`\n ${noMarginAndPaddingStyles}\n height: initial;\n\n display: flex;\n flex-direction: column;\n gap: 20px;\n`;\n\nexport const SelectWrapper = styled.div`\n ${noMarginAndPaddingStyles}\n height: inherit;\n`;\n\nexport const Options = styled.div`\n z-index: 1;\n\n ${noMarginAndPaddingStyles}\n ${borderStyles}\n`;\n\nexport const Option = styled.li<{ hover: boolean }>`\n ${noMarginAndPaddingStyles}\n ${listItemStyles}\n\n ${({ theme, hover }) => {\n const { lightgrey, midgrey } = (theme as Theme).colors;\n if (hover) return `background-color: ${midgrey}`;\n return `\n background-color: ${lightgrey};\n &:hover { background-color: ${midgrey} }\n `;\n }}\n`;\n\nconst selectStyles = (width: string, height: string) => css`\n position: relative;\n z-index: ${zIndexes[3]};\n\n width: ${width};\n height: ${height};\n\n * {\n width: ${width};\n }\n\n ${Options} {\n position: absolute;\n top: ${height};\n }\n ${Option} {\n height: ${height};\n }\n p {\n height: ${height};\n padding-inline: 20px;\n\n display: flex;\n align-items: center;\n }\n`;\nexport const SelectList = styled.ul<Pick<Required<ISelectProps>, 'width' | 'height'>>`\n ${({ width, height }) =>\n selectStyles(width === 'default' ? `354px` : `${width}px`, height === 'default' ? `48px` : `${height}px`)}\n\n ${stateStyles}\n ${noMarginAndPaddingStyles}\n ${listItemStyles}\n ${borderStyles}\n\n & ${ArrowIcon} {\n position: absolute;\n\n top: 13px;\n right: 16px;\n }\n`;\n","import styled from 'styled-components';\nimport { ISelect2Props } from '../../../types/formTypes';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const SelectWrapper = styled.div<Pick<ISelect2Props, 'width' | 'darkMode' | 'error'>>`\n position: relative;\n width: auto;\n max-width: ${({ width }) => {\n if (!width) return 'none';\n return `${width}px`;\n }};\n\n .harmonic-select__control {\n min-height: 48px;\n border-radius: 0;\n transition: none;\n border: ${({ error }) => {\n if (error !== undefined) return `1px solid var(--base-color-errorstate)`;\n return `1px solid var(--base-color-darkgrey)`;\n }};\n &:hover {\n border-color: ${({ error }) => {\n if (error !== undefined) return `var(--base-color-errorstate)`;\n return `var(--base-color-darkgrey)`;\n }};\n }\n }\n .harmonic-select__control--is-focused {\n border-color: var(--base-color-darkgrey);\n box-shadow: ${({ darkMode }) => {\n if (darkMode) return `0 0 0 4px var(--base-color-lemonchiffon)`;\n return `0 0 0 3px var(--base-color-lapislazuli)`;\n }};\n }\n .harmonic-select__control--menu-is-open {\n .harmonic-select__indicator {\n svg {\n transform: rotate(180deg);\n }\n }\n }\n .harmonic-select__indicator {\n font-size: 25px;\n padding: 0;\n margin-right: 12px;\n color: var(--base-color-black);\n svg {\n height: 1em;\n width: 1em;\n color: inherit;\n path {\n fill: currentColor;\n color: inherit;\n }\n }\n }\n .harmonic-select__single-value,\n .harmonic-select__placeholder {\n margin-left: 0;\n margin-right: 0;\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n text-transform: var(--text-transform-altHeader);\n }\n .harmonic-select__placeholder {\n color: var(--base-color-darkgrey);\n }\n .harmonic-select__single-value {\n color: var(--base-color-black);\n }\n .harmonic-select__value-container {\n padding-left: 20px;\n padding-right: 20px;\n padding-top: 1px;\n padding-bottom: 0px;\n }\n .harmonic-select--is-disabled {\n .harmonic-select__control {\n border: 1px solid var(--base-color-lightgrey);\n background: var(--base-color-lightgrey);\n }\n .harmonic-select__indicator,\n .harmonic-select__single-value {\n color: var(--base-color-darkgrey);\n }\n }\n .harmonic-select__menu {\n margin-top: -1px;\n box-shadow: none;\n border-radius: 0;\n border: 1px solid var(--base-color-darkgrey);\n background: var(--base-color-lightgrey);\n }\n .harmonic-select__menu-list {\n padding-top: 0;\n padding-bottom: 0;\n }\n .harmonic-select__option {\n padding: 10px 20px;\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n text-transform: var(--text-transform-altHeader);\n color: var(--base-color-black);\n &:active,\n &.harmonic-select__option--is-focused {\n background: var(--base-color-midgrey);\n }\n }\n .harmonic-select__option--is-selected {\n color: var(--base-color-black);\n background: none;\n }\n .harmonic-select__input-container {\n margin: 0;\n padding-top: 0;\n padding-bottom: 0;\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n text-transform: var(--text-transform-altHeader);\n color: var(--base-color-black);\n }\n .harmonic-select__menu-notice {\n padding: 20px 20px;\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n color: var(--base-color-black);\n text-align: left;\n }\n .harmonic-select__menu-notice--loading {\n font-style: italic;\n }\n`;\n\nexport const TextLabel = styled.div<Pick<ISelect2Props, 'darkMode'>>`\n margin: 0 0 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return `var(--base-color-white)`;\n return `var(--base-color-black)`;\n }};\n`;\n\nexport const ErrorLabel = styled.div<Pick<ISelect2Props, 'darkMode'>>`\n margin: 20px 0 0;\n color: ${({ darkMode }) => {\n if (darkMode) return `var(--base-color-white)`;\n return `var(--base-color-errorstate)`;\n }};\n`;\n","/* eslint-disable no-shadow */\n/* eslint-disable jsx-a11y/label-has-for */\n/* eslint-disable jsx-a11y/label-has-associated-control */\nimport React, { FunctionComponent } from 'react';\nimport Select, { components, DropdownIndicatorProps } from 'react-select';\n\nimport { ISelect2Props } from '../../../types/formTypes';\nimport { Container, TextLabel, ErrorLabel, SelectWrapper } from './Select2.style';\nimport { AltHeader, Icon } from '../../atoms';\n\nexport const DropdownIndicator = (props: DropdownIndicatorProps) => {\n return (\n <components.DropdownIndicator {...props}>\n <Icon iconName=\"DropdownArrow\" />\n </components.DropdownIndicator>\n );\n};\n\ninterface IWrapperProps extends Pick<ISelect2Props, 'label' | 'error' | 'width' | 'darkMode'> {\n children: React.ReactNode;\n}\n\nexport const WrapperComponent: FunctionComponent<IWrapperProps> = ({ label, error, width, darkMode, children }) => {\n return (\n <Container>\n <label>\n {!!label && (\n <TextLabel darkMode={darkMode} data-testid=\"select2-text-label\">\n <AltHeader level={6}>{label}</AltHeader>\n </TextLabel>\n )}\n <SelectWrapper width={width} error={error} darkMode={darkMode}>\n {children}\n </SelectWrapper>\n </label>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"select2-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\n/**\n * A Select2 component wraps react-select with Harmonic styling and additional elements like\n * text and error labels. This should be used just as usual react-select component.\n * Note: using some advanced opportunities of react-select may require additional styling.\n *\n * # Error state\n * An error label will be shown below the select if the `error` prop exists.\n * Also select will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n */\nconst SelectComponent: FunctionComponent<ISelect2Props> = ({\n label,\n error,\n width,\n darkMode = false,\n isSearchable = false,\n components,\n ...selectProps\n}) => {\n return (\n <WrapperComponent label={label} error={error} width={width} darkMode={darkMode}>\n <Select\n {...selectProps}\n components={{\n DropdownIndicator,\n LoadingIndicator: undefined,\n IndicatorSeparator: undefined,\n ...components,\n }}\n className=\"harmonic-select-container\"\n classNamePrefix=\"harmonic-select\"\n isSearchable={isSearchable}\n />\n </WrapperComponent>\n );\n};\n\nexport default SelectComponent;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const TextContainer = styled.div`\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n\n & h1,\n h2,\n h3,\n h4 {\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n white-space: break-spaces;\n overflow-wrap: break-word;\n margin: 80px 0 16px;\n\n @media ${devices.mobileAndTablet} {\n margin-top: 60px;\n }\n\n + p {\n margin-top: 0px;\n }\n }\n\n & h5,\n h6 {\n font-size: var(--font-size-subtitle-1);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n white-space: break-spaces;\n overflow-wrap: break-word;\n margin: 80px 0 16px;\n\n @media ${devices.mobileAndTablet} {\n margin-top: 60px;\n }\n\n + p {\n margin-top: 10px;\n }\n }\n\n & a {\n color: ${({ theme }) => theme.colors.primary};\n text-decoration: underline;\n cursor: pointer;\n }\n\n p {\n margin: 30px 0;\n }\n\n & em {\n font-family: var(--font-family-body-italics);\n }\n\n & strong {\n font-weight: bold;\n }\n\n & u {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n }\n\n & ul {\n padding: 0;\n list-style: none;\n margin: 0 0 0 30px;\n\n li {\n text-indent: -20px;\n line-height: var(--line-height-listing);\n }\n }\n\n & ol {\n padding: 0;\n margin: 0 0 0 20px;\n\n li {\n line-height: var(--line-height-listing);\n }\n }\n\n & ul > li:before {\n display: inline-block;\n content: '—';\n width: 0px;\n margin-left: 12px;\n margin-right: 8px;\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport { TextContainer } from './TextOnly.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { ITextOnlyProps } from '../../../types/types';\n\nconst TextOnly: FunctionComponent<ITextOnlyProps> = ({\n text = '',\n columnStartDesktop = 3,\n columnSpanDesktop = 8,\n columnStartDevice = 2,\n columnSpanDevice = 12,\n}) => {\n return (\n <Grid>\n <GridItem\n columnStartDesktop={columnStartDesktop}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={columnStartDevice}\n columnSpanDevice={columnSpanDevice}\n >\n <TextContainer dangerouslySetInnerHTML={{ __html: text }} />\n </GridItem>\n </Grid>\n );\n};\n\nexport default TextOnly;\n","import styled from 'styled-components';\nimport { AspectRatio, AspectRatioWidth, IImageWithCaptionWrapperProps } from '../../../types/image';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\n\nexport const Wrapper = styled.div<IImageWithCaptionWrapperProps>`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: fit-content;\n\n ${ImageAspectRatioWrapper} {\n height: calc(100% - 12px - var(--line-height-body-2));\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n width: ${({ aspectRatio = AspectRatio['1:1'], height }) =>\n `calc(calc(${height}px - 12px - var(--line-height-body-2)) * ${AspectRatioWidth[aspectRatio]})`};\n }\n }\n`;\n\nexport const CaptionWrapper = styled.div`\n margin-top: 12px;\n height: var(--line-height-body-2);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-2);\n font-weight: var(--font-weight-body-2);\n letter-spacing: var(--letter-spacing-body-2);\n line-height: var(--line-height-body-2);\n text-transform: var(--text-transform-body-2);\n word-break: var(--word-break-body-2);\n font-style: italic;\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IQuoteAttributionBlockProps } from '../../../types/quote';\n\nexport const TextWrapper = styled.div`\n h4 {\n margin: 0;\n }\n`;\n\nexport const AttributionWrapper = styled.div<IQuoteAttributionBlockProps>`\n ${({ displayAttribution }) => `display: ${displayAttribution ? 'block' : 'none'};`}\n`;\n\nexport const Line = styled.div`\n background-color: var(--base-color-black);\n height: 2px;\n width: 62px;\n margin: 32px 0;\n\n @media ${devices.mobile} {\n height: 1px;\n width: 46px;\n margin: 24px 0;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const CardContainer = styled.div`\n cursor: pointer;\n width: 100%;\n display: grid;\n grid-template-columns: repeat(7, minmax(0, 1fr));\n gap: 15px;\n min-height: 50px;\n`;\n\nexport const ContentContainer = styled.div`\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n`;\n\nexport const StyledImage = styled.img`\n border: 1px solid var(--base-color-white);\n`;\n\nexport const ImageWrapper = styled.div`\n position: relative;\n`;\n\nexport const IconWrapper = styled.div`\n background: rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n span {\n width: 40px;\n height: 40px;\n @media ${devices.tablet} {\n width: 24px;\n height: 24px;\n }\n @media ${devices.mobile} {\n width: 18px;\n height: 18px;\n }\n }\n`;\n\nexport const TitleWrapper = styled.div`\n margin-top: 8px;\n div {\n @media ${devices.mobile} {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const ReadMoreContainer = styled.div`\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0px 0px 12px 0px !important;\n }\n width: 100%;\n`;\n\nexport const LinkContainer = styled.div`\n padding-top: 24px;\n gap: 8px;\n\n :hover {\n cursor: pointer;\n }\n\n @media print {\n visibility: hidden;\n }\n`;\n\nexport const FullTextContainer = styled.div<{ isVisible?: boolean }>`\n visibility: ${({ isVisible }) => (isVisible ? 'visible' : 'hidden')};\n\n @media print {\n visibility: visible;\n }\n`;\n\nexport const IntroTextContainer = styled.div<{ isVisible?: boolean }>`\n visibility: ${({ isVisible }) => (isVisible ? 'visible' : 'hidden')};\n\n @media print {\n visibility: hidden;\n }\n`;\n\nexport const ContentContainer = styled.div`\n overflow: auto;\n transition: max-height 0.4s ease;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n\n & h1 {\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & h2 {\n font-size: var(--font-size-subtitle-1);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & em {\n font-family: var(--font-family-body-italics);\n }\n\n & u {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n }\n @media print {\n visibility: visible;\n max-height: 900px !important;\n }\n`;\n","import styled from 'styled-components';\nimport { Colors } from '../../../types';\n\nexport const MenuContainer = styled.nav`\n position: relative;\n padding: 0;\n margin: 0;\n`;\n\nexport const MenuList = styled.ul`\n padding: 0;\n margin: 0;\n list-style: none;\n border-right: 1px solid var(--base-color-${Colors.LightGrey});\n li {\n margin-left: -5px;\n }\n`;\n\nexport const MobileButton = styled.button`\n line-height: var(--line-height-navigation);\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-${Colors.Black});\n text-transform: uppercase;\n margin: 0;\n padding: 16px 46px 14px 20px;\n background: var(--base-color-${Colors.White});\n border: 1px solid var(--base-color-${Colors.DarkGrey});\n border-radius: 0;\n display: block;\n width: 100%;\n text-align: left;\n cursor: pointer;\n position: relative;\n span {\n width: 25px;\n height: 25px;\n position: absolute;\n top: 50%;\n margin-top: -12px;\n right: 10px;\n }\n`;\n\nexport const MenuItem = styled.a<{ isActive: boolean }>`\n line-height: var(--line-height-navigation);\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-${Colors.Black});\n text-transform: uppercase;\n text-decoration: none;\n margin: 0;\n padding: 16px 20px 15px 5px;\n display: block;\n background: ${({ isActive }) => (isActive ? `var(--base-color-${Colors.MidGrey})` : 'none')};\n cursor: pointer;\n &:hover {\n background: var(--base-color-${Colors.MidGrey});\n }\n`;\n\nexport const MobileMenuList = styled.ul<{ isOpen: boolean }>`\n padding: 0;\n margin: 0;\n list-style: none;\n display: ${({ isOpen }) => (isOpen ? 'block' : 'none')};\n background: var(--base-color-${Colors.White});\n border: 1px solid var(--base-color-${Colors.DarkGrey});\n border-top: 0;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n ${MenuItem} {\n padding: 16px 20px 15px 20px;\n }\n`;\n","import React, { FunctionComponent, useState, useRef, useEffect } from 'react';\n\nimport { MenuContainer, MenuList, MenuItem, MobileButton, MobileMenuList } from './AuxiliaryNav.styles';\nimport { IAuxiliaryNavProps, INavProps, IItemProps } from '../../../types/auxiliaryNav';\nimport { Icon } from '../../atoms/Icons';\n\nconst NavItem: FunctionComponent<IItemProps> = ({ text, href, onClick, isActive, isMobile }) => {\n const linkRef = useRef<HTMLAnchorElement | null>(null);\n\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (onClick) onClick(e);\n };\n\n const linkElement = linkRef.current;\n if (linkElement) {\n linkElement.addEventListener('click', handleClick);\n }\n\n return () => {\n if (linkElement) {\n linkElement.removeEventListener('click', handleClick);\n }\n };\n }, [onClick]);\n\n const ariaCurrent = isMobile ? undefined : isActive;\n const ariaSelected = isMobile ? isActive : undefined;\n const role = isMobile ? 'option' : undefined;\n\n return (\n <li aria-current={ariaCurrent} aria-selected={ariaSelected} role={role}>\n <MenuItem ref={linkRef} href={href} isActive={isActive} data-testid={`nav-menu-item${isActive ? '-active' : ''}`}>\n {text}\n </MenuItem>\n </li>\n );\n};\n\nconst DesktopNav: FunctionComponent<INavProps> = ({ items, activeItem, ariaLabel }) => {\n return (\n <MenuContainer data-testid=\"nav-menu-container-desktop\" aria-label={ariaLabel}>\n <MenuList data-testid=\"nav-menu-list\">\n {items.map(({ text, href, onClick }, idx) => (\n <NavItem key={`${text}-${idx}`} text={text} href={href} onClick={onClick} isActive={text === activeItem} />\n ))}\n </MenuList>\n </MenuContainer>\n );\n};\n\nconst MobileNav: FunctionComponent<INavProps> = ({ items, activeItem, ariaLabel }) => {\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLElement>(null);\n\n const buttonClickHandler = () => {\n setIsOpen((prev) => !prev);\n };\n\n const outsideClickHandler = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as HTMLElement)) {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('mousedown', outsideClickHandler);\n\n return () => {\n document.removeEventListener('mousedown', outsideClickHandler);\n };\n }, [containerRef]);\n\n return (\n <MenuContainer ref={containerRef} data-testid=\"nav-menu-container-mobile\" aria-label={ariaLabel}>\n <MobileButton\n onClick={buttonClickHandler}\n data-testid=\"nav-menu-mobile-button\"\n aria-expanded={isOpen}\n aria-controls=\"auxiliary-nav-list\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n >\n {activeItem}\n <Icon iconName=\"DropdownArrow\" direction={isOpen ? 'left' : 'right'} />\n </MobileButton>\n <MobileMenuList\n id=\"auxiliary-nav-list\"\n data-testid=\"nav-menu-list\"\n isOpen={isOpen}\n aria-hidden={!isOpen}\n role=\"listbox\"\n >\n {items.map(({ text, href, onClick }, idx) => (\n <NavItem\n key={`${text}-${idx}`}\n text={text}\n href={href}\n onClick={onClick}\n isActive={text === activeItem}\n isMobile\n />\n ))}\n </MobileMenuList>\n </MenuContainer>\n );\n};\n\n/**\n * Vertical menu component uses for navigation\n * inside website chapter. It looks like a vertical\n * list with clickable items on desktop and dropdown\n * list on mobile.\n *\n * ## Menu items\n * Menu items should be passed as `items` prop. This\n * should be an array of objects. Each object should\n * have `text` (text displayed as a menu item) and\n * `onClick` (click handler function)\n *\n * ## Active menu item\n * Active menu item should be passed as component `activeItem`\n * prop. This indicates on which menu item should be highlighted\n * as active one. Should be equal to `text` prop from one of the `items`\n */\nconst AuxiliaryNav: FunctionComponent<IAuxiliaryNavProps> = ({ items, activeItem, isMobile, ariaLabel }) => {\n if (isMobile) {\n return <MobileNav items={items} activeItem={activeItem} ariaLabel={ariaLabel} />;\n }\n\n return <DesktopNav items={items} activeItem={activeItem} ariaLabel={ariaLabel} />;\n};\n\nexport default AuxiliaryNav;\n","import styled from 'styled-components';\nimport { Colors } from '../../../types/types';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const Sections = styled.div`\n display: flex;\n flex-direction: row;\n gap: 8px;\n`;\n\nexport const Section = styled.div<{ color: Colors }>`\n flex: 1;\n height: 2px;\n background-color: ${({ color }) => `var(--base-color-${color})`};\n`;\n\nexport const BottomLine = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 20px;\n`;\n\nexport const Text = styled.div<{ color: Colors }>`\n color: ${({ color }) => `var(--base-color-${color})`};\n`;\n\nexport const LabelText = styled.div<{ color: Colors }>`\n margin-top: 1px;\n white-space: nowrap;\n color: ${({ color }) => `var(--base-color-${color})`};\n`;\n","import styled from 'styled-components';\nimport { Colors } from '../../../types/types';\nimport { devices } from '../../../styles/viewports';\n\nexport const TableContainer = styled.table`\n border-collapse: collapse;\n`;\n\nexport const Container = styled.div`\n overflow-x: auto;\n`;\n\nexport const Wrapper = styled.div`\n width: 100%;\n`;\n\nexport const TableHeader = styled.th<{ columns: number; lineColor: Colors }>`\n font-size: var(--font-size-subtitle-2);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n padding: 30px 30px 30px 0;\n text-align: left;\n text-transform: uppercase;\n border-bottom: 1px solid;\n border-top: 1px solid;\n border-color: ${(props) => `var(--base-color-${props.lineColor})`};\n\n &:last-child {\n white-space: nowrap;\n width: auto;\n }\n\n &:not(:last-child) {\n width: ${(props) => `calc(100% / ${props.columns - 1})`};\n }\n\n @media ${devices.tablet} {\n &:last-child {\n white-space: nowrap;\n }\n }\n\n @media ${devices.mobile} {\n padding: 20px 20px 20px 0;\n\n &:last-child {\n white-space: normal;\n }\n }\n`;\n\nexport const TableCell = styled.td<{ columns: number; lineColor: Colors }>`\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n padding: 30px 30px 30px 0;\n text-align: left;\n vertical-align: top;\n border-bottom: 1px solid;\n border-color: ${(props) => `var(--base-color-${props.lineColor})`};\n\n &:last-child {\n width: auto;\n }\n\n &:not(:last-child) {\n width: ${(props) => `calc(100% / ${props.columns - 1})`};\n }\n\n > span > svg {\n width: 24px;\n height: 24px;\n }\n\n @media ${devices.mobile} {\n padding: 20px 20px 20px 0;\n }\n`;\n\nexport const Pagination = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px 0;\n flex-wrap: nowrap;\n flex-direction: row;\n list-style: none;\n max-width: fit-content;\n margin: auto;\n li {\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n margin-left: 16px;\n color: var(--base-color-dark-grey);\n display: flex;\n align-items: center;\n border-bottom: none;\n }\n`;\n\nexport const PageNumber = styled.button<{ active?: string }>`\n background: none;\n border: none;\n padding: 0;\n font-size: inherit;\n color: inherit;\n cursor: pointer;\n display: inline-block;\n margin: 0;\n border-bottom: 1px solid var(--base-color-transparent);\n line-height: var(--base-line-height);\n text-decoration: none;\n font-family: var(--font-family-body-1);\n\n :hover {\n outline: none;\n color: var(--base-color-core);\n border-bottom: 1px solid var(--base-color-core);\n svg > path {\n fill: var(--base-color-core);\n }\n }\n\n /* Active state */\n ${({ active }) =>\n active === 'true' &&\n `\n color: var(--base-color-core);\n border-bottom: 1px solid var(--base-color-core);\n `}\n`;\n\nexport const Next = styled.span`\n display: inline-flex;\n width: 25px;\n align-items: center;\n justify-content: center;\n margin-left: 0;\n span {\n height: 1.5em;\n svg > path {\n fill: var(--base-color-dark-grey);\n }\n }\n`;\n\nexport const ScrollButtons = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 0 0 24px 0;\n\n div:hover {\n background-color: var(--base-color-light-grey);\n }\n\n > div > div {\n background-color: var(--base-color-light-grey);\n }\n\n svg path {\n fill: var(--base-color-black) !important;\n }\n`;\n\nexport const AriaDescription = styled.span`\n position: absolute;\n left: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n`;\n","/* eslint-disable react/no-danger */\n/* eslint-disable react/jsx-no-useless-fragment */\nimport React, { FunctionComponent } from 'react';\nimport { ContentProps } from '../../../../types/tableTypes';\n\nexport const Content: FunctionComponent<ContentProps> = ({ content }) => {\n return typeof content === 'string' ? <div dangerouslySetInnerHTML={{ __html: content }} /> : <>{content}</>;\n};\n\nexport const scrollTable = (tableRef: React.RefObject<HTMLTableElement>, direction: 'left' | 'right') => {\n if (tableRef.current) {\n const currentScroll = tableRef.current.scrollLeft;\n const scrollAmount = direction === 'left' ? -300 : 300;\n tableRef.current.scrollTo({ left: currentScroll + scrollAmount, behavior: 'smooth' });\n }\n};\n","import React, { FunctionComponent } from 'react';\nimport { TableCell } from '../Table.style';\nimport { CellProps } from '../../../../types/tableTypes';\nimport { Content } from './TableHelpers';\n\nexport const Cell: FunctionComponent<CellProps> = ({ cell, cellIndex, columns, lineColor }) => (\n <TableCell key={cellIndex} columns={columns} role=\"gridcell\" lineColor={lineColor}>\n <Content content={cell} />\n </TableCell>\n);\n","import React, { FunctionComponent } from 'react';\nimport { RowProps } from '../../../../types/tableTypes';\nimport { Cell } from './TableCell';\n\nexport const Row: FunctionComponent<RowProps> = ({ row, rowIndex, columns, lineColor }) => (\n <React.Fragment key={rowIndex}>\n <tr>\n {row.map((cell, index) => (\n <Cell key={index} cell={cell} cellIndex={index} columns={columns} lineColor={lineColor} />\n ))}\n </tr>\n </React.Fragment>\n);\n","import * as React from 'react';\nimport { core, fontFamilies } from '../../../styles/themes';\n\n// Below data retrieved from royaloperahouse.mytalkdesk.com\nconst SCRIPT_SRC = 'https://talkdeskchatsdk.talkdeskapp.com/talkdeskchatsdk.js?t=';\nconst DATA_BIND = '5ea4b1ad-1a17-11ec-af32-06f09e0065e0';\nconst DATA_ORG = '';\nconst DIV_ID = 'tdWebchat';\nconst THEME_ICON = 'https://static.roh.org.uk/logos/crest.svg';\nconst THEME_FONT_BODY = fontFamilies.sansSerifFallback;\nconst THEME_COLOR = core.colors.core;\nconst THEME_COLOR_LIGHT = `${core.colors.core}80`;\nconst THEME_COLOR_BLACK = core.colors.black;\nconst THEME_COLOR_LIGHTGREY = core.colors.lightgrey;\nconst THEME_COLOR_WHITE = core.colors.white;\nconst THEME_COLOR_MIDGREY = core.colors.midgrey;\nconst SCRIPT_CONTENT = `var webchat;\n((window, document, node, props, configs) => {\n if (window.TalkdeskChatSDK) {\n console.error(\"TalkdeskChatSDK already included\");\n return;\n }\n var divContainer = document.createElement(\"div\");\n divContainer.id = node;\n document.body.appendChild(divContainer);\n var currentDate = new Date().getTime();\n var src = \"${SCRIPT_SRC}\" + currentDate;\n var script = document.createElement(\"script\");\n var firstScriptTag = document.getElementsByTagName(\"script\")[0];\n script.type = \"text/javascript\";\n script.charset = \"UTF-8\";\n script.id = \"tdwebchatscript\";\n script.src = src;\n script.async = true;\n firstScriptTag.parentNode.insertBefore(script, firstScriptTag);\n script.onload = () => {\n webchat = TalkdeskChatSDK(node, props);\n webchat.init(configs);\n };\n})(\n window,\n document,\n \"${DIV_ID}\",\n { flowId: \"cd19d348b5fb4a0ab0d3277686f28d1e\", accountId: \"\", region: \"td-us-1\" },\n { enableEmoji: true, enableUserInput: true, styles :{\n \"botIcon\": \"${THEME_ICON}\",\n \"botBackgroundColor\":\"${THEME_COLOR_LIGHTGREY}\",\n \"botTextColor\": \"${THEME_COLOR_BLACK}\",\n \"chatTitle\": \"Royal Opera House\",\n \"chatThemeColor\": \"${THEME_COLOR}\",\n \"chatTitleIcon\": \"${THEME_ICON}\",\n \"customButtonBackgroundColor\": \"${THEME_COLOR}\",\n \"customButtonBorderColor\": \"${THEME_COLOR}\",\n \"customButtonColor\": \"${THEME_COLOR_WHITE}\",\n \"userBackgroundColor\":\"${THEME_COLOR_LIGHTGREY}\",\n \"userTextColor\": \"${THEME_COLOR_BLACK}\",\n \"userBackgroundColor\":\"${THEME_COLOR_MIDGREY}\",\n \"userTextColor\": \"${THEME_COLOR_BLACK}\",\n \"welcomeMessageBackgroundColor\": \"${THEME_COLOR_LIGHT}\",\n \"welcomeMessageContentFontSize\": \"18px\",\n \"welcomeMessageTitleFontFamily\": \"${THEME_FONT_BODY}\",\n \"welcomeMessageContentFontFamily\": \"${THEME_FONT_BODY}\",\n \"customMessageFontFamily\": \"${THEME_FONT_BODY}\",\n \"customMessageNoBubbleFontFamily\": \"${THEME_FONT_BODY}\",\n \"customButtonFontFamily\": \"${THEME_FONT_BODY}\",\n \"customFieldLabelFontFamily\": \"${THEME_FONT_BODY}\",\n \"customFieldInputFontFamily\": \"${THEME_FONT_BODY}\",\n \"customDropdownLabelFontFamily\": \"${THEME_FONT_BODY}\",\n \"customDropdownInputFontFamily\": \"${THEME_FONT_BODY}\",\n \"startChatButtonBackgroundColor\": \"${THEME_COLOR}\",\n \"startChatButtonBorderColor\": \"${THEME_COLOR}\",\n \"startChatButtonTextColor\": \"${THEME_COLOR_WHITE}\",\n \"startChatButtonHoverBackgroundColor\": \"${THEME_COLOR}\",\n \"startChatButtonHoverBorderColor\": \"${THEME_COLOR}\",\n \"startChatButtonHoverTextColor\": \"${THEME_COLOR_WHITE}\",\n \"startChatButtonFontFamily\": \"${THEME_FONT_BODY}\",\n }}\n);`;\n\nconst loadLiveChatScript = (callback: () => void): void => {\n const existingScript = document.getElementById(DIV_ID);\n if (!existingScript) {\n const liveChatDiv = document.createElement('div');\n\n liveChatDiv.id = DIV_ID;\n liveChatDiv.setAttribute('data-bind', DATA_BIND);\n liveChatDiv.setAttribute('data-org', DATA_ORG);\n\n const script = document.createElement('script');\n const scriptBody = document.createTextNode(SCRIPT_CONTENT);\n\n script.appendChild(scriptBody);\n\n document.body.appendChild(liveChatDiv);\n document.body.appendChild(script);\n script.onload = () => {\n if (callback) callback();\n };\n }\n if (existingScript && callback) callback();\n};\n\nconst LiveChat = (): React.ReactElement => {\n // eslint-disable-next-line\n const [loaded, setLoaded] = React.useState(false);\n\n React.useEffect(() => {\n loadLiveChatScript(() => {\n setLoaded(true);\n });\n });\n\n return <span data-loaded={loaded} />;\n};\n\nexport default LiveChat;\n","import styled from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\nimport zIndexes from '../../../styles/zIndexes';\nimport { devices } from '../../../styles/viewports';\n\ninterface IStickyBarGridProps {\n hideBottomBorder: boolean;\n}\n\nexport const StickyBarWrapper = styled.div`\n top: 0;\n position: sticky;\n z-index: ${zIndexes.anchor};\n background-color: var(--base-color-white);\n`;\n\nexport const StickyBarGrid = styled(Grid)<IStickyBarGridProps>`\n ${({ hideBottomBorder }) => !hideBottomBorder && 'border-bottom: 2px solid var(--base-color-lightgrey);'}\n padding: 28px 0 26px;\n\n @media ${devices.mobileAndTablet} {\n padding: 24px 0 28px;\n }\n\n @media ${devices.mobile} {\n border-bottom: none;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport zIndexes from '../../../styles/zIndexes';\nimport { Grid } from '../../atoms';\n\nexport const InnerModal = styled.div`\n padding: 62px;\n background-color: var(--base-color-white);\n z-index: ${zIndexes.popup};\n position: relative;\n\n @media ${devices.smallMobile}, ${devices.mobile} {\n height: 100vh;\n padding: 62px 0 0;\n }\n`;\n\nexport const CloseButton = styled.button`\n position: absolute;\n top: 0;\n right: 0;\n margin: 15px;\n height: 26px;\n width: 26px;\n padding: 0;\n background-color: transparent;\n border: none;\n cursor: pointer;\n @media ${devices.tablet} {\n margin: 25px;\n }\n @media ${devices.desktop}, ${devices.largeDesktop} {\n margin: 30px;\n }\n`;\n\nexport const ContentWrapper = styled.div``;\n\nexport const Overlay = styled(Grid)`\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n align-content: center;\n background-color: rgba(0, 0, 0, 0.4);\n`;\n","import React, { FunctionComponent } from 'react';\nimport Modal from 'react-modal';\nimport ScrollLock from 'react-scrolllock';\nimport { useMobile } from '../../../helpers/devices';\nimport zIndexes from '../../../styles/zIndexes';\nimport { GridItem, Icon } from '../../atoms';\nimport { CloseButton, ContentWrapper, InnerModal, Overlay } from './ModalWindow.style';\nimport { ModalWindowProps } from '../../../types';\n\nconst MAX_Z_INDEX = 9999999999;\n\nif (Modal.defaultStyles.content) {\n Modal.defaultStyles.content.position = 'static';\n}\n\n/**\n * A ModalWindow component, leveraging React Modal for rendering modals with enhanced accessibility\n * and styling customization. This component is designed to be flexible for various use cases, with\n * support for mobile responsiveness, custom z-indexes, and a close button.\n *\n * # Usage\n * This component is intended to be used in React applications where modal functionality is required.\n * It supports a range of props for customization, including isOpen, setIsOpen, children, appElementId,\n * and accepts all additional props supported by React Modal for further configuration.\n *\n * ## Basic Example\n * ```tsx\n * import React, { useState } from 'react';\n * import ModalWindow from './ModalWindow';\n *\n * const App = () => {\n * const [isOpen, setIsOpen] = useState(false);\n *\n * const toggleModal = () => setIsOpen(!isOpen);\n *\n * return (\n * <>\n * <button onClick={toggleModal}>Open Modal</button>\n * <ModalWindow\n * isOpen={isOpen}\n * setIsOpen={setIsOpen}\n * appElementId=\"root\"\n * >\n * <div>Modal Content Here</div>\n * </ModalWindow>\n * </>\n * );\n * }\n * ```\n *\n * ## Advanced Usage\n * You can further customize the modal by directly passing props supported by React Modal.\n * This component adapts its z-index based on the device type (mobile or desktop) and allows for an\n * accessible close functionality.\n *\n * ```tsx\n * <ModalWindow\n * isOpen={isOpen}\n * setIsOpen={setIsOpen}\n * appElementId=\"root\"\n * shouldCloseOnOverlayClick={true}\n * >\n * <YourCustomComponent />\n * </ModalWindow>\n * ```\n *\n * # Props\n * - `isOpen`: Boolean indicating if the modal is open.\n * - `setIsOpen`: Function to set the open state of the modal.\n * - `children`: Content to be displayed within the modal.\n * - `appElementId`: ID of the app element to assist with accessibility.\n * - All other props are passed directly to the underlying React Modal component, allowing for extensive customization.\n *\n * # Design and Accessibility\n * This component automatically applies a `ScrollLock` when the modal is open to prevent background\n * scrolling and sets appropriate z-index values to ensure the modal is layered correctly on the page.\n * It also configures the modal for accessibility, including support for closing on ESC and setting\n * `aria-modal` to true.\n */\nconst ModalWindow: FunctionComponent<ModalWindowProps> = ({\n isOpen,\n setIsOpen,\n children,\n appElementId,\n ...modalProps\n}): React.ReactElement => {\n const isMobile = useMobile();\n\n const customStyles: Modal.Styles = {\n overlay: {\n zIndex: isMobile ? MAX_Z_INDEX : zIndexes.overlay,\n },\n content: {\n zIndex: isMobile ? MAX_Z_INDEX : zIndexes.popup,\n background: 'none',\n border: 'none',\n },\n };\n\n const appElement =\n typeof window !== 'undefined' && typeof document.getElementById === 'function'\n ? document.getElementById(appElementId || 'app') || undefined\n : undefined;\n\n const closeModalHandler = (): void => {\n setIsOpen(false);\n };\n\n return (\n <Modal\n isOpen={isOpen}\n style={customStyles}\n appElement={appElement}\n shouldCloseOnEsc\n onRequestClose={closeModalHandler}\n aria-modal=\"true\"\n {...modalProps}\n >\n <Overlay>\n <GridItem\n columnStartDesktop={6}\n columnSpanDesktop={6}\n columnStartDevice={3}\n columnSpanDevice={10}\n columnStartSmallDevice={1}\n columnSpanSmallDevice={14}\n >\n <InnerModal>\n <CloseButton onClick={closeModalHandler} aria-label=\"Close modal window\" tabIndex={0}>\n <Icon iconName=\"Close\" />\n </CloseButton>\n <ContentWrapper>{children}</ContentWrapper>\n </InnerModal>\n </GridItem>\n <ScrollLock />\n </Overlay>\n </Modal>\n );\n};\n\nexport default ModalWindow;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createGlobalStyle, GlobalStyleComponent } from 'styled-components';\nimport { devices } from './viewports';\n\nconst GlobalStyles: GlobalStyleComponent<any, any> = createGlobalStyle`\n html {\n --base-color-primary: ${({ theme }) => theme.colors.primary};\n --base-color-core: ${({ theme }) => theme.colors.core};\n --base-color-stream: ${({ theme }) => theme.colors.stream};\n --base-color-cinema: ${({ theme }) => theme.colors.cinema};\n --base-color-white: ${({ theme }) => theme.colors.white};\n --base-color-black: ${({ theme }) => theme.colors.black};\n --base-color-dark-grey: ${({ theme }) => theme.colors.darkgrey};\n --base-color-mid-grey: ${({ theme }) => theme.colors.midgrey};\n --base-color-light-grey: ${({ theme }) => theme.colors.lightgrey};\n --error-color-state: ${({ theme }) => theme.colors.error};\n --medium-color-state: ${({ theme }) => theme.colors.medium};\n --good-color-state: ${({ theme }) => theme.colors.good};\n --base-color-darkgrey: ${({ theme }) => theme.colors.darkgrey};\n --base-color-midgrey: ${({ theme }) => theme.colors.midgrey};\n --base-color-lightgrey: ${({ theme }) => theme.colors.lightgrey};\n --base-color-transparent: transparent;\n --base-color-errorstate: ${({ theme }) => theme.colors.error};\n --base-color-mediumstate: ${({ theme }) => theme.colors.medium};\n --base-color-goodstate: ${({ theme }) => theme.colors.good};\n --base-color-progress: ${({ theme }) => theme.colors.progress};\n --base-color-navigation: ${({ theme }) => theme.colors.navigation};\n --base-color-lapislazuli: ${({ theme }) => theme.colors.lapisLazuli};\n --base-color-lemonchiffon: ${({ theme }) => theme.colors.lemonChiffon};\n\n --button-height: ${({ theme }) => theme.spacing[12]};\n --button-line-height: ${({ theme }) => theme.fonts.desktop.lineHeights.buttons};\n --button-padding-x: ${({ theme }) => theme.buttons.paddingX};\n --button-padding-y: ${({ theme }) => theme.buttons.paddingY};\n --button-padding-y-icon: ${({ theme }) => theme.buttons.paddingYIcon};\n --button-icon-margin: ${({ theme }) => theme.buttons.iconMargin};\n --button-icon-width: ${({ theme }) => theme.buttons.iconWidth};\n --button-icon-height: ${({ theme }) => theme.buttons.iconHeight};\n --button-font-size: ${({ theme }) => theme.fonts.desktop.sizes.buttons};\n --button-font-weight: ${({ theme }) => theme.fonts.desktop.weights.buttons};\n\n --font-size-header-1: ${({ theme }) => theme.fonts.desktop.sizes.headers[1]};\n --font-weight-header-1: ${({ theme }) => theme.fonts.desktop.weights.headers[1]};\n --letter-spacing-header-1: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[1]};\n --line-height-header-1: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[1]};\n --margin-header-1: ${({ theme }) => theme.fonts.desktop.margins.headers[1]};\n\n --font-size-header-2: ${({ theme }) => theme.fonts.desktop.sizes.headers[2]};\n --font-weight-header-2: ${({ theme }) => theme.fonts.desktop.weights.headers[2]};\n --letter-spacing-header-2: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[2]};\n --line-height-header-2: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[2]};\n --margin-header-2: ${({ theme }) => theme.fonts.desktop.margins.headers[2]};\n\n --font-size-header-3: ${({ theme }) => theme.fonts.desktop.sizes.headers[3]};\n --font-weight-header-3: ${({ theme }) => theme.fonts.desktop.weights.headers[3]};\n --letter-spacing-header-3: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[3]};\n --line-height-header-3: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[3]};\n --margin-header-3: ${({ theme }) => theme.fonts.desktop.margins.headers[3]};\n\n --font-size-header-4: ${({ theme }) => theme.fonts.desktop.sizes.headers[4]};\n --font-weight-header-4: ${({ theme }) => theme.fonts.desktop.weights.headers[4]};\n --letter-spacing-header-4: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[4]};\n --line-height-header-4: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[4]};\n --margin-header-4: ${({ theme }) => theme.fonts.desktop.margins.headers[4]};\n\n --font-size-header-5: ${({ theme }) => theme.fonts.desktop.sizes.headers[5]};\n --font-weight-header-5: ${({ theme }) => theme.fonts.desktop.weights.headers[5]};\n --letter-spacing-header-5: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[5]};\n --line-height-header-5: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[5]};\n --margin-header-5: ${({ theme }) => theme.fonts.desktop.margins.headers[5]};\n\n --font-size-header-6: ${({ theme }) => theme.fonts.desktop.sizes.headers[6]};\n --font-weight-header-6: ${({ theme }) => theme.fonts.desktop.weights.headers[6]};\n --letter-spacing-header-6: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[6]};\n --line-height-header-6: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[6]};\n --margin-header-6: ${({ theme }) => theme.fonts.desktop.margins.headers[6]};\n\n --font-size-altHeader-3: ${({ theme }) => theme.fonts.desktop.sizes.altHeaders[3]};\n --font-weight-altHeader-3: ${({ theme }) => theme.fonts.desktop.weights.altHeaders[3]};\n --letter-spacing-altHeader-3: ${({ theme }) => theme.fonts.desktop.letterSpacing.altHeaders[3]};\n --line-height-altHeader-3: ${({ theme }) => theme.fonts.desktop.lineHeights.altHeaders[3]};\n\n --font-size-altHeader-4: ${({ theme }) => theme.fonts.desktop.sizes.altHeaders[4]};\n --font-weight-altHeader-4: ${({ theme }) => theme.fonts.desktop.weights.altHeaders[4]};\n --letter-spacing-altHeader-4: ${({ theme }) => theme.fonts.desktop.letterSpacing.altHeaders[4]};\n --line-height-altHeader-4: ${({ theme }) => theme.fonts.desktop.lineHeights.altHeaders[4]};\n\n --font-size-altHeader-5: ${({ theme }) => theme.fonts.desktop.sizes.altHeaders[5]};\n --font-weight-altHeader-5: ${({ theme }) => theme.fonts.desktop.weights.altHeaders[5]};\n --letter-spacing-altHeader-5: ${({ theme }) => theme.fonts.desktop.letterSpacing.altHeaders[5]};\n --line-height-altHeader-5: ${({ theme }) => theme.fonts.desktop.lineHeights.altHeaders[5]};\n\n --font-size-altHeader-6: ${({ theme }) => theme.fonts.desktop.sizes.altHeaders[6]};\n --font-weight-altHeader-6: ${({ theme }) => theme.fonts.desktop.weights.altHeaders[6]};\n --letter-spacing-altHeader-6: ${({ theme }) => theme.fonts.desktop.letterSpacing.altHeaders[6]};\n --line-height-altHeader-6: ${({ theme }) => theme.fonts.desktop.lineHeights.altHeaders[6]};\n\n --font-size-overline-1: ${({ theme }) => theme.fonts.desktop.sizes.overline[1]};\n --font-weight-overline-1: ${({ theme }) => theme.fonts.desktop.weights.overline[1]};\n --letter-spacing-overline-1: ${({ theme }) => theme.fonts.desktop.letterSpacing.overline[1]};\n --line-height-overline-1: ${({ theme }) => theme.fonts.desktop.lineHeights.overline[1]};\n\n --font-size-overline-2: ${({ theme }) => theme.fonts.desktop.sizes.overline[2]};\n --font-weight-overline-2: ${({ theme }) => theme.fonts.desktop.weights.overline[2]};\n --letter-spacing-overline-2: ${({ theme }) => theme.fonts.desktop.letterSpacing.overline[2]};\n --line-height-overline-2: ${({ theme }) => theme.fonts.desktop.lineHeights.overline[2]};\n\n --font-size-overline-3: ${({ theme }) => theme.fonts.desktop.sizes.overline[3]};\n --font-weight-overline-3: ${({ theme }) => theme.fonts.desktop.weights.overline[3]};\n --letter-spacing-overline-3: ${({ theme }) => theme.fonts.desktop.letterSpacing.overline[3]};\n --line-height-overline-3: ${({ theme }) => theme.fonts.desktop.lineHeights.overline[3]}; \n\n --font-size-overline-4: ${({ theme }) => theme.fonts.desktop.sizes.overline[4]};\n --font-weight-overline-4: ${({ theme }) => theme.fonts.desktop.weights.overline[4]};\n --letter-spacing-overline-4: ${({ theme }) => theme.fonts.desktop.letterSpacing.overline[4]};\n --line-height-overline-4: ${({ theme }) => theme.fonts.desktop.lineHeights.overline[4]};\n\n --font-size-body-1: ${({ theme }) => theme.fonts.desktop.sizes.body[1]};\n --font-weight-body-1: ${({ theme }) => theme.fonts.desktop.weights.body[1]};\n --letter-spacing-body-1: ${({ theme }) => theme.fonts.desktop.letterSpacing.body[1]};\n --line-height-body-1: ${({ theme }) => theme.fonts.desktop.lineHeights.body[1]};\n\n --font-size-body-2: ${({ theme }) => theme.fonts.desktop.sizes.body[2]};\n --font-weight-body-2: ${({ theme }) => theme.fonts.desktop.weights.body[2]};\n --letter-spacing-body-2: ${({ theme }) => theme.fonts.desktop.letterSpacing.body[2]};\n --line-height-body-2: ${({ theme }) => theme.fonts.desktop.lineHeights.body[2]};\n\n --font-size-body-3: ${({ theme }) => theme.fonts.desktop.sizes.body[3]};\n --font-weight-body-3: ${({ theme }) => theme.fonts.desktop.weights.body[3]};\n --letter-spacing-body-3: ${({ theme }) => theme.fonts.desktop.letterSpacing.body[3]};\n --line-height-body-3: ${({ theme }) => theme.fonts.desktop.lineHeights.body[3]};\n\n --font-size-subtitle-1: ${({ theme }) => theme.fonts.desktop.sizes.subtitles[1]};\n --font-weight-subtitle-1: ${({ theme }) => theme.fonts.desktop.weights.subtitles[1]};\n --letter-spacing-subtitle-1: ${({ theme }) => theme.fonts.desktop.letterSpacing.subtitles[1]};\n --line-height-subtitle-1: ${({ theme }) => theme.fonts.desktop.lineHeights.subtitles[1]};\n \n --font-size-subtitle-2: ${({ theme }) => theme.fonts.desktop.sizes.subtitles[2]};\n --font-weight-subtitle-2: ${({ theme }) => theme.fonts.desktop.weights.subtitles[2]};\n --letter-spacing-subtitle-2: ${({ theme }) => theme.fonts.desktop.letterSpacing.subtitles[2]};\n --line-height-subtitle-2: ${({ theme }) => theme.fonts.desktop.lineHeights.subtitles[2]};\n\n --font-size-title-description: ${({ theme }) => theme.fonts.desktop.sizes.titleDescription};\n --line-height-title-description: ${({ theme }) => theme.fonts.desktop.lineHeights.titleDescription};\n --line-height-listing: ${({ theme }) => theme.fonts.desktop.lineHeights.listing};\n --font-size-individual-listing-name: ${({ theme }) => theme.fonts.desktop.sizes.listing};\n --line-height-individual-listing-name: ${({ theme }) => theme.fonts.desktop.lineHeights.peopleListing};\n --line-height-people-listing-gap: ${({ theme }) => theme.spacing[6]};\n\n --font-family-header: ${({ theme }) => theme.fonts.desktop.families.headers};\n --font-family-altHeader: ${({ theme }) => theme.fonts.desktop.families.altHeaders};\n --font-family-body: ${({ theme }) => theme.fonts.desktop.families.body};\n --font-family-body-italics: ${({ theme }) => theme.fonts.desktop.families.bodyItalics};\n --font-family-buttons: ${({ theme }) => theme.fonts.desktop.families.buttons};\n --font-family-overline: ${({ theme }) => theme.fonts.desktop.families.overline};\n --font-family-subtitle: ${({ theme }) => theme.fonts.desktop.families.subtitles};\n --font-family-people-listing-role: ${({ theme }) => theme.fonts.desktop.families.peopleListingRole};\n --font-family-people-listing-name: ${({ theme }) => theme.fonts.desktop.families.body};\n\n --font-feature-settings-header: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.headers};\n --font-feature-settings-altHeader: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.altHeaders};\n --font-feature-settings-overline: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.overline};\n --font-feature-settings-subtitle: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.subtitles};\n --font-feature-settings-body: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.body};\n --font-feature-settings-navigation: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.navigation};\n\n --text-transform-header: ${({ theme }) => theme.fonts.desktop.transforms.headers};\n --text-transform-altHeader: ${({ theme }) => theme.fonts.desktop.transforms.altHeaders};\n --text-transform-body: ${({ theme }) => theme.fonts.desktop.transforms.body};\n --text-transform-overline: ${({ theme }) => theme.fonts.desktop.transforms.overline};\n --text-transform-subtitle: ${({ theme }) => theme.fonts.desktop.transforms.subtitles};\n\n --word-break-header: ${({ theme }) => theme.fonts.desktop.wordBreak.headers};\n --word-break-altHeader: ${({ theme }) => theme.fonts.desktop.wordBreak.altHeaders};\n --word-break-body: ${({ theme }) => theme.fonts.desktop.wordBreak.body};\n --word-break-overline: ${({ theme }) => theme.fonts.desktop.wordBreak.overline};\n --word-break-subtitle: ${({ theme }) => theme.fonts.desktop.wordBreak.subtitles};\n\n --font-family-navigation: ${({ theme }) => theme.fonts.desktop.families.navigation};\n --font-size-navigation: ${({ theme }) => theme.fonts.desktop.sizes.navigation};\n --font-weight-navigation: ${({ theme }) => theme.fonts.desktop.weights.navigation};\n --line-height-navigation: ${({ theme }) => theme.fonts.desktop.lineHeights.navigation};\n --text-transform-navigation: ${({ theme }) => theme.fonts.desktop.transforms.navigation};\n --letter-spacing-navigation: ${({ theme }) => theme.fonts.desktop.letterSpacing.navigation};\n\n --navigation-small-gap: ${({ theme }) => theme.spacing[4]};\n --navigation-middle-gap: ${({ theme }) => theme.spacing[5]};\n --navigation-large-gap: ${({ theme }) => theme.spacing[6]};\n --navigation-xlarge-gap: ${({ theme }) => theme.spacing[9]};\n --navigation-large-margin: ${({ theme }) => theme.spacing[15]};\n\n --rotator-button-width: ${({ theme }) => theme.spacing[15]};\n --rotator-button-icon-width: ${({ theme }) => theme.spacing[9]};\n\n --font-size-search: ${({ theme }) => theme.fonts.desktop.sizes.search};\n --font-family-search: ${({ theme }) => theme.fonts.desktop.families.search};\n\n --grid-margin: ${({ theme }) => theme.grid.desktop.margin};\n --grid-outer-margin: ${({ theme }) => theme.grid.desktop.outerMargin};\n --grid-template-columns: calc(${({ theme }) => theme.grid.desktop.outerMargin} - ${({ theme }) =>\n theme.grid.desktop.gap}) calc(${({ theme }) => theme.grid.desktop.margin} - ${({ theme }) =>\n theme.grid.desktop.outerMargin} - ${({ theme }) => theme.grid.desktop.gap}) repeat(12, minmax(0,1fr)) calc(${({\n theme,\n }) => theme.grid.desktop.margin} - ${({ theme }) => theme.grid.desktop.outerMargin} - ${({ theme }) =>\n theme.grid.desktop.gap}) calc(${({ theme }) => theme.grid.desktop.outerMargin} - ${({ theme }) =>\n theme.grid.desktop.gap});\n --grid-column-gap: ${({ theme }) => theme.grid.desktop.gap};\n --grid-margin: 0;\n\n --footer-height: ${({ theme }) => theme.footer.desktop.height};\n --footer-padding-top: ${({ theme }) => theme.footer.desktop.paddingTop};\n --footer-padding-bottom: ${({ theme }) => theme.footer.desktop.paddingBottom};\n --footer-items-gap: ${({ theme }) => theme.footer.desktop.itemsGap};\n --footer-media-gap: ${({ theme }) => theme.footer.desktop.mediaGap};\n --footer-media-icon-width: ${({ theme }) => theme.footer.desktop.mediaIconWidth};\n --footer-media-icon-height: ${({ theme }) => theme.footer.desktop.mediaIconHeight};\n --footer-vertical-spacing-lg: ${({ theme }) => theme.footer.desktop.verticalSpacingLarge};\n --footer-vertical-spacing-sm: ${({ theme }) => theme.footer.desktop.verticalSpacingSmall};\n\n --text-link-underline-offset: ${({ theme }) => theme.spacing[2]};\n\n --cards-spacing-stack: ${({ theme }) => theme.spacing[10]};\n\n --editorial-subtitle-margin-bottom: ${({ theme }) => theme.spacing[4]};\n --editorial-margin-between: ${({ theme }) => theme.spacing[6]};\n --editorial-spacing-hover: ${({ theme }) => theme.spacing[1]};\n --anchor-tabs-height: 70px;\n \n\n @media ${devices.mobile} {\n\n --font-size-header-1: ${({ theme }) => theme.fonts.mobile.sizes.headers[1]};\n --font-weight-header-1: ${({ theme }) => theme.fonts.mobile.weights.headers[1]};\n --letter-spacing-header-1: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[1]};\n --line-height-header-1: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[1]};\n \n --font-size-header-2: ${({ theme }) => theme.fonts.mobile.sizes.headers[2]};\n --font-weight-header-2: ${({ theme }) => theme.fonts.mobile.weights.headers[2]};\n --letter-spacing-header-2: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[2]};\n --line-height-header-2: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[2]};\n \n --font-size-header-3: ${({ theme }) => theme.fonts.mobile.sizes.headers[3]};\n --font-weight-header-3: ${({ theme }) => theme.fonts.mobile.weights.headers[3]};\n --letter-spacing-header-3: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[3]};\n --line-height-header-3: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[3]};\n \n --font-size-header-4: ${({ theme }) => theme.fonts.mobile.sizes.headers[4]};\n --font-weight-header-4: ${({ theme }) => theme.fonts.mobile.weights.headers[4]};\n --letter-spacing-header-4: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[4]};\n --line-height-header-4: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[4]};\n \n --font-size-header-5: ${({ theme }) => theme.fonts.mobile.sizes.headers[5]};\n --font-weight-header-5: ${({ theme }) => theme.fonts.mobile.weights.headers[5]};\n --letter-spacing-header-5: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[5]};\n --line-height-header-5: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[5]};\n \n --font-size-header-6: ${({ theme }) => theme.fonts.mobile.sizes.headers[6]};\n --font-weight-header-6: ${({ theme }) => theme.fonts.mobile.weights.headers[6]};\n --letter-spacing-header-6: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[6]};\n --line-height-header-6: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[6]};\n \n --font-size-altHeader-3: ${({ theme }) => theme.fonts.mobile.sizes.altHeaders[3]};\n --font-weight-altHeader-3: ${({ theme }) => theme.fonts.mobile.weights.altHeaders[3]};\n --letter-spacing-altHeader-3: ${({ theme }) => theme.fonts.mobile.letterSpacing.altHeaders[3]};\n --line-height-altHeader-3: ${({ theme }) => theme.fonts.mobile.lineHeights.altHeaders[3]};\n \n --font-size-altHeader-4: ${({ theme }) => theme.fonts.mobile.sizes.altHeaders[4]};\n --font-weight-altHeader-4: ${({ theme }) => theme.fonts.mobile.weights.altHeaders[4]};\n --letter-spacing-altHeader-4: ${({ theme }) => theme.fonts.mobile.letterSpacing.altHeaders[4]};\n --line-height-altHeader-4: ${({ theme }) => theme.fonts.mobile.lineHeights.altHeaders[4]};\n \n --font-size-altHeader-5: ${({ theme }) => theme.fonts.mobile.sizes.altHeaders[5]};\n --font-weight-altHeader-5: ${({ theme }) => theme.fonts.mobile.weights.altHeaders[5]};\n --letter-spacing-altHeader-5: ${({ theme }) => theme.fonts.mobile.letterSpacing.altHeaders[5]};\n --line-height-altHeader-5: ${({ theme }) => theme.fonts.mobile.lineHeights.altHeaders[5]};\n \n --font-size-altHeader-6: ${({ theme }) => theme.fonts.mobile.sizes.altHeaders[6]};\n --font-weight-altHeader-6: ${({ theme }) => theme.fonts.mobile.weights.altHeaders[6]};\n --letter-spacing-altHeader-6: ${({ theme }) => theme.fonts.mobile.letterSpacing.altHeaders[6]};\n --line-height-altHeader-6: ${({ theme }) => theme.fonts.mobile.lineHeights.altHeaders[6]};\n \n --font-size-overline-1: ${({ theme }) => theme.fonts.mobile.sizes.overline[1]};\n --font-weight-overline-1: ${({ theme }) => theme.fonts.mobile.weights.overline[1]};\n --letter-spacing-overline-1: ${({ theme }) => theme.fonts.mobile.letterSpacing.overline[1]};\n --line-height-overline-1: ${({ theme }) => theme.fonts.mobile.lineHeights.overline[1]};\n \n --font-size-overline-2: ${({ theme }) => theme.fonts.mobile.sizes.overline[2]};\n --font-weight-overline-2: ${({ theme }) => theme.fonts.mobile.weights.overline[2]};\n --letter-spacing-overline-2: ${({ theme }) => theme.fonts.mobile.letterSpacing.overline[2]};\n --line-height-overline-2: ${({ theme }) => theme.fonts.mobile.lineHeights.overline[2]};\n \n --font-size-body-1: ${({ theme }) => theme.fonts.mobile.sizes.body[1]};\n --font-weight-body-1: ${({ theme }) => theme.fonts.mobile.weights.body[1]};\n --letter-spacing-body-1: ${({ theme }) => theme.fonts.mobile.letterSpacing.body[1]};\n --line-height-body-1: ${({ theme }) => theme.fonts.mobile.lineHeights.body[1]};\n \n --font-size-body-2: ${({ theme }) => theme.fonts.mobile.sizes.body[2]};\n --font-weight-body-2: ${({ theme }) => theme.fonts.mobile.weights.body[2]};\n --letter-spacing-body-2: ${({ theme }) => theme.fonts.mobile.letterSpacing.body[2]};\n --line-height-body-2: ${({ theme }) => theme.fonts.mobile.lineHeights.body[2]};\n \n --font-size-body-3: ${({ theme }) => theme.fonts.mobile.sizes.body[3]};\n --font-weight-body-3: ${({ theme }) => theme.fonts.mobile.weights.body[3]};\n --letter-spacing-body-3: ${({ theme }) => theme.fonts.mobile.letterSpacing.body[3]};\n --line-height-body-3: ${({ theme }) => theme.fonts.mobile.lineHeights.body[3]};\n \n --font-size-subtitle-1: ${({ theme }) => theme.fonts.mobile.sizes.subtitles[1]};\n --font-weight-subtitle-1: ${({ theme }) => theme.fonts.mobile.weights.subtitles[1]};\n --letter-spacing-subtitle-1: ${({ theme }) => theme.fonts.mobile.letterSpacing.subtitles[1]};\n --line-height-subtitle-1: ${({ theme }) => theme.fonts.mobile.lineHeights.subtitles[1]};\n \n --font-size-subtitle-2: ${({ theme }) => theme.fonts.mobile.sizes.subtitles[2]};\n --font-weight-subtitle-2: ${({ theme }) => theme.fonts.mobile.weights.subtitles[2]};\n --letter-spacing-subtitle-2: ${({ theme }) => theme.fonts.mobile.letterSpacing.subtitles[2]};\n --line-height-subtitle-2: ${({ theme }) => theme.fonts.mobile.lineHeights.subtitles[2]};\n\n --font-size-title-description: ${({ theme }) => theme.fonts.mobile.sizes.titleDescription};\n --line-height-title-description: ${({ theme }) => theme.fonts.mobile.lineHeights.titleDescription};\n --line-height-people-listing-gap: ${({ theme }) => theme.spacing[4]};\n\n --font-size-search: ${({ theme }) => theme.fonts.mobile.sizes.search};\n --font-family-search: ${({ theme }) => theme.fonts.mobile.families.search};\n\n --font-family-header: ${({ theme }) => theme.fonts.mobile.families.headers};\n --font-family-altHeader: ${({ theme }) => theme.fonts.mobile.families.altHeaders};\n --font-family-body: ${({ theme }) => theme.fonts.mobile.families.body};\n --font-family-body-italics: ${({ theme }) => theme.fonts.mobile.families.bodyItalics};\n --font-family-buttons: ${({ theme }) => theme.fonts.mobile.families.buttons};\n --font-family-overline: ${({ theme }) => theme.fonts.mobile.families.overline};\n --font-family-subtitle: ${({ theme }) => theme.fonts.mobile.families.subtitles};\n --font-family-people-listing-role: ${({ theme }) => theme.fonts.mobile.families.peopleListingRole};\n --font-family-people-listing-name: ${({ theme }) => theme.fonts.mobile.families.body};\n \n --font-feature-settings-header: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.headers};\n --font-feature-settings-altHeader: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.altHeaders};\n --font-feature-settings-overline: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.overline};\n --font-feature-settings-subtitle: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.subtitles};\n --font-feature-settings-body: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.body};\n --font-feature-settings-navigation: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.navigation};\n \n --text-transform-header: ${({ theme }) => theme.fonts.mobile.transforms.headers};\n --text-transform-altHeader: ${({ theme }) => theme.fonts.mobile.transforms.altHeaders};\n --text-transform-body: ${({ theme }) => theme.fonts.mobile.transforms.body};\n --text-transform-overline: ${({ theme }) => theme.fonts.mobile.transforms.overline};\n --text-transform-subtitle: ${({ theme }) => theme.fonts.mobile.transforms.subtitles};\n \n --word-break-header: ${({ theme }) => theme.fonts.mobile.wordBreak.headers};\n --word-break-altHeader: ${({ theme }) => theme.fonts.mobile.wordBreak.altHeaders};\n --word-break-body: ${({ theme }) => theme.fonts.mobile.wordBreak.body};\n --word-break-overline: ${({ theme }) => theme.fonts.mobile.wordBreak.overline};\n --word-break-subtitle: ${({ theme }) => theme.fonts.mobile.wordBreak.subtitles};\n \n --grid-template-columns: calc(${({ theme }) => theme.grid.mobile.margin} - ${({ theme }) =>\n theme.grid.mobile.gap}) repeat(12, minmax(0, 1fr)) calc(${({ theme }) => theme.grid.mobile.margin} - ${({\n theme,\n }) => theme.grid.mobile.gap});\n --grid-column-gap: ${({ theme }) => theme.grid.mobile.gap};\n --grid-margin: ${({ theme }) => theme.grid.mobile.margin};\n\n --footer-height: ${({ theme }) => theme.footer.mobile.height};\n --footer-padding-top: ${({ theme }) => theme.footer.mobile.paddingTop};\n --footer-padding-bottom: ${({ theme }) => theme.footer.mobile.paddingBottom};\n --footer-items-gap: ${({ theme }) => theme.footer.mobile.itemsGap};\n --footer-media-gap: ${({ theme }) => theme.footer.mobile.mediaGap};\n --footer-media-icon-width: ${({ theme }) => theme.footer.mobile.mediaIconWidth};\n --footer-media-icon-height: ${({ theme }) => theme.footer.mobile.mediaIconHeight};\n --footer-vertical-spacing-lg: ${({ theme }) => theme.footer.mobile.verticalSpacingLarge};\n --footer-vertical-spacing-sm: ${({ theme }) => theme.footer.mobile.verticalSpacingSmall};\n\n --anchor-tabs-height: 60px;\n --rotator-button-width: ${({ theme }) => theme.spacing[10]};\n --rotator-button-icon-width: ${({ theme }) => theme.spacing[6]};\n }\n\n @media ${devices.tablet} {\n --grid-template-columns: calc(${({ theme }) => theme.grid.tablet.margin} - ${({ theme }) =>\n theme.grid.tablet.gap}) repeat(12, minmax(0, 1fr)) calc(${({ theme }) => theme.grid.tablet.margin} - ${({\n theme,\n }) => theme.grid.tablet.gap});\n --grid-column-gap: ${({ theme }) => theme.grid.tablet.gap};\n --grid-margin: ${({ theme }) => theme.grid.tablet.margin};\n --rotator-button-width: ${({ theme }) => theme.spacing[10]};\n --rotator-button-icon-width: ${({ theme }) => theme.spacing[6]};\n\n --font-size-header-6: ${({ theme }) => theme.fonts.tablet.sizes.headers[6]};\n\n --font-size-altHeader-4: ${({ theme }) => theme.fonts.tablet.sizes.altHeaders[4]};\n\n --font-size-body-1: ${({ theme }) => theme.fonts.tablet.sizes.body[1]};\n }\n\n @media ${devices.desktop} {\n \n }\n\n @media ${devices.largeDesktop} {\n \n }\n }\n`;\n\nexport default GlobalStyles;\n","import React, { FunctionComponent } from 'react';\nimport { AccordionsContainer } from './Accordions.style';\nimport { IAccordionsProps, IAccordionProps } from '../../../types/types';\nimport Accordion from '../Accordion';\n\nconst Accordions: FunctionComponent<IAccordionsProps> = ({ items = [] }) => {\n const isLastAccordion = (index: number) => items.length - 1 === index;\n\n return (\n <AccordionsContainer>\n {items.map((accordion: IAccordionProps, index: number) => {\n return (\n <Accordion\n key={`${accordion.title}-${index}`}\n title={accordion.title}\n showLine={isLastAccordion(index)}\n visibleStandfirst={accordion.visibleStandfirst}\n contentType={accordion.contentType}\n displayLevel={accordion.displayLevel}\n semanticLevel={accordion.semanticLevel}\n >\n {accordion.children}\n </Accordion>\n );\n })}\n </AccordionsContainer>\n );\n};\n\nexport default Accordions;\n","/* eslint-disable no-unsafe-optional-chaining */\nimport React, { FunctionComponent, useEffect, useRef, useState, MouseEvent } from 'react';\nimport { AnchorBarTab, IAnchorBarAbsolutePositionParams, IAnchorBarProps } from '../../../types/navigation';\nimport { GridItem } from '../../atoms/Grid';\nimport { Icon } from '../../atoms/Icons';\nimport TabLink from '../../atoms/TabLink';\nimport {\n AnchorTabbarWrapper,\n TabsGrid,\n TabsList,\n TabsWrapper,\n ArrowsContainer,\n ArrowWrapper,\n LIST_ITEM_GAP,\n} from './AnchorTabBar.style';\n\nconst AnchorTabBar: FunctionComponent<IAnchorBarProps> = ({\n tabs,\n onTabClick,\n activeTab,\n absolutePositionParams,\n bottomBorder = false,\n}) => {\n const tabListRef = useRef<HTMLUListElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [selectedItem, setSelectedItem] = useState<string>(activeTab || '');\n const [tabsOverflow, setTabsOverflow] = useState<boolean>(false);\n const [canScrollToLeft, setCanScrollToLeft] = useState<boolean>(false);\n const [canScrollToRight, setCanScrollToRight] = useState<boolean>(tabsOverflow);\n let timer: NodeJS.Timeout | null = null;\n\n const hasTwoArrows = canScrollToRight && canScrollToLeft;\n const isSelectedItem = (id: string) => id === selectedItem;\n const onClicktab = (e: MouseEvent, id: string) => {\n if (onTabClick) {\n onTabClick(e, id);\n }\n setSelectedItem(id);\n };\n\n const getScrollWidth = () => {\n let width = 0;\n const selectedItemIndex = tabs.findIndex((el) => el.id === selectedItem);\n const tabLinks = document.getElementsByClassName('anchor-tab-bar-tablink');\n for (let i = 0; i < selectedItemIndex; ++i) {\n width += tabLinks[i].scrollWidth + LIST_ITEM_GAP;\n }\n return width;\n };\n\n // eslint-disable-next-line default-param-last\n const changeWrapperVisibility = (showWrapper: boolean = false, topOffset?: number) => {\n const wrapperEl = wrapperRef.current as HTMLDivElement;\n wrapperEl.style.position = 'absolute';\n wrapperEl.style.visibility = showWrapper && topOffset !== undefined ? 'visible' : 'hidden';\n if (showWrapper && topOffset !== undefined) wrapperEl.style.top = `${topOffset}px`;\n };\n\n const handleScrollForAbsolutePosition = () => {\n const { navigationHeight = 0, topOffset = 0 } = absolutePositionParams as IAnchorBarAbsolutePositionParams;\n if (wrapperRef.current && window.pageYOffset > topOffset + navigationHeight) {\n changeWrapperVisibility();\n } else if (wrapperRef.current && window.pageYOffset < topOffset + navigationHeight) {\n changeWrapperVisibility(true, topOffset);\n }\n\n if (timer !== null) clearTimeout(timer);\n\n timer = setTimeout(() => {\n if (window.pageYOffset > topOffset + navigationHeight && wrapperRef.current) {\n changeWrapperVisibility(true, window.pageYOffset - navigationHeight);\n }\n }, 300);\n };\n\n // We use this behavior only on iOS devices because there is a known issue that\n // sticky elements lose their stickiness when a keyboard appears on the screen\n useEffect(() => {\n if (absolutePositionParams) {\n changeWrapperVisibility(true, absolutePositionParams.topOffset);\n document.addEventListener('scroll', handleScrollForAbsolutePosition);\n\n return () => {\n document.removeEventListener('scroll', handleScrollForAbsolutePosition);\n };\n }\n return undefined;\n }, []);\n\n useEffect(() => {\n setTimeout(() => {\n if (tabListRef.current) tabListRef.current.scrollLeft += getScrollWidth();\n }, 500);\n }, []);\n\n useEffect(() => {\n const tabsIsOverflowed = (tabListRef.current?.scrollWidth || 0) > (tabListRef.current?.clientWidth || 0);\n setTabsOverflow(tabsIsOverflowed);\n setCanScrollToRight(tabsIsOverflowed);\n }, [tabListRef]);\n\n useEffect(() => {\n const scrollTriggerCheck = () => {\n const elementGap = 100;\n const reachedItem = tabs?.find((item: AnchorBarTab) => {\n const targetSectionElement = document.getElementById(item.id);\n if (!targetSectionElement) return false;\n const topDiff = targetSectionElement?.getBoundingClientRect().top - elementGap;\n return selectedItem !== item.id && topDiff > 0 && topDiff < elementGap;\n });\n if (window.scrollY === 0) {\n setSelectedItem(onTabClick ? selectedItem : '');\n } else if (reachedItem) {\n const { scrollLeft = 0, clientWidth = 0 } = tabListRef?.current || {};\n const tabLinkElement = document.getElementById(`tablink-${reachedItem.id}`) || {\n offsetLeft: 0,\n offsetWidth: 0,\n };\n const { offsetLeft, offsetWidth } = tabLinkElement;\n const isInView = offsetLeft >= scrollLeft && offsetLeft + offsetWidth < scrollLeft + clientWidth;\n if (!isInView && tabListRef?.current) {\n tabListRef.current.scrollLeft = offsetLeft;\n }\n setSelectedItem(reachedItem.id);\n }\n };\n document.addEventListener('scroll', scrollTriggerCheck);\n\n return () => document.removeEventListener('scroll', scrollTriggerCheck);\n }, [tabs, selectedItem, tabListRef]);\n\n let tabsColumnStart;\n if (tabsOverflow) {\n tabsColumnStart = canScrollToLeft ? 1 : 2;\n } else {\n tabsColumnStart = 3;\n }\n let tabsColumnSpan;\n if (tabsOverflow) {\n tabsColumnSpan = canScrollToLeft ? 15 : 14;\n } else {\n tabsColumnSpan = 12;\n }\n\n const scrollToRight = (): void => {\n if (tabListRef.current) {\n const scroll = tabListRef.current.scrollLeft;\n const newScroll = Math.min(tabListRef.current.clientWidth, tabListRef.current.scrollWidth - scroll);\n if (scroll - newScroll < LIST_ITEM_GAP) {\n tabListRef.current.scrollLeft += newScroll + LIST_ITEM_GAP;\n return;\n }\n tabListRef.current.scrollLeft += newScroll;\n }\n };\n\n const scrollToLeft = () => {\n if (tabListRef.current) {\n const scroll = tabListRef.current.scrollLeft;\n const newScroll = Math.max(0, scroll - tabListRef.current.clientWidth);\n if (newScroll < LIST_ITEM_GAP) {\n tabListRef.current.scrollLeft = newScroll - LIST_ITEM_GAP;\n return;\n }\n tabListRef.current.scrollLeft = newScroll;\n }\n };\n\n const onTabsScroll = () => {\n const { scrollLeft = 0, clientWidth = 0, scrollWidth = 0 } = tabListRef?.current || {};\n setCanScrollToLeft(scrollLeft > LIST_ITEM_GAP);\n setCanScrollToRight(scrollLeft + clientWidth + LIST_ITEM_GAP < scrollWidth);\n };\n\n return (\n <AnchorTabbarWrapper bottomBorder={bottomBorder} ref={wrapperRef} id=\"AnchorTabbarWrapper\">\n <TabsGrid>\n <GridItem\n columnStartDesktop={tabsColumnStart}\n columnSpanDesktop={tabsColumnSpan}\n columnStartDevice={2}\n columnSpanDevice={12}\n >\n <TabsWrapper data-testid=\"anchor-tabs\">\n <TabsList hasTwoArrows={hasTwoArrows} ref={tabListRef} tabsOverflow={tabsOverflow} onScroll={onTabsScroll}>\n {tabs.map(({ id, text, ...rest }) => (\n <li key={id}>\n <TabLink\n selected={isSelectedItem(id)}\n className=\"anchor-tab-bar-tablink\"\n id={`tablink-${id}`}\n onClick={(e) => onClicktab(e, id)}\n tabIndex={0}\n {...rest}\n >\n {text}\n </TabLink>\n </li>\n ))}\n </TabsList>\n {tabsOverflow ? (\n <ArrowsContainer fullWidth={hasTwoArrows}>\n {canScrollToLeft ? (\n <ArrowWrapper onClick={scrollToLeft}>\n <Icon iconName=\"Arrow\" direction=\"reverse\" />\n </ArrowWrapper>\n ) : null}\n {canScrollToRight ? (\n <ArrowWrapper onClick={scrollToRight}>\n <Icon iconName=\"Arrow\" />\n </ArrowWrapper>\n ) : null}\n </ArrowsContainer>\n ) : null}\n </TabsWrapper>\n </GridItem>\n </TabsGrid>\n </AnchorTabbarWrapper>\n );\n};\n\nexport default AnchorTabBar;\n","/* eslint-disable react/no-danger */\n/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { FunctionComponent } from 'react';\nimport { IAnnouncementBannerProps, ThemeType } from '../../../types/types';\nimport Theme from '../../../styles/ThemeProvider';\nimport { AnnouncementBannerWrapper, SvgContainer, ContentContainer } from './AnnouncementBanner.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport SvgIcon from '../../atoms/Icons/Icons';\nimport { Overline } from '../../atoms/Typography/Typography';\n\nconst AnnouncementBanner: FunctionComponent<IAnnouncementBannerProps> = ({ title, announcementText, time, icon }) => (\n <Theme theme={ThemeType.Core}>\n <AnnouncementBannerWrapper>\n <Grid>\n <GridItem columnStartDesktop={2} columnSpanDesktop={1} columnStartDevice={2} columnSpanDevice={1}>\n <SvgContainer>\n <SvgIcon iconName={icon} color=\"white\" />\n </SvgContainer>\n </GridItem>\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={3} columnSpanDevice={11}>\n <Overline level={1}>\n <span data-testid=\"titlecontainer\">{title}</span> (<span data-testid=\"timecontainer\">{time}</span>)\n </Overline>\n <ContentContainer data-testid=\"richcontainer\">\n <div dangerouslySetInnerHTML={{ __html: announcementText }} />\n </ContentContainer>\n </GridItem>\n </Grid>\n </AnnouncementBannerWrapper>\n </Theme>\n);\nexport default AnnouncementBanner;\n","import React from 'react';\nimport { ICardsProps, ICardProps } from '../../../types/card';\nimport Card from '../../molecules/Card';\nimport { CardsContainer, GridItemContainer } from './Cards.style';\n\nconst Cards = ({ cards, size = 'small' }: ICardsProps) => {\n const columnSpanDesktop = size === 'small' ? 4 : 5;\n const getColumnStartDesktop = (index: number) => {\n if (size === 'small') {\n return (index % 3) * 4 + 3;\n }\n\n return (index % 2) * 5 + (3 + (index % 2) * 2);\n };\n\n return (\n <CardsContainer>\n {cards.map((card: ICardProps, index: number) => {\n return (\n <GridItemContainer\n key={`${card.title}-${index}`}\n columnStartDesktop={getColumnStartDesktop(index)}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={getColumnStartDesktop(index) - 1}\n columnSpanDevice={columnSpanDesktop}\n >\n <Card\n size={size}\n image={card.image}\n imageAltText={card.imageAltText}\n progress={card.progress}\n title={card.title}\n subtitle={card.subtitle}\n text={card.text}\n highlightText={card.highlightText}\n links={card.links}\n tags={card.tags}\n withContinueWatching={card.withContinueWatching}\n onlyShowButtonsOnHover={card.onlyShowButtonsOnHover}\n hoverLineColor={card.hoverLineColor}\n fullWidth={card.fullWidth}\n labelParams={card.labelParams}\n auxiliaryCTA={card.auxiliaryCTA}\n isGridCard\n />\n </GridItemContainer>\n );\n })}\n </CardsContainer>\n );\n};\n\nexport default Cards;\n","import React, { FunctionComponent } from 'react';\nimport {\n Wrapper,\n DetailsWrapper,\n ContentWrapper,\n AddressWrapperDesktop,\n AddressWrapperMobile,\n} from './ContactCard.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { Subtitle, BodyText } from '../../atoms/Typography';\nimport { IContactCardProps } from '../../../types/contactCard';\n\nconst divideAddressString = (address: string): React.ReactElement[] =>\n address.split(',').map((chunk, i) => (\n <BodyText level={1} key={i}>\n {chunk.trim()}\n </BodyText>\n ));\n\nconst ContactCard: FunctionComponent<IContactCardProps> = ({\n name,\n description,\n email,\n phone,\n website,\n address,\n hideBottomBorder = false,\n hideTopBorder = false,\n}) => {\n const hasDetails = email || phone || website;\n const addressString = address?.substring(0, 110);\n const descriptionText = description?.substring(0, 110);\n\n return (\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={8} columnStartDevice={1} columnSpanDevice={14}>\n <Wrapper data-testid=\"contact-card-wrapper\" hideBottomBorder={hideBottomBorder} hideTopBorder={hideTopBorder}>\n <ContentWrapper>\n <BodyText level={1}>{name}</BodyText>\n {descriptionText && <Subtitle level={2}>{descriptionText}</Subtitle>}\n {hasDetails && (\n <DetailsWrapper data-testid=\"contact-card-details-block\">\n {email && (\n <a tabIndex={0} href={`mailto:${email}`}>\n {email}\n </a>\n )}\n {phone && (\n <a tabIndex={0} href={`tel:${phone}`}>\n {phone}\n </a>\n )}\n {website && (\n <a tabIndex={0} href={website} target=\"_blank\" rel=\"noreferrer\">\n {website}\n </a>\n )}\n </DetailsWrapper>\n )}\n {addressString && (\n <div data-testid=\"contact-card-address-block\">\n <AddressWrapperDesktop>\n <BodyText level={1}>{addressString}</BodyText>\n </AddressWrapperDesktop>\n <AddressWrapperMobile>{divideAddressString(addressString)}</AddressWrapperMobile>\n </div>\n )}\n </ContentWrapper>\n </Wrapper>\n </GridItem>\n </Grid>\n );\n};\n\nexport default ContactCard;\n","import React from 'react';\nimport { TertiaryButton as Button } from '../../atoms/Buttons';\nimport { Header, Subtitle } from '../../atoms/Typography';\nimport {\n ContentSummaryWrapper,\n ContentSummaryImageWrapper,\n ContentSummaryTextWrapper,\n ContentSummaryTitleWrapper,\n ContentSummaryBodyTextWrapper,\n BodyTextRelative,\n BodyTextLimit,\n} from './ContentSummary.style';\nimport { IContentSummaryLink, IContentSummaryProps } from '../../../types/editorial';\nimport { ImageAspectRatioWrapper } from '../../atoms';\nimport { AspectRatio } from '../../../types';\nimport { TypographyLevel } from '../../../types/typography';\n\nconst MAX_HEADER_LEVEL = 6;\n\nconst clickHandler = (link?: IContentSummaryLink) => {\n if (link?.href && document) {\n document.location.href = link.href;\n }\n};\n\nconst ContentSummary = ({\n title,\n subtitle,\n bodyText,\n link,\n image,\n largeTitle = false,\n showImage = false,\n truncate = 0,\n fullyClickable = true,\n baseSemanticLevel = 3 as TypographyLevel,\n}: IContentSummaryProps) => (\n <ContentSummaryWrapper\n onClick={() => {\n if (fullyClickable) {\n clickHandler(link);\n }\n }}\n clickable={fullyClickable}\n data-roh=\"content-summary-item\"\n >\n {showImage && image && (\n <ContentSummaryImageWrapper data-testid=\"image-wrapper\">\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n {link?.href ? (\n <a href={link.href}>\n <img src={image.src} alt={image.alt} />\n </a>\n ) : (\n <img src={image.src} alt={image.alt} />\n )}\n </ImageAspectRatioWrapper>\n </ContentSummaryImageWrapper>\n )}\n <ContentSummaryTextWrapper showImage={showImage}>\n {title && (\n <ContentSummaryTitleWrapper data-testid={largeTitle ? 'large-title' : 'default-title'}>\n {largeTitle ? (\n <Header level={5} semanticLevel={baseSemanticLevel}>\n {title}\n </Header>\n ) : (\n <Subtitle level={1} semanticLevel={baseSemanticLevel}>\n {title}\n </Subtitle>\n )}\n </ContentSummaryTitleWrapper>\n )}\n {subtitle && (\n <Subtitle\n level={2}\n semanticLevel={\n title ? (Math.min(MAX_HEADER_LEVEL, baseSemanticLevel + 1) as TypographyLevel) : baseSemanticLevel\n }\n >\n {subtitle}\n </Subtitle>\n )}\n {bodyText && (\n <BodyTextRelative level={1}>\n <BodyTextLimit>\n <ContentSummaryBodyTextWrapper\n truncate={truncate}\n dangerouslySetInnerHTML={{ __html: bodyText }}\n data-testid=\"body-text\"\n />\n </BodyTextLimit>\n </BodyTextRelative>\n )}\n {link?.href && link.text && (\n <Button {...link} className=\"content-summary-text-link\">\n {link.text}\n </Button>\n )}\n </ContentSummaryTextWrapper>\n </ContentSummaryWrapper>\n);\n\nexport default ContentSummary;\n","import React from 'react';\nimport { BodyText, GridItem, Overline } from '../../../atoms';\nimport { TextWrapper } from '../PeopleListing.style';\nimport Person from '../Person';\nimport { CreditListingWrapper, DescriptionWrapper, ReplacementWrapper, RoleWrapper } from './CreditListing.style';\nimport { getConcatenatedPropLength } from '../../../../helpers/arrays';\nimport { ICreditListing } from '../../../../types';\n\nconst concatenateMusicTitle = (musicTitle: string[]) => (\n <>\n {musicTitle.map((title, index) => (\n <i key={index}>\n {index > 0 && (index === musicTitle.length - 1 ? ' and ' : ', ')}\n {title}\n </i>\n ))}\n </>\n);\n\nexport const getColumnSpanDesktop = (namesLength: number, charThreshold: number, peopleCount: number): number => {\n if (namesLength > charThreshold) {\n return peopleCount > 2 ? 4 : 2;\n }\n return 1;\n};\n\nconst CreditListing = ({ roles, columnCount = 4 }: ICreditListing & { columnCount?: number }) => {\n const charThreshold = 180;\n\n return (\n <CreditListingWrapper columnCount={columnCount}>\n {roles.map(({ name, people, description, musicTitle, replacement, additionalInfo, dataROH }, index) => {\n const namesLength = getConcatenatedPropLength(people, 'name');\n\n const columnSpanDesktop = getColumnSpanDesktop(namesLength, charThreshold, people.length);\n\n return (\n <GridItem\n columnSpanDesktop={columnSpanDesktop}\n columnSpanDevice={columnSpanDesktop}\n columnSpanSmallDevice={2}\n key={`${name}-${index}`}\n >\n <TextWrapper>\n <RoleWrapper title=\"role\" data-roh={dataROH}>\n <Overline level={1} tag=\"p\">\n {name}\n </Overline>\n </RoleWrapper>\n {description && (\n <DescriptionWrapper>\n <Overline level={3} tag=\"p\">\n {description}\n </Overline>\n </DescriptionWrapper>\n )}\n <BodyText level={1} tag=\"p\">\n {people.map((person, personIndex) => (\n <Person\n key={`${person.name}${personIndex}`}\n person={person}\n withSeparator={people.length !== personIndex + 1}\n />\n ))}\n </BodyText>\n {replacement && (\n <ReplacementWrapper>\n <BodyText level={1} tag=\"p\">\n {replacement}\n </BodyText>\n </ReplacementWrapper>\n )}\n {musicTitle && musicTitle.length > 0 && (\n <BodyText level={1} tag=\"p\">\n {concatenateMusicTitle(musicTitle)}\n </BodyText>\n )}\n {additionalInfo && (\n <BodyText level={1} tag=\"p\">\n {additionalInfo}\n </BodyText>\n )}\n </TextWrapper>\n </GridItem>\n );\n })}\n </CreditListingWrapper>\n );\n};\n\nexport default CreditListing;\n","// Get the total character length of a property in an array of objects\nexport const getConcatenatedPropLength = <K extends string, T extends Record<K, string>>(\n array: T[],\n prop: K\n): number => {\n return array.reduce((acc, item) => acc + item[prop].length, 0);\n};\n\nexport const truncateArrayByPropLength = <K extends string, T extends Record<K, string>>(\n array: T[],\n prop: K,\n maxChars: number,\n ellipsis: boolean = true\n): T[] => {\n // Early return if the total length of the array is less than the maxChars\n if (getConcatenatedPropLength(array, prop) <= maxChars) {\n return array;\n }\n\n // Add items to the truncated array until maxChars is reached\n let totalChars = 0;\n const truncatedArray: T[] = [];\n\n for (let i = 0; i < array.length && totalChars < maxChars; i++) {\n const itemLength = array[i][prop].length;\n\n if (totalChars + itemLength > maxChars) {\n if (ellipsis) {\n truncatedArray.push({\n ...array[i],\n [prop]: '...' as T[K], // Cast to maintain type safety\n });\n }\n break;\n }\n\n truncatedArray.push(array[i]);\n totalChars += itemLength;\n }\n\n return truncatedArray;\n};\n","import React, { FunctionComponent } from 'react';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport {\n EditorialGrid,\n EditorialImageWrapper,\n EditorialSubtitle,\n EditorialText,\n EditorialTextWrapper,\n} from './Editorial.style';\nimport { IEditorialProps } from '../../../types/editorial';\nimport { AspectRatio } from '../../../types/image';\n\nconst Editorial: FunctionComponent<IEditorialProps> = ({ imagePosition = 'left', subtitle, text, children }) => {\n const imageToLeft = imagePosition === 'left';\n return (\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={2} columnSpanDevice={12}>\n <EditorialGrid imageToLeft={imageToLeft}>\n <EditorialImageWrapper data-testid=\"image-wrapper\" imageToLeft={imageToLeft}>\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['1:1']}>{children}</ImageAspectRatioWrapper>\n </EditorialImageWrapper>\n <EditorialTextWrapper data-testid=\"text-wrapper\" imageToLeft={imageToLeft}>\n {subtitle ? <EditorialSubtitle>{subtitle}</EditorialSubtitle> : null}\n <EditorialText dangerouslySetInnerHTML={{ __html: text }} />\n </EditorialTextWrapper>\n </EditorialGrid>\n </GridItem>\n </Grid>\n );\n};\n\nexport default Editorial;\n","import React, { FunctionComponent } from 'react';\nimport {\n FooterSection,\n FooterContainer,\n AdditionalInfo,\n PolicyLinksRow,\n ContactNewsletterRow,\n ArtsLogoRow,\n} from './Footer.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport SponsorLogo from '../../atoms/SponsorLogo';\nimport PolicyLinks from '../../molecules/PolicyLinks';\nimport ContactNewsletter from '../../molecules/ContactNewsletter';\nimport { SocialMediaLink, IFooterProps } from '../../../types/footer';\n\nconst Footer: FunctionComponent<IFooterProps> = ({ data }) => {\n const {\n policyLinks,\n newsletter,\n socialMediaLinks: rawSocialMediaLinks,\n contact,\n artsLogo: { dataRoh: artsDataRoh, ...artsLogo },\n additionalInfo,\n } = data;\n\n const socialMediaLinks: SocialMediaLink[] = rawSocialMediaLinks as SocialMediaLink[];\n\n return (\n <FooterSection>\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={2} columnSpanDevice={12}>\n <FooterContainer>\n <PolicyLinksRow data-testid=\"policy-links\">\n <PolicyLinks items={policyLinks} />\n </PolicyLinksRow>\n <ContactNewsletterRow data-testid=\"contact-newsletter\">\n <ContactNewsletter\n signUpText={newsletter.text}\n signUpLink={newsletter.link}\n socialMediaLinks={socialMediaLinks}\n contact={contact}\n />\n </ContactNewsletterRow>\n <ArtsLogoRow data-testid=\"arts-logo\">\n <a data-roh={artsDataRoh} target=\"_blank\" rel=\"noopener noreferrer\" {...artsLogo}>\n <SponsorLogo />\n </a>\n </ArtsLogoRow>\n <AdditionalInfo data-testid=\"additional-info\">{additionalInfo}</AdditionalInfo>\n </FooterContainer>\n </GridItem>\n </Grid>\n </FooterSection>\n );\n};\n\nexport default Footer;\n","import React, { useRef, useEffect, useState, FunctionComponent } from 'react';\nimport { IImageWithCaptionProps } from '../../../types/image';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport { CaptionWrapper, Wrapper } from './ImageWithCaption.style';\n\nconst ImageWithCaption: FunctionComponent<IImageWithCaptionProps> = ({ caption, children, aspectRatio }) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number>(0);\n\n useEffect(() => {\n const setWrapperHeight = () => setHeight(wrapperRef?.current?.offsetHeight || 0);\n window.addEventListener('resize', setWrapperHeight);\n if (wrapperRef) {\n setWrapperHeight();\n }\n return () => window.removeEventListener('resize', setWrapperHeight);\n }, [wrapperRef]);\n\n return (\n <Wrapper aspectRatio={aspectRatio} ref={wrapperRef} height={height}>\n <ImageAspectRatioWrapper aspectRatio={aspectRatio}>{children}</ImageAspectRatioWrapper>\n <CaptionWrapper>{caption}</CaptionWrapper>\n </Wrapper>\n );\n};\n\nexport default ImageWithCaption;\n","import React, { FunctionComponent } from 'react';\nimport { InfoBodyWrapper, InfoContent, InfoTitle, InfoWrapper } from './Information.style';\nimport {\n IInformationProps,\n IInformationTitleVariant,\n IInformationTitleProps,\n TitleTextSize,\n IInformationBackgroundColour,\n} from '../../../types/information';\nimport InfoCta from './InfoCta';\nimport { AltHeader, GridItem, Header } from '../../atoms';\nimport { AltHeaderLevel, TypographyLevel } from '../../../types/typography';\n\nconst defaultColumnSpan = 6;\nconst smallColumnSpan = 4;\nconst largeColumnSpan = 9;\nconst mediumWordBreakpoint = 8;\nconst longWordBreakpoint = 13;\n\nconst getColumnSpan = (\n variant: IInformationTitleVariant,\n textSize: TitleTextSize,\n longestWordLength: number\n): number => {\n if (!(variant === IInformationTitleVariant.Header && textSize === 4)) return defaultColumnSpan;\n\n switch (true) {\n case longestWordLength > longWordBreakpoint:\n return largeColumnSpan;\n case longestWordLength < mediumWordBreakpoint:\n return smallColumnSpan;\n default:\n return defaultColumnSpan;\n }\n};\n\nconst renderTitle = (props: IInformationTitleProps): React.ReactElement => {\n const headerLevel = props.variant === IInformationTitleVariant.Header && props.textSize < 4 ? 4 : props.textSize;\n\n return props.variant === IInformationTitleVariant.Header ? (\n <Header level={headerLevel as TypographyLevel}>{props.text}</Header>\n ) : (\n <AltHeader level={headerLevel as AltHeaderLevel}>{props.text}</AltHeader>\n );\n};\n\nconst Information: FunctionComponent<IInformationProps> = ({ body, title, background, cta }) => {\n const titleWords = title.text.split(' ');\n const titleWordLengths = titleWords.map((word) => word.length);\n const maxTitleWordLength = Math.max(...titleWordLengths);\n const titleColumnSpan = getColumnSpan(title.variant, title.textSize, maxTitleWordLength);\n const bgColour = background ?? IInformationBackgroundColour.White;\n\n return (\n <InfoWrapper background={bgColour} data-testid=\"infoWrapper\">\n <GridItem columnStartDesktop={2} columnStartDevice={2} columnSpanDesktop={titleColumnSpan} columnSpanDevice={12}>\n <InfoTitle>{renderTitle(title)}</InfoTitle>\n </GridItem>\n <GridItem\n columnStartDesktop={titleColumnSpan + 2}\n columnStartDevice={2}\n columnSpanDesktop={14 - titleColumnSpan}\n columnSpanDevice={12}\n >\n <InfoContent>\n <InfoBodyWrapper background={bgColour} dangerouslySetInnerHTML={{ __html: body as string }} />\n {cta && (\n <InfoCta\n link={cta.link}\n variant={cta.variant}\n theme={cta.theme}\n infoThemed={bgColour !== IInformationBackgroundColour.White}\n text={cta.text}\n iconName={cta.iconName}\n iconDirection={cta.iconDirection}\n target={cta.target}\n />\n )}\n </InfoContent>\n </GridItem>\n </InfoWrapper>\n );\n};\n\nexport default Information;\n","import React, { FunctionComponent } from 'react';\nimport { IMiniCardProps } from '../../../types/miniCard';\nimport {\n ContentContainer,\n CardContainer,\n StyledImage,\n TitleWrapper,\n ImageWrapper,\n IconWrapper,\n} from './MiniCard.style';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport { GridItem, Icon, Overline } from '../../atoms';\nimport { AspectRatio } from '../../../types';\n\nconst MiniCard: FunctionComponent<IMiniCardProps> = ({\n title = '',\n subtitle,\n image,\n imageAltText = '',\n iconName,\n iconColor,\n}) => (\n <CardContainer data-testid=\"minicardcontainer\">\n <GridItem columnStartDevice={1} columnSpanDevice={3} columnStartDesktop={1} columnSpanDesktop={3}>\n <ImageWrapper>\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n <StyledImage src={image} alt={imageAltText} />\n </ImageAspectRatioWrapper>\n {iconName && (\n <IconWrapper>\n <Icon iconName={iconName} color={iconColor} />\n </IconWrapper>\n )}\n </ImageWrapper>\n </GridItem>\n <GridItem columnStartDevice={4} columnSpanDevice={4} columnStartDesktop={4} columnSpanDesktop={4}>\n <ContentContainer>\n <Overline level={4}>{subtitle}</Overline>\n <TitleWrapper>\n <Overline level={2}>{title}</Overline>\n </TitleWrapper>\n </ContentContainer>\n </GridItem>\n </CardContainer>\n);\n\nexport default MiniCard;\n","import React, { useState, useEffect } from 'react';\nimport {\n NavigationWrapper,\n NavigationGrid,\n NavigationGridMobile,\n LogoContainer,\n MenuContainer,\n NavContainer,\n NavTopContainer,\n GridItemSearch,\n SearchBackground,\n FullScreenContainer,\n NavContainerGridItem,\n} from './Navigation.style';\nimport { GridItem } from '../../atoms/Grid';\nimport Logo from '../../atoms/Logo';\nimport NavTop from '../../molecules/NavTop';\nimport { INavigationProps } from '../../../types/navigation';\nimport Tabs from '../../molecules/Tabs';\nimport SearchBar from '../../molecules/SearchBar';\n\nconst Navigation = ({\n dataNavTop,\n menuData,\n onSearch,\n onLink,\n logoLink,\n desktopLogoUrl,\n devicesLogoUrl,\n}: INavigationProps) => {\n const [navTopData, setNavTopData] = useState(dataNavTop);\n const [showMenu, setShowMenu] = useState(false);\n const [showSearch, setshowSearch] = useState(false);\n const [fullScreenHeight, setFullScreenHeight] = useState('0px');\n const { items } = menuData;\n\n useEffect(() => {\n const body = document?.body;\n const html = document?.documentElement;\n\n if (body && html) {\n const newHeight = Math.max(\n body.scrollHeight,\n body.offsetHeight,\n html.clientHeight,\n html.scrollHeight,\n html.offsetHeight\n );\n setFullScreenHeight(`${newHeight}px`);\n }\n }, []);\n\n useEffect(() => {\n setNavTopData(dataNavTop);\n }, [dataNavTop]);\n\n const onClickSearchHandler = () => {\n setshowSearch(true);\n };\n\n const onLinkHandler = (link: string) => {\n onLink(link);\n };\n\n const onShowMenuHandler = (show: boolean) => {\n setShowMenu(show);\n };\n\n const onSearchHandler = (value: string) => {\n onSearch(value);\n setshowSearch(false);\n };\n\n const onCloseSearchHandler = () => {\n setshowSearch(false);\n };\n\n return (\n <NavigationWrapper isMenuOpen={showMenu}>\n {showSearch && <FullScreenContainer style={{ height: `${fullScreenHeight}` }} onClick={onCloseSearchHandler} />}\n <NavigationGrid>\n <GridItem columnStartDesktop={2} columnSpanDesktop={1} columnStartDevice={2} columnSpanDevice={2}>\n <LogoContainer>\n <Logo urlLink={logoLink} desktopImage={desktopLogoUrl} devicesImage={devicesLogoUrl} />\n </LogoContainer>\n </GridItem>\n <NavContainerGridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={4} columnSpanDevice={10}>\n <MenuContainer>\n <NavTopContainer>\n <NavTop\n accountIcon={navTopData.accountIcon}\n accountOptions={navTopData.accountOptions}\n accountText={navTopData.accountText}\n accountLink={navTopData.accountLink}\n basketText={navTopData.basketText}\n basketExpiryUnixTimestamp={navTopData.basketExpiryUnixTimestamp}\n basketLink={navTopData.basketLink}\n basketNumItems={navTopData.basketNumItems}\n basketNumVirtualItems={navTopData.basketNumVirtualItems}\n onClickSearch={onClickSearchHandler}\n onLink={onLinkHandler}\n isShowSearch={showSearch}\n colorPrimary=\"navigation\"\n />\n </NavTopContainer>\n <NavContainer>\n <Tabs items={items} onChange={onLinkHandler} onShowMenu={onShowMenuHandler} colorPrimary=\"navigation\" />\n </NavContainer>\n </MenuContainer>\n </NavContainerGridItem>\n <>\n <SearchBackground visible={showSearch} />\n <GridItemSearch\n visible={showSearch}\n columnStartDesktop={2}\n columnSpanDesktop={14}\n columnStartDevice={2}\n columnSpanDevice={12}\n >\n <SearchBar onClick={onSearchHandler} onClose={onCloseSearchHandler} />\n </GridItemSearch>\n </>\n </NavigationGrid>\n {showMenu && (\n <NavigationGridMobile>\n <GridItem columnStartDevice={2} columnSpanDevice={10}>\n <NavContainer>\n <Tabs\n items={items}\n onChange={onLinkHandler}\n onShowMenu={onShowMenuHandler}\n showMenu\n colorPrimary=\"navigation\"\n />\n </NavContainer>\n </GridItem>\n </NavigationGridMobile>\n )}\n </NavigationWrapper>\n );\n};\n\nexport default Navigation;\n","import React, { FunctionComponent } from 'react';\nimport { CinemaBadge } from '../../../atoms/Badge';\nimport Theme from '../../../../styles/ThemeProvider';\nimport { IThemePageHeadingProps } from '../../../../types/editorial';\nimport { Colors, ThemeType } from '../../../../types/types';\nimport PageHeading from '../PageHeading';\n\nconst PageHeadingCinema: FunctionComponent<IThemePageHeadingProps> = ({ link, ...rest }) => {\n const cinemaLink = link && {\n ...link,\n color: Colors.Black,\n bgColor: Colors.White,\n };\n\n return (\n <Theme theme={ThemeType.Cinema}>\n <PageHeading {...rest} link={cinemaLink}>\n <CinemaBadge align=\"left\" />\n </PageHeading>\n </Theme>\n );\n};\n\nexport default PageHeadingCinema;\n","import React, { FunctionComponent } from 'react';\nimport Theme from '../../../../styles/ThemeProvider';\nimport { IThemePageHeadingProps } from '../../../../types/editorial';\nimport { Colors, ThemeType } from '../../../../types/types';\nimport PageHeading from '../PageHeading';\n\nconst PageHeadingCore: FunctionComponent<IThemePageHeadingProps> = ({ link, ...rest }) => {\n const coreLink = link && {\n ...link,\n color: Colors.White,\n bgColor: Colors.Black,\n };\n\n return (\n <Theme theme={ThemeType.Core}>\n <PageHeading {...rest} link={coreLink} />\n </Theme>\n );\n};\n\nexport default PageHeadingCore;\n","import React, { FunctionComponent } from 'react';\nimport { IPageHeadingImpactProps } from '../../../../types/impactHeader';\nimport { Colors } from '../../../../types/types';\nimport { devices } from '../../../../styles/viewports';\nimport Sponsorship from '../../../atoms/Sponsorship';\nimport TabLink from '../../../atoms/TabLink';\nimport { PrimaryButton } from '../../../atoms/Buttons';\nimport { Header } from '../../../atoms/Typography';\nimport {\n ImpactWrapper,\n ImpactGrid,\n LogoWrapper,\n TextWrapper,\n ButtonWrapper,\n SponsorWrapper,\n ScrollDownWrapper,\n ImpactHeaderImageWrapper,\n} from './Impact.style';\n\nconst PageHeadingImpact: FunctionComponent<IPageHeadingImpactProps> = ({\n children,\n text,\n link,\n sponsor = true,\n customSponsorImage,\n scrollHref,\n bgUrlDesktop,\n bgUrlDevice,\n bgImageAltText = '',\n semanticLevel = 3,\n}) => {\n const truncatedText = text?.substring(0, 75);\n const { text: linkText, ...restLink } = link || {};\n\n return (\n <ImpactWrapper bgUrlDesktop={bgUrlDesktop} bgUrlDevice={bgUrlDevice} data-testid=\"impact-wrapper\">\n {sponsor ? (\n <SponsorWrapper data-testid=\"impact-sponsor\">\n {customSponsorImage ? (\n <Sponsorship data-testid=\"impact-custom-sponsor\" {...customSponsorImage} isCustomImage />\n ) : (\n <Sponsorship />\n )}\n </SponsorWrapper>\n ) : null}\n <ImpactHeaderImageWrapper>\n <picture data-testid=\"impact-picture\">\n {bgUrlDevice && (\n <source srcSet={bgUrlDevice} media={`${devices.mobile}`} data-testid=\"impact-mobile-image-source\" />\n )}\n <source srcSet={bgUrlDesktop} media={`${devices.desktop}`} data-testid=\"impact-desktop-image-source\" />\n <img src={bgUrlDesktop} alt={bgImageAltText} data-testid=\"impact-image\" />\n </picture>\n </ImpactHeaderImageWrapper>\n <ImpactGrid>\n {children ? <LogoWrapper data-testid=\"impact-logo\">{children}</LogoWrapper> : null}\n {text ? (\n <TextWrapper data-testid=\"impact-text\">\n <Header level={3} semanticLevel={semanticLevel}>\n {truncatedText}\n </Header>\n </TextWrapper>\n ) : null}\n {link ? (\n <ButtonWrapper data-testid=\"impact-link\">\n <PrimaryButton {...restLink}>{linkText}</PrimaryButton>\n </ButtonWrapper>\n ) : null}\n </ImpactGrid>\n {scrollHref ? (\n <ScrollDownWrapper data-testid=\"impact-scroll-link\">\n <TabLink\n iconName=\"Arrow\"\n iconDirection=\"down\"\n href={scrollHref}\n color={Colors.White}\n hoverColor={Colors.White}\n >\n Scroll Down\n </TabLink>\n </ScrollDownWrapper>\n ) : null}\n </ImpactWrapper>\n );\n};\n\nexport default PageHeadingImpact;\n","import React, { FunctionComponent } from 'react';\nimport ImageAspectRatioWrapper from '../../../atoms/ImageAspectRatioWrapper';\nimport { AspectRatio, Colors } from '../../../../types';\nimport { InfoWrapper, LeftPanel, PanelGrid, RightPanel, ScrollDownWrapper } from './Panel.style';\nimport { IPanelHeadingProps } from '../../../../types/editorial';\nimport { TabLink } from '../../../atoms';\n\nconst PageHeadingPanel: FunctionComponent<IPanelHeadingProps> = ({ info, image, color, scrollTo }) => {\n const hasImage = !!image;\n\n return (\n <PanelGrid color={color} data-testid=\"wrapper\">\n <LeftPanel hasImage={hasImage}>\n <InfoWrapper>{info}</InfoWrapper>\n {scrollTo && (\n <ScrollDownWrapper data-testid=\"scroll-link\">\n <TabLink\n iconName=\"Arrow\"\n iconDirection=\"down\"\n href={scrollTo}\n color={color === Colors.White ? Colors.Black : Colors.White}\n hoverColor={color === Colors.White ? Colors.Black : Colors.White}\n >\n Scroll Down\n </TabLink>\n </ScrollDownWrapper>\n )}\n </LeftPanel>\n {hasImage && (\n <RightPanel>\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n <img src={image?.src ?? ''} alt={image?.alt ?? ''} />\n </ImageAspectRatioWrapper>\n </RightPanel>\n )}\n </PanelGrid>\n );\n};\n\nexport default PageHeadingPanel;\n","import React, { FunctionComponent } from 'react';\nimport { StreamBadge } from '../../../atoms/Badge';\nimport Theme from '../../../../styles/ThemeProvider';\nimport { IThemePageHeadingProps } from '../../../../types/editorial';\nimport { Colors, ThemeType } from '../../../../types/types';\nimport PageHeading from '../PageHeading';\nimport { StreamWrapper } from './Stream.style';\n\nconst PageHeadingStream: FunctionComponent<IThemePageHeadingProps> = ({ link, ...rest }) => {\n const streamLink = link && {\n ...link,\n color: Colors.Black,\n bgColor: Colors.White,\n };\n\n return (\n <Theme theme={ThemeType.Stream}>\n <StreamWrapper>\n <PageHeading {...rest} link={streamLink}>\n <StreamBadge align=\"left\" />\n </PageHeading>\n </StreamWrapper>\n </Theme>\n );\n};\n\nexport default PageHeadingStream;\n","import React, { FunctionComponent } from 'react';\n\nimport { IPasswordStrengthProps } from '../../../types/passwordStrength';\nimport { Colors } from '../../../types/types';\nimport { AltHeader, Overline } from '../../atoms/Typography';\nimport { Container, Sections, Section, BottomLine, Text, LabelText } from './PasswordStrength.styles';\n\n/**\n * Password strength indicator component.\n * This renders some number of lines (6 by default)\n * which should become active when the user improves\n * the strength of the entered password.\n *\n * ## Sections\n * To set number of sections it should be passed\n * as `sections` prop.\n *\n * ## Active section\n * To set number of active sections it should be passed\n * as `activeSections` prop.\n *\n * ## Colors\n * Color of every element can be controlled by properties:\n * `sectionsColor`, `activeSectionsColor`,\n * `textColor`, `strengthLabelColor`.\n *\n * ## Text\n * `text` prop is used to render some message.\n * For example error (together with proper red color)\n * or some password requirement. It can be empty.\n *\n * ## Strength label\n * `strengthLabel` prop is used to render strength characteristic\n * of entered password. For example: `weak`, `normal`, `strong`, etc.\n * It can be empty.\n */\nconst PasswordStrength: FunctionComponent<IPasswordStrengthProps> = ({\n sections = 6,\n activeSections = 0,\n sectionsColor = Colors.MidGrey,\n activeSectionsColor = Colors.Black,\n text = '',\n textColor = Colors.Black,\n strengthLabel = '',\n strengthLabelColor = Colors.Black,\n}) => {\n const setSectionColor = (index: number): Colors => (index < activeSections ? activeSectionsColor : sectionsColor);\n\n const setSectionDataTestId = (index: number): string =>\n index < activeSections ? 'password-strength-section-active' : 'password-strength-section';\n\n return (\n <Container data-testid=\"password-strength-container\">\n <Sections data-testid=\"password-strength-sections\">\n {Array.from({ length: sections }, (_section, i) => (\n <Section key={i} color={setSectionColor(i)} data-testid={setSectionDataTestId(i)} />\n ))}\n </Sections>\n <BottomLine>\n <Text color={textColor} data-testid=\"password-strength-text\">\n <AltHeader level={6}>{text}</AltHeader>\n </Text>\n <LabelText color={strengthLabelColor} data-testid=\"password-strength-label\">\n <Overline level={2}>{strengthLabel}</Overline>\n </LabelText>\n </BottomLine>\n </Container>\n );\n};\n\nexport default PasswordStrength;\n","import React, { FunctionComponent } from 'react';\nimport {\n PromoWithTitleGrid,\n PromoWithTitleContentWrapper,\n PromoWithTitleSubtitle,\n PromoWithTitleText,\n PromoWithTitleContainer,\n ButtonsContainer,\n} from './PromoWithTitle.style';\nimport { PrimaryButton, TertiaryButton } from '../../atoms/Buttons';\nimport { Header } from '../../atoms/Typography';\nimport { IPromoWithTitleProps } from '../../../types/editorial';\nimport PromoChild from './PromoChild';\n\nconst LENGTH_TEXT = 28;\n\nconst PromoWithTitle: FunctionComponent<IPromoWithTitleProps> = ({\n imagePosition = 'left',\n title = '',\n titleSize = 'large',\n subtitle,\n text,\n links,\n children,\n videoSettings,\n titleSemanticLevel,\n}) => {\n const truncate = (str: string, n: number) => (str.length >= n ? str.substr(0, n) : str);\n\n const imageToLeft = imagePosition === 'left';\n const titleLevel = titleSize === 'large' ? 2 : 3;\n\n const primaryButton = links?.[0];\n const { text: primaryButtonText = '', ...restPrimaryButton } = primaryButton || {};\n const primaryButtonTextTruncate = truncate(primaryButtonText, LENGTH_TEXT);\n\n const tertiaryButton = links?.[1];\n const { text: tertiaryButtonText = '', ...restTertiaryButton } = tertiaryButton || {};\n const tertiaryButtonTextTruncate = truncate(tertiaryButtonText, LENGTH_TEXT);\n\n const defaultVideoSettings = {\n muted: true,\n autoPlay: false,\n soundControl: false,\n fullScreenOption: false,\n loop: true,\n };\n\n return (\n <PromoWithTitleGrid imageToLeft={imageToLeft}>\n <PromoChild\n // eslint-disable-next-line react/no-children-prop\n children={children}\n videoSettings={{ ...defaultVideoSettings, ...videoSettings }}\n imageToLeft={imageToLeft}\n />\n <PromoWithTitleContentWrapper data-testid=\"content-wrapper\" imageToLeft={imageToLeft}>\n <PromoWithTitleContainer>\n <Header level={titleLevel} semanticLevel={titleSemanticLevel ?? titleLevel}>\n {title}\n </Header>\n </PromoWithTitleContainer>\n {subtitle ? <PromoWithTitleSubtitle>{subtitle}</PromoWithTitleSubtitle> : null}\n <PromoWithTitleText dangerouslySetInnerHTML={{ __html: text as string }} />\n {links ? (\n <ButtonsContainer\n data-testid=\"buttons-wrapper\"\n primaryButtonTextLength={primaryButtonText.length}\n tertiaryButtonTextLength={tertiaryButtonText.length}\n >\n {primaryButton ? <PrimaryButton {...restPrimaryButton}>{primaryButtonTextTruncate}</PrimaryButton> : null}\n {tertiaryButton ? (\n <TertiaryButton {...restTertiaryButton}>{tertiaryButtonTextTruncate}</TertiaryButton>\n ) : null}\n </ButtonsContainer>\n ) : null}\n </PromoWithTitleContentWrapper>\n </PromoWithTitleGrid>\n );\n};\n\nexport default PromoWithTitle;\n","/* eslint-disable react/no-danger */\nimport React, { FunctionComponent } from 'react';\nimport { TextWrapper, Line, AttributionWrapper } from './Quote.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { AltHeader, Subtitle } from '../../atoms/Typography';\nimport { IQuoteProps } from '../../../types/quote';\n\nconst Quote: FunctionComponent<IQuoteProps> = ({ text, attribution }) => {\n return (\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={8} columnStartDevice={2} columnSpanDevice={12}>\n <TextWrapper>\n <AltHeader level={4}>\n <div dangerouslySetInnerHTML={{ __html: `“${text}”` }} />\n </AltHeader>\n </TextWrapper>\n <AttributionWrapper displayAttribution={Boolean(attribution)} data-testid=\"quote-attribution-block\">\n <Line />\n <Subtitle level={1}>{attribution}</Subtitle>\n </AttributionWrapper>\n </GridItem>\n </Grid>\n );\n};\n\nexport default Quote;\n","import React, { useState } from 'react';\nimport { IRadioGroupProps, IRadioProps } from '../../../types/formTypes';\nimport { GridItem, Radio } from '../../atoms';\nimport { RadioGroupContainer } from './RadioGroup.style';\n\n/**\n * DEPRECATED. Use RadioGroup2 instead\n */\nconst RadioGroup = ({\n radios,\n columnStartDesktop = 1,\n columnStartDevice = 1,\n columnSpanDesktop = 16,\n columnSpanDevice = 14,\n columnStartSmallDevice,\n columnSpanSmallDevice,\n onChange,\n}: IRadioGroupProps) => {\n const [radioProps, setRadioProps] = useState<IRadioProps[]>(radios ?? []);\n const [checkedIndex, setCheckedIndex] = useState<number | null>(null);\n\n const handleChange = (_value: string, index: number) => {\n setCheckedIndex(index);\n const newRadioProps = radios?.map((radio, i) => {\n return {\n ...radio,\n checked: i === index,\n };\n });\n setRadioProps(newRadioProps ?? []);\n onChange?.(radios ? radios[index] : undefined);\n };\n\n return (\n <GridItem\n columnStartDesktop={columnStartDesktop}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={columnStartDevice}\n columnSpanDevice={columnSpanDevice}\n columnStartSmallDevice={columnStartSmallDevice}\n columnSpanSmallDevice={columnSpanSmallDevice}\n >\n <RadioGroupContainer>\n {radioProps?.map((radio, i) => {\n return (\n <Radio\n key={(radio.label ?? 'defaultRadioKey') + i}\n checked={i === checkedIndex}\n // error={radio.error} // TO DO: Add error state - design not yet available\n label={radio.label}\n onChange={(e) => handleChange(e, i)}\n />\n );\n })}\n </RadioGroupContainer>\n </GridItem>\n );\n};\n\nexport default RadioGroup;\n","import React, { FunctionComponent, ChangeEventHandler } from 'react';\n\nimport { Container, ErrorLabel, RadioGroup } from './RadioGroup2.style';\n\nimport { IRadioGroup2Props } from '../../../types/formTypes';\nimport { AltHeader } from '../../atoms/Typography';\nimport Radio2 from '../../atoms/Radio2';\n\n/**\n * A RadioGroup component, that renders set of Radio2 components inside.\n * `name` prop should be specified and will be passed as a `name` to each\n * radio to combine them in one group.\n *\n * # Radios\n * `radios` prop is an array of radios that should be renderet. This is an\n * array of objects `{content: ReactNode, value: string | number}`.\n *\n * # Default value\n * `defaultValue` prop can be specified to make one of radios checked inittially.\n * This should be equal to `value` of one of `radios`.\n *\n * # Error state\n * An error label will be shown below the radios if the `error` prop exists.\n * Also radios will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Horizontal mode\n * If `horizontalMode` prop is true radios will be placed in a row instead of column.\n *\n * # Distance between radios\n * `gap` prop allow to control distance between radios in pixels. This works in default and\n * horizontal modes.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n *\n * # Black box mode\n * If `blackBox` prop is true checked state will be styled as black box with white tick icon.\n * This style was used before as a default. Not preferred in new components.\n * This will be ignored if `darkMode` is true.\n */\nconst RadioGroup2: FunctionComponent<IRadioGroup2Props> = ({\n radios,\n name,\n horizontalMode = false,\n gap = 30,\n error,\n darkMode,\n blackBox,\n onChange,\n defaultValue,\n}) => {\n const changeHandler: ChangeEventHandler<HTMLInputElement> = (e) => {\n onChange?.(e.target.value);\n };\n\n return (\n <Container>\n <RadioGroup gap={gap} horizontalMode={horizontalMode}>\n {radios.map((radio, idx) => (\n <Radio2\n key={`${radio.value}-${idx}`}\n name={name}\n value={radio.value}\n blackBox={blackBox}\n darkMode={darkMode}\n defaultChecked={radio.value === defaultValue}\n error={error !== undefined ? '' : undefined}\n onChange={changeHandler}\n >\n {radio.content}\n </Radio2>\n ))}\n </RadioGroup>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"radio-group-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\nexport default RadioGroup2;\n","/* eslint-disable react/no-unstable-nested-components */\n/* eslint-disable react/no-danger */\nimport React, { FunctionComponent, useEffect, useRef, useState } from 'react';\nimport { INodeProps, IReadMoreProps } from '../../../types/types';\nimport { AccordionContainer } from '../Accordion/Accordion.style';\nimport {\n ContentContainer,\n FullTextContainer,\n IntroTextContainer,\n LinkContainer,\n ReadMoreContainer,\n} from './ReadMore.style';\nimport { Header, TextLink } from '../../atoms';\nimport { truncateReactNodeString } from '../../../helpers/htmlStrings';\nimport { keyDown } from '../../../helpers/keyboards';\n\nconst ReadMore: FunctionComponent<IReadMoreProps> = ({\n title,\n introText,\n fullText,\n initOpen = false,\n showMoreText,\n hideText,\n characterLimit,\n truncate = true,\n}) => {\n const [isFullTextOpen, setIsFullTextOpen] = useState<boolean>(initOpen);\n const [textHeight, setTextHeight] = useState<string>('0px');\n\n const readMoreContent: INodeProps = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (readMoreContent?.current && initOpen) {\n setTextHeight(`${readMoreContent.current.scrollHeight}px`);\n }\n }, [readMoreContent, initOpen]);\n\n const toggleFullText = () => {\n if (!fullText) return;\n if (typeof fullText === 'string' && fullText.length === 0) return;\n setIsFullTextOpen(!isFullTextOpen);\n setTextHeight(isFullTextOpen ? '0px' : `${readMoreContent.current.scrollHeight}px`);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n keyDown(e, toggleFullText);\n };\n\n const INTRO_CHAR_LIMIT = truncate ? (characterLimit ?? 115) : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const truncatedText = truncate ? truncateReactNodeString(introText ?? '', INTRO_CHAR_LIMIT!, true) : introText;\n\n const IntroText = () =>\n introText ? (\n <ContentContainer>\n <IntroTextContainer isVisible={!isFullTextOpen}>\n {truncate ? <div dangerouslySetInnerHTML={{ __html: `${truncatedText}` }} /> : introText}\n </IntroTextContainer>\n </ContentContainer>\n ) : null;\n\n const contentContainerId = `${title}-read-more-content`;\n\n return (\n <AccordionContainer tabIndex={0} onKeyDown={handleKeyDown}>\n <ReadMoreContainer aria-label={title} aria-expanded={isFullTextOpen} aria-controls={contentContainerId}>\n <Header level={5} semanticLevel={3}>\n {title}\n </Header>\n </ReadMoreContainer>\n {!isFullTextOpen && <IntroText />}\n <ContentContainer\n data-testid=\"richcontainer\"\n ref={readMoreContent}\n id={contentContainerId}\n aria-live=\"polite\"\n style={{ maxHeight: `${textHeight}` }}\n >\n <FullTextContainer isVisible={isFullTextOpen}>{fullText}</FullTextContainer>\n </ContentContainer>\n <LinkContainer>\n {(fullText || isFullTextOpen) && (\n <TextLink tabIndex={0} role=\"button\" onClick={toggleFullText}>\n {isFullTextOpen ? `${hideText}` : `${showMoreText}`}\n </TextLink>\n )}\n </LinkContainer>\n </AccordionContainer>\n );\n};\n\nexport default ReadMore;\n","export const keyDown = (e: { key: string }, toggleFunction: () => void) => {\n if (e.key === 'Enter' || e.key === 'Space') {\n toggleFunction();\n }\n};\n","/* eslint-disable max-len */\nimport React, { FunctionComponent } from 'react';\nimport { Colors, ILogosProps } from '../../../types/types';\nimport { SecondaryLogoWrapper } from './SecodaryLogo.style';\n\nconst SecondaryLogo: FunctionComponent<ILogosProps> = ({ fillColor = Colors.White }) => (\n <SecondaryLogoWrapper\n fillColor={fillColor}\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 207.26 11.94\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <g data-name=\"Layer 2\">\n <path\n d=\"M0 .2h5.15a4.67 4.67 0 0 1 3.33 1.15 3.51 3.51 0 0 1 1 2.49A3.46 3.46 0 0 1 6.7 7.37l3.12 4.38H7.41l-2.84-4H2v4H0Zm5 5.72c1.45 0 2.37-.76 2.37-1.93V4c0-1.24-.89-1.91-2.39-1.91H2v3.83Zm7.45.08a5.92 5.92 0 0 1 6.06-6 5.87 5.87 0 0 1 6 5.94V6a5.92 5.92 0 0 1-6.06 6 5.86 5.86 0 0 1-6-6Zm10 0a4 4 0 0 0-3.93-4.11 3.91 3.91 0 0 0-3.89 4.08V6a3.94 3.94 0 0 0 3.93 4.09A3.88 3.88 0 0 0 22.4 6Zm8.25 1.18L26.06.2h2.41l3.22 5.1L35 .2h2.32L32.7 7.14v4.61h-2.05ZM42.73.12h1.88l5.08 11.63h-2.14L46.38 9h-5.46l-1.19 2.79h-2.08Zm2.91 7-2-4.62-2 4.62Zm7.15-7h2V9.9h6.07v1.85h-8.1ZM69.91 6A6 6 0 0 1 82 5.94V6a5.92 5.92 0 0 1-6.06 6 5.85 5.85 0 0 1-6.03-6Zm10 0a4 4 0 0 0-3.93-4.11A3.91 3.91 0 0 0 72 5.94V6a3.93 3.93 0 0 0 4 4.06A3.88 3.88 0 0 0 79.86 6ZM85.68.2h4.55c2.71 0 4.39 1.53 4.39 3.86C94.62 6.68 92.54 8 90 8h-2.29v3.72h-2Zm4.39 6c1.53 0 2.49-.85 2.49-2.06 0-1.35-1-2.06-2.49-2.06h-2.36V6.2Zm7.78-6h8.56V2h-6.53v3h5.79v1.83h-5.79v3.1h6.61v1.82h-8.64Zm12.35 0h5.14a4.68 4.68 0 0 1 3.34 1.15 3.5 3.5 0 0 1 .95 2.49 3.46 3.46 0 0 1-2.73 3.49l3.1 4.42h-2.4l-2.84-4h-2.54v4h-2Zm5 5.72c1.45 0 2.37-.76 2.37-1.93V4c0-1.24-.89-1.91-2.39-1.91h-3v3.83Zm12.56-5.8h1.89l5.08 11.63h-2.15L131.41 9H126l-1.19 2.79h-2.08Zm2.91 7-2-4.62-2 4.62Zm13.45-7h2V5h5.51V.2h2v11.55h-2V6.88h-5.51v4.87h-2ZM157.39 6a6 6 0 0 1 12.07 0 5.92 5.92 0 0 1-6.05 6 5.85 5.85 0 0 1-6.02-6Zm9.94 0a4 4 0 0 0-3.92-4.11 3.91 3.91 0 0 0-3.9 4.08V6a3.94 3.94 0 0 0 3.93 4.09A3.88 3.88 0 0 0 167.33 6Zm5.63.84V.2h2v6.56c0 2.15 1.11 3.29 2.92 3.29s2.91-1.08 2.91-3.2V.2h2v6.55c0 3.45-1.95 5.18-5 5.18S173 10.2 173 6.85ZM186 10.06l1.22-1.45a5.35 5.35 0 0 0 3.65 1.5c1.25 0 2.05-.59 2.05-1.45 0-.83-.47-1.27-2.61-1.77-2.46-.59-3.85-1.32-3.85-3.45 0-2 1.65-3.35 3.95-3.35a6.4 6.4 0 0 1 4.19 1.45L193.55 3a5.23 5.23 0 0 0-3.14-1.19c-1.18 0-1.88.61-1.88 1.37 0 .89.53 1.29 2.76 1.82 2.44.59 3.69 1.47 3.69 3.38 0 2.16-1.69 3.45-4.12 3.45a7.11 7.11 0 0 1-4.86-1.77ZM198.61.2h8.56V2h-6.53v3h5.79v1.83h-5.79v3.1h6.62v1.82h-8.65Z\"\n data-name=\"Layer 1\"\n />\n </g>\n </SecondaryLogoWrapper>\n);\n\nexport default SecondaryLogo;\n","import React from 'react';\nimport { SectionSplitterContainer, Splitter } from './SectionSplitter.style';\nimport { GridItem } from '../../atoms/Grid';\nimport { ISectionSplitterProps } from '../../../types/types';\n\nconst SectionSplitter = ({ fullWidth = true }: ISectionSplitterProps) => {\n return (\n <SectionSplitterContainer>\n {fullWidth ? (\n <GridItem columnStartDesktop={1} columnSpanDesktop={16} columnStartDevice={1} columnSpanDevice={14}>\n <Splitter />\n </GridItem>\n ) : (\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={2} columnSpanDevice={12}>\n <Splitter />\n </GridItem>\n )}\n </SectionSplitterContainer>\n );\n};\n\nexport default SectionSplitter;\n","import React from 'react';\nimport SectionTitleWrapper from './SectionTitle.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { BodyText, Header } from '../../atoms/Typography';\nimport { ISectionTitleProps } from '../../../types/types';\n\nconst SectionTitle = ({ title, size = 'small', description, semanticLevel }: ISectionTitleProps) => {\n const headingLevel = size === 'large' ? 1 : 2;\n return (\n <SectionTitleWrapper>\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={2} columnSpanDevice={12}>\n <Header level={headingLevel} semanticLevel={semanticLevel ?? headingLevel}>\n {title}\n </Header>\n </GridItem>\n {description && (\n <GridItem columnStartDesktop={3} columnSpanDesktop={8} columnStartDevice={2} columnSpanDevice={12}>\n <BodyText level={1} tag=\"div\">\n {description}\n </BodyText>\n </GridItem>\n )}\n </Grid>\n </SectionTitleWrapper>\n );\n};\n\nexport default SectionTitle;\n","import React, { useRef, useState, useEffect } from 'react';\n\nimport { ISelectProps, IOption } from '../../../types/formTypes';\nimport { Wrapper, SelectWrapper, SelectList, Options, Option, ArrowIcon } from './Select.style';\nimport { BodyText } from '../../atoms';\n\ninterface IAccessibilityProps {\n selectRef: React.MutableRefObject<HTMLUListElement | null>;\n optionsRef: React.MutableRefObject<HTMLLIElement[]>;\n shouldHighlightOption: boolean;\n isSelectDisabled: boolean;\n}\n\nconst useKeyboardAccessibility = ({ selectRef, optionsRef, shouldHighlightOption }: IAccessibilityProps) => {\n const [itemToHighlight, setItemToHighlight] = useState<number>(-1);\n\n const clampIndex = (index: number): number => {\n if (index < -1) return -1;\n if (index > optionsRef.current.length - 1) return optionsRef.current.length - 1;\n return index;\n };\n\n const highlightNextOption = () => setItemToHighlight((prev) => clampIndex(prev + 1));\n const highlightPrevOption = () => setItemToHighlight((prev) => clampIndex(prev - 1));\n\n const reset = () => {\n selectRef.current?.blur();\n setItemToHighlight(-1);\n };\n\n const handleKeyUp = (event: KeyboardEvent) => {\n if (!shouldHighlightOption) return undefined;\n\n const shouldHighlightOptionNext = event.key === 'ArrowDown';\n const shouldHighlightOptionPrev = event.key === 'ArrowUp';\n\n if (shouldHighlightOptionNext) return highlightNextOption();\n if (shouldHighlightOptionPrev) return highlightPrevOption();\n\n return undefined;\n };\n\n const preventScrollingWhileNavigating = (event: KeyboardEvent) => {\n if (!shouldHighlightOption) return;\n if (!['ArrowDown', 'ArrowUp'].includes(event.key)) return;\n\n event.preventDefault();\n };\n\n const handleHighlighted: (cb: (index: number) => void) => React.KeyboardEventHandler<typeof selectRef.current> =\n (cb) => (event) => {\n if (itemToHighlight === -1) return;\n if (event.key !== 'Enter') return;\n\n cb(itemToHighlight);\n reset();\n };\n\n useEffect(() => {\n if (shouldHighlightOption) return;\n reset();\n }, [shouldHighlightOption]);\n\n return { handleKeyUp, preventScrollingWhileNavigating, handleHighlighted, itemToHighlight };\n};\n\nconst useVisualAccessibility = ({ selectRef, isSelectDisabled }: IAccessibilityProps) => {\n const addFocusClass = () => {\n selectRef.current?.classList.add('focus');\n };\n const removeFocusClass = () => {\n selectRef.current?.classList.remove('focus');\n };\n const toggleFocus = () => {\n if (selectRef.current?.classList.contains('focus')) removeFocusClass();\n else addFocusClass();\n };\n\n const withClickAwayHandler = (cb: () => void) => (event: MouseEvent) => {\n if (!selectRef.current) return;\n if (selectRef.current.contains(event.target as Node)) return;\n\n removeFocusClass();\n cb();\n };\n\n useEffect(() => {\n if (!selectRef.current) return;\n\n if (isSelectDisabled) {\n selectRef.current.classList.add('disabled');\n } else selectRef.current.classList.remove('disabled');\n }, [isSelectDisabled]);\n\n return { withClickAwayHandler, toggleFocus, addFocusClass, removeFocusClass };\n};\n\nconst useAccessibility = (props: IAccessibilityProps) => {\n const { selectRef } = props;\n\n const { handleKeyUp, preventScrollingWhileNavigating, handleHighlighted, itemToHighlight } =\n useKeyboardAccessibility(props);\n const { addFocusClass, removeFocusClass, toggleFocus, withClickAwayHandler } = useVisualAccessibility(props);\n\n useEffect(() => {\n if (!selectRef.current) return undefined;\n\n selectRef.current.addEventListener('keydown', preventScrollingWhileNavigating);\n selectRef.current.addEventListener('keyup', handleKeyUp);\n selectRef.current.addEventListener('click', toggleFocus);\n selectRef.current.addEventListener('focus', addFocusClass);\n selectRef.current.addEventListener('blur', removeFocusClass);\n return () => {\n selectRef.current?.removeEventListener('keydown', preventScrollingWhileNavigating);\n selectRef.current?.removeEventListener('keyup', handleKeyUp);\n selectRef.current?.removeEventListener('click', toggleFocus);\n selectRef.current?.removeEventListener('focus', addFocusClass);\n selectRef.current?.removeEventListener('blur', removeFocusClass);\n };\n });\n\n return { withClickAwayHandler, handleHighlighted, itemToHighlight };\n};\n\n/**\n * DEPRECATED. Use Select2 instead.\n * A select component, created using <ul> and <li> elements, with bespoke accessibility\n * logic.\n *\n * # Usage\n * ## Defining a component that uses a typical Select element\n * ```tsx\n * const MyComponent = () => {\n * const handleSelect = (value: number, text: string) => {\n * console.log(\"Selected\", value);\n * };\n *\n * return <>\n * <Select\n * label=\"This is a label\"\n * options={[\n * { text: \"Option 1\", value: 1 },\n * { text: \"Option 2\", value: 2 },\n * ]}\n * onSelect={handleSelect}\n * />\n * </>\n * }\n * ```\n *\n * ## Defining a component that uses a disabled Select element\n * ```tsx\n * const MyComponent = () => {\n * const handleSelect = (value: number, text: string) => {\n * console.log(\"Selected\", value);\n * };\n *\n * return <>\n * <Select\n * disabled // Select component disabled explicitely\n * label=\"This is a label\"\n * options={[\n * { text: \"Option 1\", value: 1 },\n * { text: \"Option 2\", value: 2 },\n * ]}\n * onSelect={handleSelect}\n * />\n * <Select\n * label=\"This is a label\"\n * options={[]} // Select component disabled implicitely by passing an empty array of options\n * onSelect={handleSelect}\n * />\n * </>\n * }\n * ```\n *\n * ## Defining a component with a non-labelled Select element\n * ```tsx\n * const MyComponent = () => {\n * const handleSelect = (value: number, text: string) => {\n * console.log(\"Selected\", value);\n * };\n *\n * return <>\n * <Select\n * label=\"\"\n * options={[\n * { text: \"Option 1\", value: 1 },\n * { text: \"Option 2\", value: 2 },\n * ]}\n * onSelect={handleSelect}\n * />\n * </>\n * }\n * ```\n *\n * ## Changing the dimensions of a Select element (px)\n * ```tsx\n * const MyComponent = () => {\n * const handleSelect = (value: number, text: string) => {\n * console.log(\"Selected\", value);\n * };\n *\n * const selectWidthPx = 100;\n * const selectHeightPx = 27;\n *\n * return <>\n * <Select\n * label=\"This is a label\"\n * options={[\n * { text: \"Option 1\", value: 1 },\n * { text: \"Option 2\", value: 2 },\n * ]}\n * onSelect={handleSelect}\n * width={selectWidthPx}\n * height={selectHeightPx}\n * />\n * </>\n * }\n * ```\n */\nfunction Select<T>({\n label,\n options,\n onSelect,\n disabled = false,\n resetWhenOptionsUpdate = false,\n width = 'default',\n height = 'default',\n}: ISelectProps<T>) {\n const selectRef = useRef<HTMLUListElement>(null);\n const optionsRef = useRef<HTMLLIElement[]>([]);\n\n const [selectedValue, setSelectedValue] = useState<IOption<T> | null>(null);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n\n const isDisabled = disabled || options.length === 0;\n\n const { withClickAwayHandler, handleHighlighted, itemToHighlight } = useAccessibility({\n selectRef,\n optionsRef,\n shouldHighlightOption: isOpen,\n isSelectDisabled: isDisabled,\n });\n\n const openSelect = () => setIsOpen(true);\n const closeSelect = () => setIsOpen(false);\n const toggleSelect = () => setIsOpen((prev) => !prev);\n\n const closeSelectOnBlur = withClickAwayHandler(closeSelect);\n\n const handleOptionSelection = (index: number) => {\n const option = options[index];\n\n setSelectedValue(option);\n onSelect(option.value, option.text);\n };\n\n useEffect(() => {\n document.addEventListener('click', closeSelectOnBlur, false);\n return () => {\n document.removeEventListener('click', closeSelectOnBlur, false);\n };\n }, []);\n\n useEffect(() => {\n if (!resetWhenOptionsUpdate) return;\n if (options.length === 0) {\n setSelectedValue(null);\n return;\n }\n\n setSelectedValue(options[0]);\n }, [options, resetWhenOptionsUpdate]);\n\n return (\n <Wrapper>\n {label !== '' && (\n <BodyText level={1} tag=\"p\" data-testid=\"select-label\">\n {label}\n </BodyText>\n )}\n <SelectList\n id=\"select\"\n ref={selectRef}\n onClick={toggleSelect}\n onFocus={openSelect}\n onBlur={closeSelect}\n onMouseDown={(e) => e.preventDefault()}\n onKeyUp={handleHighlighted(handleOptionSelection)}\n width={width}\n height={height}\n role=\"listbox\"\n tabIndex={0}\n aria-labelledby={label}\n aria-disabled={isDisabled}\n data-testid=\"select\"\n >\n <SelectWrapper>\n <BodyText level={1} tag=\"p\" data-testid=\"selected-value\">\n {selectedValue?.text ?? options[0]?.text ?? ''}\n </BodyText>\n {isOpen && (\n <Options data-testid=\"options\">\n {options.map((option, index) => (\n <Option\n ref={(element) => {\n if (!element || optionsRef.current.length === options.length) return;\n optionsRef.current.push(element);\n }}\n role=\"option\"\n tabIndex={index + 1}\n hover={index === itemToHighlight}\n key={option.text}\n onClick={() => handleOptionSelection(index)}\n >\n <BodyText level={1} tag=\"p\">\n {option.text}\n </BodyText>\n </Option>\n ))}\n </Options>\n )}\n </SelectWrapper>\n <ArrowIcon />\n </SelectList>\n </Wrapper>\n );\n}\n\nexport default Select;\n","import React, { FunctionComponent } from 'react';\nimport Select from 'react-select/async';\n\nimport { ISelect2AsyncProps } from '../../../types/formTypes';\nimport { WrapperComponent, DropdownIndicator } from '../Select2/Select2';\n\n/**\n * The Select2Async component is similar to Select 2, but uses react-select async\n * component for select instead of regular react-select component. This can be used\n * for selects with dynamically loaded options, live search components etc.\n *\n * # Error state\n * An error label will be shown below the select if the `error` prop exists.\n * Also select will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n */\nconst SelectComponent: FunctionComponent<ISelect2AsyncProps> = ({\n label,\n error,\n width,\n darkMode = false,\n components,\n ...selectProps\n}) => {\n return (\n <WrapperComponent label={label} error={error} width={width} darkMode={darkMode}>\n <Select\n {...selectProps}\n components={{\n DropdownIndicator,\n LoadingIndicator: undefined,\n IndicatorSeparator: undefined,\n ...components,\n }}\n className=\"harmonic-select-container\"\n classNamePrefix=\"harmonic-select\"\n />\n </WrapperComponent>\n );\n};\n\nexport default SelectComponent;\n","/* eslint-disable react/no-danger */\nimport React, { FunctionComponent, useRef, useState } from 'react';\nimport { INodeProps, IStatusBannerProps } from '../../../types/types';\nimport SvgIcon from '../../atoms/Icons/Icons';\nimport { ContentContainer, StatusBannerWrapper, SvgContainer } from './StatusBanner.style';\n\nconst StatusBanner: FunctionComponent<IStatusBannerProps> = ({ statusText, visibility = true }) => {\n const [isVisible, setIsVisible] = useState<boolean>(visibility);\n const [isClosing, setIsClosing] = useState<boolean>(false);\n\n const content: INodeProps = useRef<HTMLDivElement>(null);\n\n const handleCloseBanner = () => {\n setIsClosing(true);\n\n const transitionEnd = () => {\n setIsVisible(!visibility);\n if (content.current) {\n content.current.removeEventListener('transitionend', transitionEnd);\n }\n };\n\n if (content.current) {\n content.current.addEventListener('transitionend', transitionEnd);\n }\n\n setTimeout(() => {\n setIsVisible(!visibility);\n }, 300);\n };\n\n const onKeyboardCloseHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n handleCloseBanner();\n }\n };\n\n if (isVisible) {\n return (\n <StatusBannerWrapper role=\"alert\" className={isClosing ? 'closing' : ''} data-testid=\"statusContainer\">\n <ContentContainer>\n <div dangerouslySetInnerHTML={{ __html: statusText }} />\n </ContentContainer>\n <SvgContainer\n onClick={handleCloseBanner}\n tabIndex={0}\n role=\"button\"\n aria-label=\"Close\"\n onKeyDown={onKeyboardCloseHandler}\n >\n <SvgIcon iconName=\"Close\" />\n </SvgContainer>\n </StatusBannerWrapper>\n );\n }\n\n return null;\n};\n\nexport default StatusBanner;\n","/* eslint-disable no-extra-boolean-cast */\n/* eslint-disable radix */\n/* eslint-disable jsx-a11y/label-has-for */\n/* eslint-disable jsx-a11y/label-has-associated-control */\nimport React, { ReactElement, useState } from 'react';\nimport { StepperBox, StepperButton, StepperError, StepperValue, StepperWrapper } from './Stepper.style';\nimport { IStepperProps } from '../../../types/formTypes';\nimport { Icon } from '../Icons';\nimport { AltHeader } from '../Typography';\n\n/**\n * A harmonic Stepper component, used similarly to an HTML input type number.\n *\n * The buttons are clickable but not keyboard focusable\n *\n * An `initialValue`, the `step` to increase / decrease by, `min`\n * and `max` values can all be provided, but are optional, with defaults.\n *\n * The displayed value can be controlled by:\n *\n * - Entering a value in to the central input area (both mouse and keyboard-focusable)\n *\n * - Clicking the buttons on either side (mouse only)\n *\n * - Keyboard-focusing the stepper box and using the arrow keys\n *\n * In all cases the value will be clamped between min and max values.\n *\n * The maximum width of the component is 4 characters, meaning 3 digits with a\n * sign, or 4 without.\n *\n * Optional `plusAction` and `minusAction` functions can be provided and will be\n * called on click of the corresponding buttons.\n *\n * The component will display an `error` string beneath the stepper box, if present.\n *\n * Styles are provided for the `disabled` state and for display on dark or\n * coloured backgrounds, using the `darkMode` boolean.\n *\n * Finally, an `accessibleName` string can be provided. Although optional,\n * it's a very good idea to include this so that users of screen-readers\n * know what they are actually controlling.\n *\n * Example:\n *\n * ```tsx\n * import { Stepper } from '@royaloperahouse/harmonic'\n *\n * <div>\n * <p>How How many seas must a white dove sail before she sleeps in the sand?</p>\n * <Stepper\n * initialValue={12}\n * step={2}\n * min={-8}\n * max={667}\n * plusAction={() => {console.log('More seas')}}\n * minusAction={() => {console.log('Fewer seas')}}\n * darkMode={false}\n * disabled={false}\n * error=\"Something went wrong!\"\n * accessibleName=\"Number of seas\"\n * />\n * </div>\n */\n\nexport const Component = ({\n initialValue = 1,\n step = 1,\n min = -999,\n max = 1000,\n minusAction,\n plusAction,\n darkMode,\n error,\n disabled,\n accessibleName,\n}: IStepperProps): ReactElement => {\n const [displayValue, setDisplayValue] = useState<string>(initialValue.toString());\n\n const validInput = /^-?\\d+?$/;\n\n const clampValue = (val: number | string, minValue: number, maxValue: number): number =>\n Math.min(Math.max(+val, minValue), maxValue);\n\n const parseSigned = (input: string): string => {\n return input.startsWith('0') ? '-' : `-${input.slice(0, input.length - 1)}`;\n };\n\n const zeroSoloSign = (input: string): string => {\n return input === '-' ? '0' : input;\n };\n\n const decrement = () => {\n if (disabled) return;\n\n setDisplayValue(clampValue(+zeroSoloSign(displayValue) - step, min, max).toString());\n\n if (minusAction) minusAction();\n };\n\n const increment = () => {\n if (disabled) return;\n\n setDisplayValue(clampValue(+zeroSoloSign(displayValue) + step, min, max).toString());\n\n if (plusAction) plusAction();\n };\n\n const setMinimumValue = () => {\n setDisplayValue(min.toString());\n\n if (minusAction) minusAction();\n };\n\n const setMaximumValue = () => {\n setDisplayValue(max.toString());\n\n if (plusAction) plusAction();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n increment();\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n decrement();\n break;\n case 'Home':\n setMinimumValue();\n break;\n case 'End':\n setMaximumValue();\n break;\n default:\n break;\n }\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const input = event.target.value;\n\n if (input.endsWith('-')) {\n setDisplayValue(parseSigned(input));\n\n return;\n }\n\n const val = !!event.target.value ? event.target.value : '0';\n\n if (val.match(validInput)) {\n setDisplayValue(clampValue(val, min, max).toString());\n }\n };\n\n return (\n <StepperWrapper data-testid=\"stepper-wrapper\">\n <StepperBox\n role=\"spinbutton\"\n aria-valuenow={parseInt(displayValue)}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-labelledby={accessibleName}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n error={error}\n darkMode={darkMode}\n disabled={disabled}\n data-testid=\"stepper-box\"\n >\n <StepperButton onClick={decrement} disabled={disabled} data-testid=\"left-stepper-button\">\n <Icon iconName=\"Detract\" />\n </StepperButton>\n <label>\n <StepperValue\n disabled={disabled}\n aria-disabled={disabled}\n maxLength={4}\n onChange={handleInputChange}\n value={displayValue}\n data-testid=\"stepper-value\"\n />\n </label>\n <StepperButton onClick={increment} disabled={disabled} data-testid=\"right-stepper-button\">\n <Icon iconName=\"Expand\" />\n </StepperButton>\n </StepperBox>\n {error && (\n <StepperError darkMode={darkMode} data-testid=\"stepper-error\">\n <AltHeader level={6}>{error}</AltHeader>\n </StepperError>\n )}\n </StepperWrapper>\n );\n};\n\nexport default Component;\n","import React, { FunctionComponent } from 'react';\nimport { IStickyBarProps } from '../../../types/navigation';\nimport { GridItem } from '../../atoms/Grid';\nimport { StickyBarGrid, StickyBarWrapper } from './StickyBar.style';\n\nconst StickyBar: FunctionComponent<IStickyBarProps> = ({\n columnStartDesktop = 3,\n columnSpanDesktop = 8,\n columnStartDevice = 2,\n columnSpanDevice = 12,\n hideBottomBorder,\n children,\n}) => {\n return (\n <StickyBarWrapper data-testid=\"sticky-bar-block\">\n <StickyBarGrid hideBottomBorder={hideBottomBorder ?? false}>\n <GridItem\n columnStartDesktop={columnStartDesktop}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={columnStartDevice}\n columnSpanDevice={columnSpanDevice}\n >\n {children}\n </GridItem>\n </StickyBarGrid>\n </StickyBarWrapper>\n );\n};\n\nexport default StickyBar;\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { FunctionComponent, useLayoutEffect, useRef, useState } from 'react';\nimport { Colors } from '../../../types/types';\nimport {\n TableContainer,\n TableHeader,\n Pagination,\n PageNumber,\n Next,\n Container,\n ScrollButtons,\n Wrapper,\n AriaDescription,\n} from './Table.style';\nimport { Row } from './components/TableRow';\nimport { scrollTable, Content } from './components/TableHelpers';\nimport { reducePages } from '../Pagination/Pagination';\nimport { Icon, RotatorButtons } from '../../atoms';\nimport { MorePages } from '../Pagination/Pagination.style';\nimport { ITableProps } from '../../../types/tableTypes';\n\nconst Table: FunctionComponent<ITableProps> = ({\n columns,\n headings,\n children,\n lineColors,\n rowsPerPage,\n pagination,\n description,\n}) => {\n const [currentPage, setCurrentPage] = useState(0);\n const [showScrollButtons, setShowScrollButtons] = useState(false);\n\n const lineColor = lineColors ?? Colors.Cinema;\n const tableRef = useRef<HTMLTableElement>(null);\n\n useLayoutEffect(() => {\n const horizontalScroll = () => {\n if (tableRef.current) {\n setShowScrollButtons(tableRef.current.scrollWidth > tableRef.current.clientWidth);\n }\n };\n\n horizontalScroll();\n window.addEventListener('resize', horizontalScroll);\n return () => window.removeEventListener('resize', horizontalScroll);\n }, []);\n\n const totalRows = Array.isArray(children) ? children.length + 1 : 1;\n const totalPages = pagination ? Math.ceil(totalRows / rowsPerPage) : 1;\n const pageNumbers = Array.from({ length: totalPages }, (_, i) => i);\n const reducedPageNumbers = reducePages(pageNumbers, currentPage);\n\n let currentRows;\n if (pagination) {\n if (Array.isArray(children)) {\n currentRows = children.slice(currentPage * rowsPerPage, (currentPage + 1) * rowsPerPage);\n } else {\n currentRows = [];\n }\n } else {\n currentRows = children;\n }\n\n let visibleRows;\n if (pagination) {\n visibleRows = Array.isArray(currentRows) ? currentRows.length + 1 : 0;\n } else {\n visibleRows = totalRows;\n }\n\n return (\n <Wrapper>\n {showScrollButtons && (\n <ScrollButtons>\n <RotatorButtons\n onClickPrev={() => scrollTable(tableRef, 'left')}\n onClickNext={() => scrollTable(tableRef, 'right')}\n />\n </ScrollButtons>\n )}\n <Container role=\"table\" tabIndex={0} ref={tableRef} aria-rowcount={totalRows} aria-colcount={columns}>\n <AriaDescription id=\"table-description\">\n {description} visible rows: {visibleRows}\n </AriaDescription>\n <TableContainer>\n <thead>\n {' '}\n {/* INFO - this row contains the header cells */}\n <tr role=\"columnheader\">\n {headings?.map((heading, index) => (\n <TableHeader key={index} role=\"columnheader\" scope=\"col\" columns={columns} lineColor={lineColor}>\n <Content content={heading} />\n </TableHeader>\n ))}\n </tr>\n </thead>\n\n <tbody>\n {' '}\n {/* INFO - this row contains the data cells */}\n {Array.isArray(currentRows) &&\n currentRows.map((row, rowIndex) => (\n <Row key={rowIndex} row={row} rowIndex={rowIndex} columns={columns} lineColor={lineColor} />\n ))}\n </tbody>\n </TableContainer>\n\n {/* Optional pagination */}\n\n {pagination && totalPages > 1 && (\n <>\n <AriaDescription id=\"pagination-description\">\n Table pagination: current page {currentPage + 1} of {totalPages}\n </AriaDescription>\n\n <Pagination>\n {currentPage > 0 && (\n <li>\n <PageNumber\n key=\"previous-page\"\n onClick={() => setCurrentPage(currentPage - 1)}\n tabIndex={0}\n aria-label=\"Previous page\"\n >\n <Next>\n <Icon iconName=\"DropdownArrow\" direction=\"down\" />\n </Next>\n </PageNumber>\n </li>\n )}\n {currentPage > 2 && (\n <li>\n <PageNumber key=\"more-before\">\n <MorePages>...</MorePages>\n </PageNumber>\n </li>\n )}\n {reducedPageNumbers.map((number) => (\n <li key={number}>\n <PageNumber\n key={number}\n onClick={() => setCurrentPage(number)}\n tabIndex={0}\n active={`${number === currentPage}`}\n >\n {number + 1}\n </PageNumber>\n </li>\n ))}\n {currentPage + 4 < totalPages && (\n <li>\n <PageNumber key=\"more-after\">\n <MorePages>...</MorePages>\n </PageNumber>\n </li>\n )}\n {currentPage < totalPages - 1 && (\n <li>\n <PageNumber\n key=\"next-page\"\n onClick={() => setCurrentPage(currentPage + 1)}\n tabIndex={0}\n aria-label=\"Next page\"\n >\n <Next>\n <Icon iconName=\"DropdownArrow\" direction=\"up\" />\n </Next>\n </PageNumber>\n </li>\n )}\n </Pagination>\n </>\n )}\n </Container>\n </Wrapper>\n );\n};\n\nexport default Table;\n","import React from 'react';\nimport { TextAreaBox, TextAreaError, TextAreaLabel, TextAreaWrapper } from './TextArea.style';\nimport { ITextAreaProps } from '../../../types/formTypes';\nimport { AltHeader } from '../Typography';\nimport { GridItem } from '../Grid';\n\n/**\n * An HTML textarea component for Harmonic.\n *\n * Control the height and width of the component with `height` and `width`.\n *\n * The TextArea can also be used as the direct child of a\n * Harmonic Grid component, in which case you can control the width and\n * horizontal position by specifying GridItem props.\n *\n * If a fixed pixel width is specified it will take precedence over the\n * column span on Desktop.\n *\n * Example using width:\n *\n * ```tsx\n * <TextArea\n * label='My Text Area'\n * error={myError}\n * height={100}\n * width={300}\n * darkMode={true}\n * />\n * ```\n *\n * Example of use as a GridItem:\n *\n * ```tsx\n * import {Grid, TextArea} from '@royaloperahouse/harmonic';\n *\n * <Grid>\n * <TextArea\n * label='My Text Area'\n * error={myError}\n * darkMode={false}\n * height={250}\n * columnStartDesktop={2}\n * columnSpanDesktop={7}\n * />\n * </Grid>\n * ```\n */\n\nconst TextArea = ({\n label,\n error,\n width,\n darkMode,\n height = 200,\n columnStartDesktop = 1,\n columnStartDevice = 1,\n columnSpanDesktop = 16,\n columnSpanDevice = 14,\n maxLength = 950,\n tabIndex = 0,\n ...textareaProps\n}: ITextAreaProps) => {\n return (\n <GridItem\n columnStartDesktop={columnStartDesktop}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={columnStartDevice}\n columnSpanDevice={columnSpanDevice}\n >\n <TextAreaWrapper width={width} height={height}>\n <TextAreaLabel darkMode={darkMode} data-testid=\"text-area-label\">\n <AltHeader level={6}>{label}</AltHeader>\n </TextAreaLabel>\n <TextAreaBox error={error} darkMode={darkMode} maxLength={maxLength} tabIndex={tabIndex} {...textareaProps} />\n {error && (\n <TextAreaError darkMode={darkMode} data-testid=\"text-area-error\">\n <AltHeader level={6}>{error}</AltHeader>\n </TextAreaError>\n )}\n </TextAreaWrapper>\n </GridItem>\n );\n};\n\nexport default TextArea;\n","import React from 'react';\n\nimport { TextFieldContainer, Input, TextLabel, ErrorLabel } from './TextFieldLegacy.style';\n\nimport { ITextFieldProps } from '../../../types/formTypes';\n\n/**\n * @deprecated\n *\n * # IMPORTANT\n * Please use the `<TextField />` component instead of this component if possible.\n * This component was introduced due to incompatibilities between versions of the Harmonic library.\n * */\nconst TextFieldLegacy = ({ label, error, darkMode = false, width, ...inputProps }: ITextFieldProps) => {\n return (\n <TextFieldContainer>\n <label htmlFor=\"text-field-input\">\n <TextLabel darkMode={darkMode} data-testid=\"text-field-text-label\">\n {label}\n </TextLabel>\n <Input\n id=\"text-field-input\"\n type=\"text\"\n error={error}\n darkMode={darkMode}\n data-testid=\"text-field-input\"\n width={width}\n {...inputProps}\n />\n </label>\n {error ? (\n <ErrorLabel darkMode={darkMode} data-testid=\"text-field-error-label\">\n {error}\n </ErrorLabel>\n ) : null}\n </TextFieldContainer>\n );\n};\n\nexport default TextFieldLegacy;\n","import React, { useState, useEffect, FunctionComponent } from 'react';\nimport { AltHeader, BodyText } from '../Typography';\nimport { Icon } from '../Icons';\nimport { TickboxLabel, TickboxInput, TickboxCheckmark, TickboxError } from './Tickbox.style';\nimport { ITickboxProps, TickboxMode } from '../../../types/tickbox';\n\n/**\n * DEPRECATED. Use Tickbox2 instead\n */\nconst Tickbox: FunctionComponent<ITickboxProps> = ({\n children,\n onChange,\n error,\n dataLabel,\n mode = 'light',\n whiteBox = false,\n checked = false,\n disabled = false,\n}) => {\n const [selected, setSelected] = useState<boolean>(checked);\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!disabled) {\n const { checked: inputChecked } = e.target;\n setSelected(inputChecked);\n onChange?.(inputChecked);\n }\n };\n\n useEffect(() => {\n setSelected(checked);\n }, [checked]);\n\n const spaceButtonHandler = (e: React.KeyboardEvent<HTMLLabelElement>) => {\n if (e.key === 'Space' || (e.key === ' ' && !disabled)) {\n setSelected(!selected);\n onChange?.(!selected);\n }\n };\n\n const isDarkMode: boolean = mode === TickboxMode.Dark;\n return (\n <TickboxLabel\n tabIndex={0}\n onKeyPress={spaceButtonHandler}\n dark={isDarkMode}\n disabled={disabled}\n data-testid=\"tickbox\"\n role=\"checkbox\"\n aria-checked={selected ? 'true' : 'false'}\n aria-labelledby={dataLabel}\n >\n <BodyText level={1} tag=\"span\">\n {children}\n </BodyText>\n <TickboxInput\n type=\"checkbox\"\n checked={selected}\n onChange={onInputChange}\n dark={isDarkMode}\n aria-labelledby={dataLabel}\n whiteBox={whiteBox}\n aria-checked={selected ? 'true' : 'false'}\n disabled={disabled}\n />\n <TickboxCheckmark dark={isDarkMode} disabled={disabled} error={error !== undefined}>\n <Icon iconName=\"Tick\" />\n </TickboxCheckmark>\n {error && error.length > 0 && (\n <TickboxError dark={isDarkMode}>\n <AltHeader level={6}>{error}</AltHeader>\n </TickboxError>\n )}\n </TickboxLabel>\n );\n};\n\nexport default Tickbox;\n","import React, { FunctionComponent } from 'react';\nimport { ITitleCTAProps } from '../../../types/navigation';\nimport { Header, AltHeader } from '../../atoms/Typography';\nimport { PrimaryButton } from '../../atoms/Buttons';\nimport {\n TitleCTAGrid,\n TitleCTAGridItem,\n TitleCTAGridWrapper,\n AnchorTitle,\n ButtonsDesktopWrapper,\n ButtonsMobileWrapper,\n PrimaryButtonReverse,\n MessageWrapper,\n MessageWrapperMobile,\n} from './TitleWithCTA.style';\n\nconst TitleWithCTA: FunctionComponent<ITitleCTAProps> = ({ title, links, sticky = false, message }) => {\n const { text: primaryButtonText, ...primaryButtonProps } = links?.[0] || {};\n const { text: secondaryButtonText, ...secondaryButtonProps } = links?.[1] || {};\n\n return (\n <TitleCTAGridWrapper sticky={sticky}>\n <TitleCTAGrid>\n <TitleCTAGridItem title={title}>\n {title ? (\n <AnchorTitle data-testid=\"anchor-title\">\n <Header level={5}>{title}</Header>\n </AnchorTitle>\n ) : null}\n {links?.[0] ? (\n <ButtonsDesktopWrapper data-testid=\"anchor-ctas\">\n <PrimaryButton {...primaryButtonProps}>{primaryButtonText}</PrimaryButton>\n {links?.[1] ? (\n <PrimaryButtonReverse {...secondaryButtonProps}>{secondaryButtonText}</PrimaryButtonReverse>\n ) : null}\n </ButtonsDesktopWrapper>\n ) : (\n message && (\n <MessageWrapper>\n <AltHeader level={6}>{message}</AltHeader>\n </MessageWrapper>\n )\n )}\n </TitleCTAGridItem>\n </TitleCTAGrid>\n {links?.[0] ? (\n <ButtonsMobileWrapper>\n <PrimaryButton {...primaryButtonProps}>{primaryButtonText}</PrimaryButton>\n </ButtonsMobileWrapper>\n ) : (\n message && (\n <MessageWrapperMobile>\n <AltHeader level={6}>{message}</AltHeader>\n </MessageWrapperMobile>\n )\n )}\n </TitleCTAGridWrapper>\n );\n};\n\nexport default TitleWithCTA;\n","import React, { FunctionComponent } from 'react';\nimport UpsellCards from '../../molecules/UpsellCards';\nimport { AltHeader, Grid, GridItem, TextLink } from '../../atoms';\nimport { UpsellBorderBox, TitleContainer, TextContainer } from './UpsellSection.style';\nimport { TextOnly } from '../../molecules';\nimport { IUpsellSectionProps } from '../../../types/upsell';\nimport { ThemeType } from '../../../types';\nimport { ThemeProvider } from '../..';\n\nconst UpsellSection: FunctionComponent<IUpsellSectionProps> = ({\n title,\n richText,\n link,\n upsellCards,\n theme = ThemeType.Core,\n}) => {\n const themedUpsellCards = upsellCards\n ? [...upsellCards].map((card) => ({\n ...card,\n theme: card.theme || theme,\n }))\n : [];\n\n return (\n <ThemeProvider theme={theme}>\n <Grid>\n <GridItem\n columnStartDesktop={3}\n columnSpanDesktop={12}\n columnStartDevice={2}\n columnSpanDevice={12}\n columnStartSmallDevice={1}\n columnSpanSmallDevice={14}\n >\n <UpsellBorderBox>\n <TitleContainer>\n <AltHeader level={4}>{title}</AltHeader>\n </TitleContainer>\n <TextContainer>\n <TextOnly\n text={richText ?? ''}\n columnStartDesktop={1}\n columnSpanDesktop={14}\n columnStartDevice={1}\n columnSpanDevice={14}\n />\n {link && <TextLink href={link.href}>{link.text}</TextLink>}\n </TextContainer>\n <UpsellCards upsellCards={themedUpsellCards} />\n </UpsellBorderBox>\n </GridItem>\n </Grid>\n </ThemeProvider>\n );\n};\n\nexport default UpsellSection;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Colors","ThemeType","LinkTarget","colors","core","stream","cinema","commonColors","black","white","darkgrey","midgrey","lightgrey","error","medium","good","progress","navigation","lemonChiffon","lapisLazuli","blue","red","fontFamilies","adobeGaramondPro","adobeGaramondProItalics","gothamSSmMedium","gothamSSm","sabonNextLTProRegular","sabonNextLTProRegularItalics","sansSerifFallback","common","fonts","desktop","sizes","headers","1","2","3","4","5","6","altHeaders","subtitles","titleDescription","body","listing","buttons","overline","search","letterSpacing","lineHeights","peopleListing","families","bodyItalics","listingItalics","peopleListingRole","weights","transforms","fontFeatureSettings","wordBreak","margins","mobile","tablet","spacing","7","8","9","10","12","15","18","20","30","35","40","45","50","grid","margin","outerMargin","gap","paddingX","paddingY","paddingYIcon","iconWidth","iconHeight","iconMargin","footer","height","paddingTop","paddingBottom","itemsGap","mediaGap","mediaIconWidth","mediaIconHeight","verticalSpacingLarge","verticalSpacingSmall","_extends","primary","primaryButton","secondaryButton","tertiaryButton","auxiliaryButton","primaryButtonReverseBg","primaryButtonReverse","themes","schools","Directions","left","right","up","down","reverse","Wrapper","styled","span","_templateObject","_taggedTemplateLiteralLoose","_ref","_ref$direction","direction","_ref2","color","IconLibrary","AddToMyList","_ref$color","React","width","viewBox","fill","xmlns","ariaLabel","d","Arrow","AudioDescription","Back10","BalletAndDance","Basket","BasketFull","BookTickets","CarouselArrow","ChooseDates","Cinema","Clips","Clock","Close","Confirm","CreditCard","Delete","Detract","DropdownArrow","EditMyList","Email","Expand","Expand12px","ExternalLink","Facebook","Favourite","FavouriteFull","Filter","FindAScreening","Forward10","FullScreen","GridView","Home","Info","Instagram","List","ListView","LiveStream","Location","Menu","Minimise","Muted","OnMyList","OperaAndMusic","Pause","PDF","Phone","Play","Print","Refresh","Reminder","Remove","Remove12px","Restart","Search","Seat","Secure","Settings","Shift","Space","Standing","Star","Subscribe","Subtitles","Tick","Tickets","Tiktok","Trailer","Twitter","User","UserSignedIn","Volume","Watch","Wheelchair","X","Youtube","Icon","className","title","iconName","displayName","CarouselType","AspectRatio","AspectRatioLegacy","AspectRatioWidth","TickboxMode","ButtonType","IInformationCtaVariant","IInformationCtaTheme","IInformationTitleVariant","IInformationBackgroundColour","BadgeWrapper","svg","fillColor","StreamBadge","_ref$fillColor","White","_ref$align","align","_ref$invert","invert","colour","Black","role","points","CinemaBadge","breakpoints","xs","sm","md","ml","lg","devices","smallMobile","mobileAndTablet","smallDesktop","largeDesktop","ButtonWrapper","a","ButtonIconWrapper","Button","children","iconDirection","iconClassName","rest","_objectWithoutPropertiesLoose","_excluded","truncatedString","substring","PrimaryButtonWrapper","_theme$colors","bgColor","theme","_theme$colors2","_ref3","disabled","AriaDescription","_templateObject2","PrimaryButton","props","id","MidGrey","SecondaryButton","SecondaryButtonWrapper","Primary","TertiaryButtonWrapper","TertiaryIconWrapper","zIndexes","forEach","name","index","TabContainer","div","OptionItem","colorPrimary","OptionsContainer","_templateObject3","menu","withIcon","withOptionsInMobile","ControlledDropdownWrapper","ControlledDropdownHeaderContainer","activeColor","active","ControlledDropdownHeaderContainerLink","attrs","as","IconWrapper","_templateObject4","ControlledDropdown","text","options","_ref$activeColor","onClick","onOptionClick","onMouseEnter","onMouseLeave","onReset","onFocus","onBlur","useRef","resetHandler","useCallback","useEffect","window","innerWidth","mouseClickHandler","e","_ref$current","current","contains","target","addEventListener","removeEventListener","isDropdown","length","headerEvents","onMouseDown","preventDefault","onKeyDown","key","tabIndex","map","optionItem","option","optionLink","link","handleOptionKeyDown","href","Grid","GridItem","columnStartDesktop","_ref2$columnSpanDeskt","columnSpanDesktop","columnStartSmallDevice","columnStartDevice","_ref4","_ref4$columnSpanDevic","columnSpanDevice","columnSpanSmallDevice","_ref5","_ref6","_ref6$columnSpanDevic","ImageAspectRatioWrapper","_ref$aspectRatio","aspectRatio","_ref2$aspectRatio","_ref3$aspectRatio","_ref4$aspectRatio","ProgressView","ElapsedProgressView","isProgressWithSteps","PendingProgressView","_ref7","StepsWrapper","StepWrapper","_templateObject5","_ref8","isVisible","_ref9","isActive","Progress","_ref$height","pendingLineColor","steps","stepsQuantity","quantity","currentStep","progressValue","_ref$progress","elapsedLineColor","Array","from","_","step","RadioContainer","RadioLine","RadioError","typography","level","_ref10","_ref11","_ref12","_ref13","_ref14","TextLogoProduct","StyledTag","tag","AltHeader","semanticLevel","BodyText","_ref3$tag","Header","Overline","_ref5$tag","Subtitle","_ref6$tag","Radio","checked","_ref$checked","label","onChange","_useState","useState","isChecked","setChecked","handleRadioChange","onKeyPress","event","readOnly","Container","undefined","darkMode","blackBox","TickboxLabel","RadioIcon","TextLabel","ErrorLabel","_templateObject6","Radio2","forwardRef","_ref$disabled","_ref$darkMode","_ref$blackBox","inputProps","ButtonsContainer","IconUnavailableWrapper","RotatorButtons","onClickPrev","onClickNext","_ref$availablePrev","availablePrev","_ref$availableNext","availableNext","onClickLeftHandler","onClickRightHandler","renderPrevIcon","renderNextIcon","SecondaryLogoWrapper","SectionSplitterContainer","Splitter","SponsorLogoWrapper","SponsorLogo","colorLogo","_ref$colorLogo","_ref$colorBackground","colorBackground","x","y","transform","CustomImage","img","SponsorshipStyledIframe","Sponsorship","src","_ref$src","_ref$dataRoh","dataRoh","_ref$title","_ref$altText","altText","isCustomImage","alt","scrolling","TabText","withTextInMobile","TitleContainer","selected","Tab","_ref$titleLink","titleLink","_ref$selected","_ref$iconName","_ref$withIcon","_ref$withTextInMobile","_ref$colorPrimary","clickHandler","TabLinkWrapper","hoverColor","TabLinkIconWrapper","TabLink","DarkGrey","_ref$hoverColor","TextAreaWrapper","TextAreaLabel","TextAreaBox","textarea","TextAreaError","InputWrapper","Input","input","isPasswordField","ShowHideButton","button","TextFieldComponent","_ref$type","showPassword","setShowPassword","showHideButtonText","inputType","htmlFor","prev","TextField","TextFieldContainer","textStyles","p","TextLinkWrapper","TextLinkIconWrapper","TextLink","TickboxError","dark","TickboxCheckmark","TickboxInput","whiteBox","Tickbox","TickboxIcon","Tickbox2Component","Tickbox2","TimerWrapper","Line","TitleWrapper","ValuesWrapper","TimerLabel","TimerValueSeparator","TimerValueWrapper","_templateObject7","TimerValue","_templateObject8","Timer","endDate","endDateHandler","_ref$bottomLine","bottomLine","_React$useState","seconds","setSeconds","_React$useState2","minutes","setMinutes","_React$useState3","hours","setHours","_React$useState4","days","setDays","_React$useState5","isEndDateReached","setIsEndDateReached","renderTimerValue","value","separator","fn","interval","futureDate","moment","nowDate","differenceInMilliseconds","valueOf","difference","utc","fullDaysLeft","Math","floor","diff","daysDiff","toString","hoursDiff","format","minutesDiff","secondsDiff","setInterval","clearInterval","isBefore","TypeTagsContainer","ul","TypeTags","list","t","VideoPlayButton","VideoFullscreenButton","VideoControlsWrapper","VideoControlsInnerWrapper","LeftWrapper","VideoVolume","VideoMute","thumbStyles","trackStyles","_templateObject9","VolumeControlsWrapper","_templateObject10","volumeHidden","FullscreenButton","isFullscreen","handleMinimise","handleFullscreen","VideoControls","videoElementId","videoContainerId","_ref2$muted","muted","_ref2$autoPlay","autoPlay","_ref2$soundControl","soundControl","_ref2$fullScreenOptio","fullScreenOption","_ref2$loop","loop","playing","setPlaying","_useState2","isMuted","setIsMuted","_useState3","volume","setVolume","_useState4","setIsFullscreen","getVideoElement","querySelector","video","handleFullscreenChange","fullscreenElement","_asyncToGenerator","_regeneratorRuntime","mark","_callee","videoContainer","wrap","_context","next","requestFullscreen","abrupt","stop","_callee2","_context2","exitFullscreen","handlePlay","pause","play","handleMute","handleVolume","newVolume","Number","min","max","StepperWrapper","StepperError","StepperBox","StepperValue","StepperButton","NavigationWrapper","isMenuOpen","overlay","FullScreenContainer","searchOverlay","NavigationGrid","SearchBackground","visible","GridItemSearch","NavigationGridMobile","LogoContainer","MenuContainer","NavContainer","NavContainerGridItem","NavTopContainer","_templateObject11","LogoWrapper","Logo","_ref$urlLink","urlLink","desktopImage","rel","_ref$id","srcSet","devicesImage","media","BasketContainer","SvgContainer","NumContainer","BasketText","getSecondsUntil","expiryUnixTimestamp","now","Date","expiry","round","getTime","expiryTime","_ref$numItems","numItems","_ref$numVirtualItems","numVirtualItems","onClickHandler","_useBasket","basketText","setBasketText","basketIsActive","setBasketIsActive","basketTotalNumItems","setBasketTotalNumItems","_useState5","timer","setTimer","_useState6","basketIsEmpty","setBasketIsEmpty","ceil","formatTime","checkTimeRed","useBasket","SearchContainer","SvgIcon","Dropdown","timerCloseOptions","_ref$options","_ref$isMobileBehaviou","isMobileBehaviour","_ref$withOptionsInMob","node","open","setOpen","lockOpen","setLockOpen","titleSelected","setTitleSelected","handleClick","clearTimeout","setTimeout","handleChange","withOptions","onMouseHandler","onResetHandler","handleClickTitle","onKeyDownHandler","Account","NavTop","accountText","accountLink","accountIcon","accountOptions","onLink","basketExpiryUnixTimestamp","basketLink","basketNumItems","basketNumVirtualItems","_ref$isShowSearch","isShowSearch","onClickSearch","TabsContainer","ItemsContainer","showMenu","MenuItem","Tabs","items","_ref$items","onShowMenu","_ref$showMenu","openMenu","setOpenMenu","activeDropdown","setActiveDropdown","hoverOverDropdown","setHoverOverDropdown","onResetActive","onChangeHandler","item","isActiveDropdownClicked","i","_items$length","SearchBarContainer","SvgContainerSearch","SvgContainerClose","InputContainer","SearchLinkContainer","SearchArrowContainer","SearchBar","onClose","showSearchLink","setShowSearchLink","searchValue","setSearchValue","inputRef","_inputRef$current","focus","_inputRef$current2","blur","onSearchHandler","handleKeypress","onCloseHandler","placeholder","Core","FooterSection","section","FooterContainer","PolicyLinksRow","ContactNewsletterRow","ArtsLogoRow","AdditionalInfo","PolicyLinksList","PolicyLinkItem","li","PolicyLink","PolicyLinks","ContactNewsletterWrapper","ContactNewsletterSeparator","SignUpWrapper","SignUpText","ContactWrapper","MediaLinksWrapper","MediaIconWrapper","ContactNewsletter","signUpLink","socialMediaLinks","contact","signUpText","mediaLink","AnchorTabbarWrapper","bottomBorder","anchor","TabsGrid","TabsWrapper","TabsList","tabsOverflow","hasTwoArrows","ArrowsContainer","fullWidth","ArrowWrapper","TitleCTAGridWrapper","sticky","TitleCTAGrid","TitleCTAGridItem","AnchorTitle","ButtonsDesktopWrapper","ButtonsMobileWrapper","PrimaryButtonReverse","MessageWrapper","MessageWrapperMobile","PromoLabelWrapper","PromoLabel","ButtonContainer","OfferTextWrapper","PriceRow","LineThrough","OfferText","description","dangerouslySetInnerHTML","__html","formatPrice","isNaN","toFixed","UpsellCard","str","subTitle","price","promoPrice","flag","offerTexts","_ref$theme","reducedOfferTexts","slice","ThemeProvider","offerText","UpsellCards","upsellCards","card","UpsellBorderBox","TextContainer","AccordionContainer","LineContainer","ChildrenContainer","ContentContainer","textHeight","PrintHideWrapper","Accordion","_ref$showLine","showLine","visibleStandfirst","_ref$initOpen","initOpen","_ref$contentType","contentType","_ref$semanticLevel","_ref$displayLevel","displayLevel","openAccordion","setOpenAccordion","setTextHeight","setIconName","childrenVisibility","setChildrenVisibility","content","scrollHeight","toggleAccordion","Standfirst","contentContainerId","AccordionTitle","localSemanticLevel","subtitleLevel","includes","console","warn","AccordionsContainer","Theme","AnnouncementBannerWrapper","AuxiliaryButtonWrapper","AuxiliaryButton","_props$color","CardContainer","isCardClickable","onlyShowButtonsOnHover","HoverContainer","lineColor","contentOverlay","ProgressContainer","TitleContainerMobile","HighlightTextContainer","SubtitleContainer","LabelContainer","isGridCard","ExtraActionsContainer","LabelElements","_templateObject12","LabelIconWrapper","_templateObject13","getButtonsOpacity","getButtonsMinHeight","_templateObject14","primaryButtonTextLength","tertiaryButtonTextLength","size","_ref15","_ref16","stripAllHtmlTags","htmlString","replace","truncateHtmlString","resultLength","addDots","accumulatedText","tagStack","charCount","char","tagNameEnd","indexOf","tagName","split","push","pop","closeTags","truncate","n","buttonTypeToButton","_buttonTypeToButton","Secondary","Tertiary","TertiaryButton","Card","subtitle","_ref$text","_ref$highlightText","highlightText","links","_ref$tags","tags","image","_ref$imageAltText","imageAltText","_ref$withContinueWatc","withContinueWatching","_ref$size","_ref$fullWidth","_ref$onlyShowButtonsO","hoverLineColor","labelParams","_ref$isGridCard","auxiliaryCTA","substr","hovered","setHovered","truncatedText","firstButton","_ref2$text","firstButtonText","restFirstButton","primaryButtonTextTruncate","secondButton","_ref3$text","secondButtonText","restSecondButton","_excluded2","tertiaryButtonTextTruncate","hoverHandler","opacity","transition","FirstButtonComponent","buttonType","SecondButtonComponent","onMouseOver","flexGrow","_labelParams$color","CardsContainer","GridItemContainer","ContentWrapper","hideBottomBorder","hideTopBorder","AddressWrapperDesktop","AddressWrapperMobile","DetailsWrapper","BodyTextRelative","ContentSummaryWrapper","article","clickable","ContentSummaryImageWrapper","ContentSummaryTextWrapper","showImage","ContentSummaryTitleWrapper","BodyTextLimit","ContentSummaryBodyTextWrapper","EditorialGrid","imageToLeft","EditorialImageWrapper","EditorialTextWrapper","EditorialSubtitle","EditorialText","InfoContent","InfoTitle","InfoCTAWrapper","infoThemed","variant","InfoWrapper","background","InfoBodyWrapper","InfoCta","_ref2$variant","_ref2$theme","_ref2$target","renderButton","Self","PageHeadingWrapper","isPageHeadingWithoutTitle","PageHeadingGrid","ChildrenWrapper","TextWrapper","PageHeadingText","PageHeading","_ref$sponsor","sponsor","_ref$copyCharLimit","copyCharLimit","_ref$titleCharLimit","titleCharLimit","linkText","restLink","truncatedTitle","isTitleUnAvailable","ImpactWrapper","ImpactHeaderImageWrapper","ImpactGrid","SponsorWrapper","sponsorship","ScrollDownWrapper","PanelGrid","LeftPanel","hasImage","RightPanel","StreamWrapper","BrandingTextBlock","BrandingTextBody","ComapctHeaderWrapper","CompactHeaderAssetWrapper","CompactHeaderCopyWrapper","CompactHeaderLogoWrapper","CompactHeaderTitleWrapper","CompactHeaderCTAWrapper","PrimaryButtonWithInversion","CompactHeaderBranding","brandingStyle","brandingText","brandingLink","url","hasSameSiteUrl","setSameSiteUrl","_window","location","currentPageURL","regexPattern","match","urlDomain","currentMatch","isSameSiteUrl","trim","renderBranding","useMobile","setMobile","isMobile","VideoWithControls","IOS","setIOS","poster","_useResponsiveVideo","mobileVideo","desktopVideo","mobilePoster","desktopPoster","posterUrl","setPoster","videoUrl","setVideoUrl","useResponsiveVideo","isIOS","navigator","platform","userAgent","elementId","playsInline","CompactHeaderImage","CompactHeaderVideo","MorePages","PageNumberWrapper","ol","PageNumber","NextPage","reducePages","pages","currentPage","PeopleListingGrid","PersonWrapper","HeadshotWrapper","RoleWrapper","PersonLink","ReplacementWrapper","Person","person","replacement","_person$separator","personSeparator","withSeparator","hasHeadshot","people","headshot","useHeadshot","textSection","dataROH","personIndex","CreditListingWrapper","columnCount","DescriptionWrapper","PromoWithTagsGrid","asCard","PromoWithTagsSubtitle","PromoWithTagsText","hasTextLinks","_ref8$tertiaryButtonT","_ref8$primaryButtonTe","_ref9$tertiaryButtonT","_ref9$primaryButtonTe","PromoWithTagsTagWrapper","marginBottom","PromoWithTagsAdditionalText","TextLinksContainer","ExtraContentWrapper","MobileTitleWrapper","PromoWithTagsTypeTags","PromoWithTagsHeader","PromoWithTagsTextLink","_templateObject15","asCardOverrides","_templateObject16","PromoWithTagsExtraContentWrapper","_templateObject17","PromoWithTagsContentWrapper","_templateObject18","hideSection","PromoWithTagsContainer","_templateObject19","_templateObject20","EndDateText","_templateObject21","PromoWithTitleGrid","PromoWithTitleImageWrapper","PromoWithTitleContentWrapper","PromoWithTitleContainer","PromoWithTitleSubtitle","PromoWithTitleText","VideoContainer","settings","videoRef","setAspectRatio","isVideoReady","setIsVideoReady","changeVideoReadiness","_videoRef$current","useMemo","random","clonedVideo","cloneElement","onLoadedMetadata","newAspectRatio","videoWidth","videoHeight","gcd","b","divisor","getAspectRatioFromVideo","videoControlsProps","PromoChild","videoSettings","isImage","Children","only","isVideo","RadioGroupContainer","RadioGroup","horizontalMode","StatusBannerWrapper","SectionTitleWrapper","stateStyles","borderStyles","noMarginAndPaddingStyles","listItemStyles","ArrowIcon","SelectWrapper","Options","Option","hover","SelectList","selectStyles","DropdownIndicator","components","WrapperComponent","TextOnly","_ref$columnStartDeskt","_ref$columnSpanDeskto","_ref$columnStartDevic","_ref$columnSpanDevice","CaptionWrapper","AttributionWrapper","displayAttribution","StyledImage","ImageWrapper","ReadMoreContainer","LinkContainer","FullTextContainer","IntroTextContainer","nav","MenuList","LightGrey","MobileButton","MobileMenuList","isOpen","NavItem","linkRef","linkElement","DesktopNav","activeItem","idx","MobileNav","setIsOpen","containerRef","outsideClickHandler","Sections","Section","BottomLine","Text","LabelText","TableContainer","table","TableHeader","th","columns","TableCell","td","Pagination","Next","ScrollButtons","Content","scrollTable","tableRef","scrollTo","scrollLeft","behavior","Cell","cellIndex","cell","Row","Fragment","rowIndex","row","THEME_ICON","THEME_FONT_BODY","THEME_COLOR","THEME_COLOR_BLACK","THEME_COLOR_LIGHTGREY","THEME_COLOR_WHITE","SCRIPT_CONTENT","StickyBarWrapper","StickyBarGrid","InnerModal","popup","CloseButton","Overlay","Modal","defaultStyles","position","GlobalStyles","createGlobalStyle","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref23","_ref24","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","_ref39","_ref40","_ref41","_ref42","_ref43","_ref44","_ref45","_ref46","_ref47","_ref48","_ref49","_ref50","_ref51","_ref52","_ref53","_ref54","_ref55","_ref56","_ref57","_ref58","_ref59","_ref60","_ref61","_ref62","_ref63","_ref64","_ref65","_ref66","_ref67","_ref68","_ref69","_ref70","_ref71","_ref72","_ref73","_ref74","_ref75","_ref76","_ref77","_ref78","_ref79","_ref80","_ref81","_ref82","_ref83","_ref84","_ref85","_ref86","_ref87","_ref88","_ref89","_ref90","_ref91","_ref92","_ref93","_ref94","_ref95","_ref96","_ref97","_ref98","_ref99","_ref100","_ref101","_ref102","_ref103","_ref104","_ref105","_ref106","_ref107","_ref108","_ref109","_ref110","_ref111","_ref112","_ref113","_ref114","_ref115","_ref116","_ref117","_ref118","_ref119","_ref120","_ref121","_ref122","_ref123","_ref124","_ref125","_ref126","_ref127","_ref128","_ref129","_ref130","_ref131","_ref132","_ref133","_ref134","_ref135","_ref136","_ref137","_ref138","_ref139","_ref140","_ref141","_ref142","_ref143","_ref144","_ref145","_ref146","_ref147","_ref148","_ref149","_ref150","_ref151","_ref152","_ref153","_ref154","_ref155","_ref156","_ref157","_ref158","_ref159","_ref160","_ref161","_ref162","_ref163","_ref164","_ref165","_ref166","_ref167","_ref168","_ref169","_ref170","_ref171","_ref172","_ref173","_ref174","_ref175","_ref176","_ref177","_ref178","_ref179","_ref180","_ref181","_ref182","_ref183","_ref184","_ref185","_ref186","_ref187","_ref188","_ref189","_ref190","_ref191","_ref192","_ref193","_ref194","_ref195","_ref196","_ref197","_ref198","_ref199","_ref200","_ref201","_ref202","_ref203","_ref204","_ref205","_ref206","_ref207","_ref208","_ref209","_ref210","_ref211","_ref212","_ref213","_ref214","_ref215","_ref216","_ref217","_ref218","_ref219","_ref220","_ref221","_ref222","_ref223","_ref224","_ref225","_ref226","_ref227","_ref228","_ref229","_ref230","_ref231","_ref232","_ref233","_ref234","_ref235","_ref236","_ref237","_ref238","_ref239","_ref240","_ref241","_ref242","_ref243","_ref244","_ref245","_ref246","_ref247","_ref248","_ref249","_ref250","_ref251","_ref252","_ref253","_ref254","_ref255","_ref256","_ref257","_ref258","_ref259","_ref260","_ref261","_ref262","_ref263","_ref264","_ref265","_ref266","_ref267","_ref268","_ref269","_ref270","_ref271","_ref272","_ref273","_ref274","_ref275","_ref276","_ref277","_ref278","_ref279","_ref280","_ref281","_ref282","_ref283","_ref284","_ref285","_ref286","_ref287","_ref288","_ref289","_ref290","_ref291","_ref292","_ref293","_ref294","_ref295","_ref296","_ref297","_ref298","_ref299","_ref300","_ref301","_ref302","_ref303","_ref304","_ref305","_ref306","_ref307","_ref308","_ref309","_ref310","_ref311","_ref312","_ref313","isLastAccordion","accordion","tabs","onTabClick","activeTab","absolutePositionParams","_ref$bottomBorder","tabListRef","wrapperRef","selectedItem","setSelectedItem","setTabsOverflow","canScrollToLeft","setCanScrollToLeft","canScrollToRight","setCanScrollToRight","isSelectedItem","changeWrapperVisibility","showWrapper","topOffset","wrapperEl","visibility","top","handleScrollForAbsolutePosition","_absolutePositionPara","navigationHeight","_absolutePositionPara2","pageYOffset","selectedItemIndex","findIndex","el","tabLinks","getElementsByClassName","scrollWidth","getScrollWidth","tabsIsOverflowed","_tabListRef$current","_tabListRef$current2","clientWidth","scrollTriggerCheck","reachedItem","find","targetSectionElement","getElementById","topDiff","getBoundingClientRect","scrollY","_ref2$scrollLeft","_ref2$clientWidth","tabLinkElement","offsetLeft","offsetWidth","onScroll","_ref3$scrollLeft","_ref3$clientWidth","_ref3$scrollWidth","onClicktab","newScroll","scroll","announcementText","time","icon","getColumnStartDesktop","cards","email","phone","website","address","_ref$hideBottomBorder","_ref$hideTopBorder","hasDetails","addressString","descriptionText","chunk","divideAddressString","bodyText","_ref$largeTitle","largeTitle","_ref$showImage","_ref$truncate","_ref$fullyClickable","fullyClickable","_ref$baseSemanticLeve","baseSemanticLevel","_ref$columnCount","roles","musicTitle","additionalInfo","reduce","acc","concatenateMusicTitle","imagePosition","_ref$imagePosition","data","policyLinks","newsletter","rawSocialMediaLinks","_data$artsLogo","artsLogo","artsDataRoh","caption","setHeight","setWrapperHeight","_wrapperRef$current","offsetHeight","cta","titleWordLengths","word","maxTitleWordLength","apply","titleColumnSpan","textSize","longestWordLength","getColumnSpan","bgColour","loaded","setLoaded","callback","existingScript","liveChatDiv","setAttribute","script","scriptBody","onload","loadLiveChatScript","iconColor","appElementId","modalProps","customStyles","zIndex","border","appElement","closeModalHandler","shouldCloseOnEsc","onRequestClose","ScrollLock","dataNavTop","menuData","onSearch","logoLink","desktopLogoUrl","devicesLogoUrl","navTopData","setNavTopData","setShowMenu","showSearch","setshowSearch","fullScreenHeight","setFullScreenHeight","_document","html","_document2","documentElement","newHeight","clientHeight","onLinkHandler","onShowMenuHandler","show","onCloseSearchHandler","cinemaLink","_ref4$sponsor","customSponsorImage","bgUrlDesktop","bgUrlDevice","videoUrlDesktop","videoUrlMobile","_ref4$bgImageAltText","bgImageAltText","_ref4$invert","_ref4$brandingStyle","_ref4$showCopy","showCopy","_ref4$semanticLevel","titleSize","coreLink","scrollHref","_ref$bgImageAltText","info","_image$src","_image$alt","streamLink","Stream","pageCount","baseUrl","pageNumbers","keys","reducedPageNumbers","page","sections","_ref$activeSections","activeSections","_ref$sectionsColor","sectionsColor","_ref$activeSectionsCo","activeSectionsColor","_ref$textColor","textColor","_ref$strengthLabel","strengthLabel","_ref$strengthLabelCol","strengthLabelColor","setSectionDataTestId","_ref$sections","_section","sort","_ref$titleSize","textLinks","aboveTitleTags","belowTitleTags","middleText","bottomText","_ref$asCard","_ref$disableCTA","disableCTA","_ref$disabledCTACopy","disabledCTACopy","timerParams","showExtraContent","setShowExtraContent","isTimerActive","setIsTimerActive","titleLevel","isExtraContentPresent","anchorLink","toLocaleLowerCase","defaultOnClickHandler","matchMedia","matches","secondButtonTextTruncate","textTruncate","textLinkItems","_link$text","textLinkText","restTextLink","_excluded3","endDateText","titleSemanticLevel","primaryButtonText","restPrimaryButton","tertiaryButtonText","restTertiaryButton","attribution","Boolean","radios","radioProps","setRadioProps","checkedIndex","setCheckedIndex","radio","_radio$label","_value","newRadioProps","_ref$horizontalMode","_ref$gap","defaultValue","changeHandler","defaultChecked","introText","fullText","showMoreText","hideText","characterLimit","isFullTextOpen","setIsFullTextOpen","readMoreContent","toggleFullText","nodeString","renderToString","truncateReactNodeString","IntroText","toggleFunction","keyDown","maxHeight","xmlnsXlink","headingLevel","onSelect","_ref3$disabled","_ref3$resetWhenOption","resetWhenOptionsUpdate","_ref3$width","_ref3$height","selectRef","optionsRef","selectedValue","setSelectedValue","isDisabled","_useAccessibility","_useKeyboardAccessibi","shouldHighlightOption","itemToHighlight","setItemToHighlight","clampIndex","reset","_selectRef$current","handleKeyUp","shouldHighlightOptionPrev","preventScrollingWhileNavigating","handleHighlighted","cb","useKeyboardAccessibility","_useVisualAccessibili","isSelectDisabled","addFocusClass","_selectRef$current2","classList","add","removeFocusClass","_selectRef$current3","remove","withClickAwayHandler","toggleFocus","_selectRef$current4","useVisualAccessibility","_selectRef$current5","_selectRef$current6","_selectRef$current7","_selectRef$current8","_selectRef$current9","useAccessibility","closeSelect","closeSelectOnBlur","handleOptionSelection","onKeyUp","_selectedValue$text","_options$","element","_ref2$darkMode","_ref2$isSearchable","isSearchable","selectProps","Select","LoadingIndicator","IndicatorSeparator","classNamePrefix","statusText","_ref$visibility","setIsVisible","isClosing","setIsClosing","handleCloseBanner","transitionEnd","initialValue","_ref$step","_ref$min","_ref$max","minusAction","plusAction","accessibleName","_ref$initialValue","displayValue","setDisplayValue","validInput","clampValue","val","minValue","maxValue","zeroSoloSign","decrement","increment","parseInt","maxLength","endsWith","startsWith","parseSigned","headings","lineColors","rowsPerPage","pagination","setCurrentPage","showScrollButtons","setShowScrollButtons","useLayoutEffect","horizontalScroll","currentRows","visibleRows","totalRows","isArray","totalPages","heading","scope","number","_ref$maxLength","_ref$tabIndex","textareaProps","dataLabel","_ref$mode","mode","_ref$whiteBox","setSelected","isDarkMode","Dark","inputChecked","_ref$sticky","message","primaryButtonProps","secondaryButtonText","secondaryButtonProps","richText","themedUpsellCards","concat"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"harmonic.cjs.production.min.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/types/types.ts","../src/styles/themes.ts","../src/components/atoms/Icons/Icons.style.tsx","../src/components/atoms/Icons/SvgIcons/index.tsx","../src/components/atoms/Icons/SvgIcons/Actions/AddToMyList.svg.tsx","../src/components/atoms/Icons/SvgIcons/Arrows/Arrow.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/AudioDescription.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Back10.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/BalletAndDance.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Basket.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/BasketFull.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/BookTickets.svg.tsx","../src/components/atoms/Icons/SvgIcons/Arrows/CarouselArrow.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/ChooseDates.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Cinema.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Clips.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Clock.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Close.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Confirm.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/CreditCard.svg.tsx","../src/components/atoms/Icons/SvgIcons/Text/Delete.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Detract.svg.tsx","../src/components/atoms/Icons/SvgIcons/Arrows/DropdownArrow.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/EditMyList.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Email.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Expand.svg.tsx","../src/components/atoms/Icons/SvgIcons/12px/Expand.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/ExternalLink.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Facebook.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Favourite.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/FavouriteFull.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Filter.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/FindAScreening.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Forward10.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/FullScreen.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/GridView.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Home.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Info.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Instagram.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/List.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/ListView.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/LiveStream.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Location.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Menu.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Minimise.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Muted.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/OnMyList.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/OperaAndMusic.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Pause.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/PDF.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Phone.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Play.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Print.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Refresh.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Reminder.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Remove.svg.tsx","../src/components/atoms/Icons/SvgIcons/12px/Remove.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Restart.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Search.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Seat.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Secure.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/Settings.svg.tsx","../src/components/atoms/Icons/SvgIcons/Text/Shift.svg.tsx","../src/components/atoms/Icons/SvgIcons/Text/Space.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Standing.svg.tsx","../src/components/atoms/Icons/SvgIcons/Utility/Star.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Subscribe.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Subtitles.svg.tsx","../src/components/atoms/Icons/SvgIcons/12px/Tick.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Tickets.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Tiktok.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Trailer.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Twitter.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/User.svg.tsx","../src/components/atoms/Icons/SvgIcons/Navigation/UserSignedIn.svg.tsx","../src/components/atoms/Icons/SvgIcons/Video/Volume.svg.tsx","../src/components/atoms/Icons/SvgIcons/Actions/Watch.svg.tsx","../src/components/atoms/Icons/SvgIcons/Descriptors/Wheelchair.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/X.svg.tsx","../src/components/atoms/Icons/SvgIcons/Logos/Social/Youtube.svg.tsx","../src/components/atoms/Icons/Icons.tsx","../src/components/atoms/Badge/Badge.style.tsx","../src/types/carousel.ts","../src/types/image.ts","../src/types/tickbox.ts","../src/types/buttonTypes.ts","../src/types/information.ts","../src/components/atoms/Badge/StreamBadge.tsx","../src/components/atoms/Badge/CinemaBadge.tsx","../src/styles/viewports.ts","../src/components/atoms/Buttons/Button.style.tsx","../src/components/atoms/Buttons/ButtonIconWrapper.style.tsx","../src/components/atoms/Buttons/Button.tsx","../src/components/atoms/Buttons/Primary/PrimaryButtonWrapper.style.tsx","../src/components/atoms/Buttons/Primary/PrimaryButton.tsx","../src/components/atoms/Buttons/Secondary/SecondaryButtonWrapper.style.tsx","../src/components/atoms/Buttons/Secondary/SecondaryButton.tsx","../src/components/atoms/Buttons/Tertiary/TertiaryButton.style.tsx","../src/components/atoms/Buttons/Tertiary/TertiaryButton.tsx","../src/styles/zIndexes.ts","../src/components/atoms/Dropdown/Dropdown.style.tsx","../src/components/atoms/TextLogo/TextLogo.tsx","../src/components/atoms/ControlledDropdown/ControlledDropdown.style.tsx","../src/components/atoms/ControlledDropdown/ControlledDropdown.tsx","../src/components/atoms/Grid/Grid.tsx","../src/components/atoms/Grid/GridItem.tsx","../src/components/atoms/ImageAspectRatioWrapper/ImageAspectRatioWrapper.tsx","../src/components/atoms/Progress/Progress.styles.tsx","../src/components/atoms/Progress/Progress.tsx","../src/components/atoms/Radio/Radio.style.tsx","../src/components/atoms/Typography/Typography.style.tsx","../src/components/atoms/Typography/Typography.tsx","../src/components/atoms/Radio/Radio.tsx","../src/components/atoms/Radio2/Radio2.style.tsx","../src/components/atoms/Radio2/Radio2.tsx","../src/components/atoms/RotatorButtons/RotatorButtons.style.tsx","../src/components/atoms/RotatorButtons/RotatorButtons.tsx","../src/components/atoms/SecondaryLogo/SecodaryLogo.style.tsx","../src/components/atoms/SectionSplitter/SectionSplitter.style.tsx","../src/components/atoms/SponsorLogo/SponsorLogo.style.tsx","../src/components/atoms/SponsorLogo/SponsorLogo.tsx","../src/components/atoms/Sponsorship/Sponsorship.style.tsx","../src/components/atoms/Sponsorship/Sponsorship.tsx","../src/components/atoms/Tab/Tab.style.tsx","../src/components/atoms/Tab/Tab.tsx","../src/components/atoms/TabLink/TabLink.style.tsx","../src/components/atoms/TabLink/TabLink.tsx","../src/components/atoms/TextArea/TextArea.style.tsx","../src/components/atoms/TextField/TextField.style.tsx","../src/components/atoms/TextField/TextField.tsx","../src/components/atoms/TextField/TextFieldLegacy.style.tsx","../src/components/atoms/TextLink/TextLink.style.tsx","../src/components/atoms/TextLink/TextLink.tsx","../src/components/atoms/Tickbox/Tickbox.style.tsx","../src/components/atoms/Tickbox2/Tickbox2.style.tsx","../src/components/atoms/Tickbox2/Tickbox2.tsx","../src/components/atoms/Timer/Timer.style.tsx","../src/components/atoms/Timer/Timer.tsx","../src/components/atoms/TypeTags/TypeTags.style.tsx","../src/components/atoms/TypeTags/TypeTags.tsx","../src/components/atoms/VideoControls/VideoControls.style.tsx","../src/components/atoms/VideoControls/VideoControls.tsx","../src/components/atoms/Stepper/Stepper.style.tsx","../src/components/organisms/Navigation/Navigation.style.tsx","../src/components/atoms/Logo/Logo.style.tsx","../src/components/atoms/Logo/Logo.tsx","../src/components/molecules/NavTop/NavTop.style.tsx","../src/components/molecules/Basket/Basket.style.tsx","../src/components/molecules/Basket/helpers.ts","../src/components/molecules/Basket/Basket.tsx","../src/components/molecules/Basket/hooks.tsx","../src/components/atoms/Search/Search.style.tsx","../src/components/atoms/Search/Search.tsx","../src/components/atoms/Dropdown/Dropdown.tsx","../src/components/atoms/Account/Account.tsx","../src/components/molecules/NavTop/NavTop.tsx","../src/components/molecules/Tabs/Tabs.style.tsx","../src/components/molecules/Tabs/Tabs.tsx","../src/components/molecules/SearchBar/SearchBar.style.tsx","../src/components/molecules/SearchBar/SearchBar.tsx","../src/components/organisms/Footer/Footer.style.tsx","../src/components/molecules/PolicyLinks/PolicyLinks.style.tsx","../src/components/molecules/PolicyLinks/PolicyLinks.tsx","../src/components/molecules/ContactNewsletter/ContactNewsletter.style.tsx","../src/components/molecules/ContactNewsletter/ContactNewsletter.tsx","../src/components/organisms/AnchorTabBar/AnchorTabBar.style.tsx","../src/components/organisms/TitleWithCTA/TitleWithCTA.style.tsx","../src/components/molecules/UpsellCard/UpsellCard.style.tsx","../src/components/molecules/UpsellCard/OfferText.tsx","../src/helpers/formatStrings.ts","../src/components/molecules/UpsellCard/UpsellCard.tsx","../src/components/molecules/UpsellCards/UpsellCards.style.tsx","../src/components/molecules/UpsellCards/UpsellCards.tsx","../src/components/organisms/UpsellSection/UpsellSection.style.tsx","../src/components/molecules/Accordion/Accordion.style.tsx","../src/components/molecules/Accordion/Accordion.tsx","../src/components/molecules/Accordions/Accordions.style.tsx","../src/styles/ThemeProvider.tsx","../src/components/molecules/AnnouncementBanner/AnnouncementBanner.style.tsx","../src/components/atoms/Buttons/Auxiliary/AuxiliaryButton.style.tsx","../src/components/atoms/Buttons/Auxiliary/AuxiliaryButton.tsx","../src/components/molecules/Card/Card.style.tsx","../src/helpers/htmlStrings.ts","../src/components/molecules/Card/Card.tsx","../src/components/molecules/Cards/Cards.style.tsx","../src/components/molecules/ContactCard/ContactCard.style.tsx","../src/components/molecules/ContentSummary/ContentSummary.style.tsx","../src/components/molecules/Editorial/Editorial.style.tsx","../src/components/molecules/Information/Information.style.tsx","../src/components/molecules/Information/InfoCta.tsx","../src/components/molecules/PageHeading/PageHeading.style.tsx","../src/components/molecules/PageHeading/PageHeading.tsx","../src/components/molecules/PageHeading/Impact/Impact.style.tsx","../src/components/molecules/PageHeading/Panel/Panel.style.tsx","../src/components/molecules/PageHeading/Stream/Stream.style.tsx","../src/components/molecules/PageHeading/Compact/Compact.style.tsx","../src/components/molecules/PageHeading/Compact/components/CompactHeaderBranding.tsx","../src/helpers/urls.ts","../src/helpers/devices.ts","../src/components/molecules/PageHeading/Compact/Compact.tsx","../src/components/molecules/Pagination/Pagination.style.tsx","../src/components/molecules/Pagination/Pagination.tsx","../src/components/molecules/PeopleListing/PeopleListing.style.tsx","../src/components/molecules/PeopleListing/Person.tsx","../src/components/molecules/PeopleListing/PeopleListing.tsx","../src/components/molecules/PeopleListing/CreditListing/CreditListing.style.tsx","../src/components/molecules/PromoWithTags/PromoWithTags.style.tsx","../src/components/molecules/PromoWithTags/PromoWithTags.tsx","../src/components/molecules/PromoWithTitle/PromoWithTitle.style.tsx","../src/components/molecules/VideoWithControls/VideoWithControls.style.tsx","../src/components/molecules/VideoWithControls/VideoWithControls.tsx","../src/helpers/generateDomElementId.ts","../src/helpers/aspectRatio.ts","../src/components/molecules/PromoWithTitle/PromoChild.tsx","../src/components/molecules/RadioGroup/RadioGroup.style.tsx","../src/components/molecules/RadioGroup2/RadioGroup2.style.tsx","../src/components/molecules/StatusBanner/StatusBanner.style.tsx","../src/components/molecules/SectionTitle/SectionTitle.style.tsx","../src/components/molecules/Select/Select.style.tsx","../src/components/molecules/Select2/Select2.style.tsx","../src/components/molecules/Select2/Select2.tsx","../src/components/molecules/TextOnly/TextOnly.style.tsx","../src/components/molecules/TextOnly/TextOnly.tsx","../src/components/molecules/ImageWithCaption/ImageWithCaption.style.tsx","../src/components/molecules/Quote/Quote.style.tsx","../src/components/molecules/MiniCard/MiniCard.style.tsx","../src/components/molecules/ReadMore/ReadMore.style.tsx","../src/components/molecules/AuxiliaryNav/AuxiliaryNav.styles.tsx","../src/components/molecules/AuxiliaryNav/AuxiliaryNav.tsx","../src/components/molecules/PasswordStrength/PasswordStrength.styles.tsx","../src/components/molecules/Table/Table.style.tsx","../src/components/molecules/Table/components/TableHelpers.tsx","../src/components/molecules/Table/components/TableCell.tsx","../src/components/molecules/Table/components/TableRow.tsx","../src/components/organisms/LiveChat/LiveChat.tsx","../src/components/organisms/StickyBar/StickyBar.style.tsx","../src/components/organisms/ModalWindow/ModalWindow.style.tsx","../src/components/organisms/ModalWindow/ModalWindow.tsx","../src/styles/GlobalStyles.tsx","../src/components/molecules/Accordions/Accordions.tsx","../src/components/organisms/AnchorTabBar/AnchorTabBar.tsx","../src/components/molecules/AnnouncementBanner/AnnouncementBanner.tsx","../src/components/molecules/Cards/Cards.tsx","../src/components/molecules/ContactCard/ContactCard.tsx","../src/components/molecules/ContentSummary/ContentSummary.tsx","../src/components/molecules/PeopleListing/CreditListing/CreditListing.tsx","../src/helpers/arrays.ts","../src/components/molecules/Editorial/Editorial.tsx","../src/components/organisms/Footer/Footer.tsx","../src/components/molecules/ImageWithCaption/ImageWithCaption.tsx","../src/components/molecules/Information/Information.tsx","../src/components/molecules/MiniCard/MiniCard.tsx","../src/components/organisms/Navigation/Navigation.tsx","../src/components/molecules/PageHeading/Cinema/Cinema.tsx","../src/components/molecules/PageHeading/Core/Core.tsx","../src/components/molecules/PageHeading/Impact/Impact.tsx","../src/components/molecules/PageHeading/Panel/Panel.tsx","../src/components/molecules/PageHeading/Stream/Stream.tsx","../src/components/molecules/PasswordStrength/PasswordStrength.tsx","../src/components/molecules/PromoWithTitle/PromoWithTitle.tsx","../src/components/molecules/Quote/Quote.tsx","../src/components/molecules/RadioGroup/RadioGroup.tsx","../src/components/molecules/RadioGroup2/RadioGroup2.tsx","../src/components/molecules/ReadMore/ReadMore.tsx","../src/helpers/keyboards.ts","../src/components/atoms/SecondaryLogo/SecondaryLogo.tsx","../src/components/atoms/SectionSplitter/SectionSplitter.tsx","../src/components/molecules/SectionTitle/SectionTitle.tsx","../src/components/molecules/Select/Select.tsx","../src/components/molecules/Select2Async/Select2Async.tsx","../src/components/molecules/StatusBanner/StatusBanner.tsx","../src/components/atoms/Stepper/Stepper.tsx","../src/components/organisms/StickyBar/StickyBar.tsx","../src/components/molecules/Table/Table.tsx","../src/components/atoms/TextArea/TextArea.tsx","../src/components/atoms/TextField/TextFieldLegacy.tsx","../src/components/atoms/Tickbox/Tickbox.tsx","../src/components/organisms/TitleWithCTA/TitleWithCTA.tsx","../src/components/organisms/UpsellSection/UpsellSection.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ReactNode, AnchorHTMLAttributes, MouseEventHandler, ReactElement } from 'react';\nimport { StyledProps } from 'styled-components';\nimport { IconNameType, DirectionType } from './iconTypes';\nimport { TypographyLevel, TypographyType } from './typography';\n\n// eslint-disable-next-line no-shadow\nexport enum Colors {\n White = 'white',\n Black = 'black',\n DarkGrey = 'darkgrey',\n MidGrey = 'midgrey',\n LightGrey = 'lightgrey',\n Trasparent = 'transparent',\n ErrorState = 'errorstate',\n MediumState = 'mediumstate',\n GoodState = 'goodstate',\n Primary = 'primary',\n Core = 'core',\n Stream = 'stream',\n Cinema = 'cinema',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum ThemeType {\n Core = 'core',\n Stream = 'stream',\n Cinema = 'cinema',\n Schools = 'schools',\n}\n\nexport interface IThemeProviderProps {\n /**\n * The theme to use for the child elements\n */\n theme: ThemeType;\n children: ReactNode;\n}\n\nexport interface ILogoProps {\n /**\n * The id value\n */\n id?: string;\n /**\n * The data-roh value\n */\n dataRoh?: string;\n /**\n * The link of the logo\n */\n urlLink?: string;\n /**\n * The image for desktop\n */\n desktopImage: string;\n /**\n * The image for other devices\n */\n devicesImage?: string;\n /**\n * The title of the image\n */\n title?: string;\n /**\n * The title of the image\n */\n altText?: string;\n}\n\nexport interface IOptionItem {\n /**\n * The text of the option\n */\n option: string;\n /**\n * The link of the option\n */\n optionLink: string;\n}\n\nexport interface ITabProps {\n children?: ReactNode;\n /**\n * The value of the title\n */\n title?: string;\n /**\n * The link of the title\n */\n titleLink?: string;\n /**\n * To keep selected the title of the Tab\n */\n selected?: boolean;\n /**\n * The name of the icon\n */\n iconName?: IconNameType;\n /**\n * If options are available in mobile devices\n */\n withOptionsInMobile?: boolean;\n /**\n * The orientation of the icon\n */\n withIcon?: 'right' | 'left' | 'none';\n /**\n * If show text in mobile devices\n */\n withTextInMobile?: boolean;\n /**\n * Function to be called when click\n */\n onClick?: (e: string) => void;\n /**\n * Function to be called when focus event is fired\n */\n onFocus?: () => void;\n /**\n * Function to be called when it is needed to back to initial state\n */\n onReset?: () => void;\n /**\n * The primary color\n */\n colorPrimary?: string;\n}\n\nexport interface IDropdownProps {\n /**\n * The value of the title\n */\n title?: string;\n /**\n * The orientation of the icon\n */\n withIcon?: 'right' | 'left' | 'none';\n /**\n * The link of the title\n */\n titleLink?: string;\n /**\n * To keep selected the title of the Dropdown\n */\n selected?: boolean;\n /**\n * An Array with the options in the Dropdown\n */\n options?: IOptionItem[];\n /**\n * The name of the icon\n */\n iconName?: IconNameType;\n /**\n * Set if the behaviour of Dropdown change in mobile devices\n */\n isMobileBehaviour?: boolean;\n /**\n * If options are available in mobile devices\n */\n withOptionsInMobile?: boolean;\n /**\n * Function to be called when click\n */\n onChange?: (e: string) => void;\n /**\n * The primary color\n */\n colorPrimary?: string;\n}\n\nexport interface ITabsProps {\n /**\n * An Array with Dropdown components\n */\n items?: IDropdownProps[];\n /**\n * Function to be called when click on showmenu\n */\n onShowMenu?: (e: boolean) => void;\n /**\n * Show menu in mobile devices\n */\n showMenu?: boolean;\n /**\n * Function to be called when click\n */\n onChange?: (e: string) => void;\n /**\n * The primary color\n */\n colorPrimary?: string;\n}\n\nexport interface IDropdowItemProps extends StyledProps<AnchorHTMLAttributes<HTMLAnchorElement>> {\n /**\n * The primary color\n */\n colorPrimary?: string;\n}\n\nexport interface IControlledDropdownProps {\n /**\n * Text displayed as heading in the dropdown\n */\n text: string;\n /**\n * options to display\n */\n options?: IOptionItem[];\n /**\n * Color for active status (default primary)\n */\n activeColor?: string;\n /**\n * Set if the dropdown is active or not\n */\n active?: boolean;\n /**\n * Callback called when header is clicked\n */\n onClick: () => void;\n /**\n * Callback called when an option is clicked\n */\n onOptionClick?: (s: string) => void;\n /**\n * Mouse enter event handler\n */\n onMouseEnter?: () => void;\n /**\n * Mouse leave event handler\n */\n onMouseLeave?: () => void;\n /**\n * Callback called to reset dropdown behaviour\n */\n onReset?: () => void;\n /**\n * Callback called when main link or option are focused\n */\n onFocus?: () => void;\n /**\n * Callback called when main link or last option lose focus\n */\n onBlur?: () => void;\n}\n\nexport interface IControlledDropdownHeaderProps extends StyledProps<any> {\n /**\n * Color for active status (default primary)\n */\n activeColor: string;\n /**\n * Set if the dropdown is active or not\n */\n active: boolean;\n}\n\nexport type ListingPerson = {\n /**\n * Person name\n */\n name: string;\n /**\n * Link to person profile\n */\n link?: string;\n /**\n * String separator\n */\n headshot?: string;\n /**\n * Headshot image url\n */\n separator?: string;\n /**\n * Use headshot or not\n */\n useHeadshot: boolean;\n /**\n * Replacement text\n */\n replacement?: string;\n};\n\nexport type ListingRole = {\n /**\n * Role name\n */\n name: string;\n /**\n * List of people in the role\n */\n people: ListingPerson[];\n /**\n * Data roh param\n */\n dataROH?: string;\n};\n\nexport interface IPeopleListing {\n /**\n * List of roles to be displayed\n */\n roles: ListingRole[];\n}\n\nexport interface IPagination {\n /**\n * The total number of pages\n */\n pageCount: 10;\n /**\n * The current page\n */\n currentPage: 1;\n /**\n * The url to base page links on\n */\n baseUrl: '/';\n}\n\nexport interface INodeProps {\n /**\n * The current object of Node\n */\n current: any;\n}\n\nexport interface IGridItemProps extends StyledProps<any> {\n /**\n * The column in which to place the child elements\n */\n columnStartDesktop: number;\n /**\n * The number of columns over which the child elements will span\n */\n columnSpanDesktop?: number;\n /**\n * The column in which to place the child elements in tablet devices\n */\n columnStartDevice: number;\n /**\n * The number of columns over which the child elements will span in tablet devices\n */\n columnSpanDevice?: number;\n /**\n * The column in which to place the child elements in small mobile devices\n */\n columnStartSmallDevice?: number;\n /**\n * The number of columns over which the child elements will span in small mobile devices\n */\n columnSpanSmallDevice?: number;\n}\n\nexport interface ISponsorLogoProps {\n /**\n * Color for the logo\n */\n colorLogo?: string;\n /**\n * Color for the background of the logo\n */\n colorBackground?: string;\n}\n\nexport interface ISponsorshipProps {\n /**\n * Source URL for Sponsorship IFRAME.\n */\n src?: string;\n /**\n * Alt Text for image.\n */\n altText?: string;\n /**\n * Used for Analytics.\n */\n dataRoh?: string;\n /**\n * Used for Accessibility.\n */\n title?: string;\n /**\n * Used to determine that there is custom data for Sponsorship\n */\n isCustomImage?: boolean;\n}\n\nexport interface ITextLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n children: ReactNode;\n /**\n * Function to be called when a button is clicked\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n /**\n * Name of the icon to be used in the button\n */\n iconName?: IconNameType;\n /**\n * Direction of the icon used in the button\n */\n iconDirection?: DirectionType;\n /**\n * Color of text and icon\n */\n color?: Colors;\n}\n\nexport interface ISectionSplitterProps {\n /**\n * Set the width of the Section to full\n */\n fullWidth?: boolean;\n}\nexport interface ITypeTagsProps {\n /**\n * List of Type Tags to display.\n */\n list: string[];\n}\n\nexport interface ITextOnlyProps {\n /**\n * Text placed in the TextOnly component\n */\n text: string;\n /**\n * Set columnstart in Desktop\n */\n columnStartDesktop?: number;\n /**\n * Set columnSpan in Desktop\n */\n columnSpanDesktop?: number;\n /**\n * Set columnstart in Device\n */\n columnStartDevice?: number;\n /**\n * Set columnSpam in Device\n */\n columnSpanDevice?: number;\n}\n\nexport type SectionTitleSize = 'small' | 'large';\n\nexport interface ISectionTitleProps {\n /**\n * Title to display.\n */\n title: string;\n /**\n * Size of title to display - by default small, which renders as an H2 (and large is an H1).\n */\n size?: SectionTitleSize;\n /**\n * Optional description that can be rendered below the title.\n */\n description?: string;\n /**\n * Semantic level of the title.\n */\n semanticLevel?: TypographyLevel;\n}\n\nexport interface ILogosProps {\n /**\n * Color used to fill logos.\n */\n fillColor?: Colors.White | Colors.Black;\n /**\n * Text aligned logo variants.\n */\n align?: 'left' | 'center';\n /**\n * Fill color inversion.\n */\n invert?: boolean;\n}\nexport interface ILogosStyledProps extends StyledProps<any> {\n /**\n * Color used to fill logos.\n */\n fillColor?: Colors.White | Colors.Black;\n}\nexport interface IAccordionProps {\n /**\n * Title to display.\n */\n title?: string;\n /**\n * The component to be wrapped into the accordion\n */\n children?: ReactNode;\n /**\n * Components wrapped into the accordion that are always visible\n */\n visibleStandfirst?: ReactNode;\n /**\n * Set if accordions are stacked\n */\n showLine?: boolean;\n /**\n * Set init open\n */\n initOpen?: boolean;\n /**\n * Set content type - header or subtitle\n */\n contentType?: TypographyType;\n /**\n * Set display level - aesthetic\n */\n displayLevel?: TypographyLevel;\n /**\n * Set semantic level - not to be used for aesthetic\n */\n semanticLevel?: TypographyLevel;\n}\n\nexport interface IAccordionsProps {\n /**\n * Array of Accordion component\n */\n items: IAccordionProps[];\n}\n\nexport interface IAnnouncementBannerProps {\n /**\n * Announcement banner title\n */\n title: string;\n /**\n * Announcement message text\n */\n announcementText: string;\n /**\n * Date and time text\n */\n time: string;\n /**\n * Icon graphic\n */\n icon: 'Info' | 'Clock' | 'Location' | 'Reminder' | 'Star';\n}\n\nexport interface IReadMoreProps {\n /**\n * Read More Component title\n */\n title?: string;\n /**\n * Intro text to be truncated\n */\n introText: ReactNode;\n /**\n * Component to be wrapped in ReadMore comp\n */\n fullText: ReactNode;\n /**\n * Set init open\n */\n initOpen: boolean;\n /**\n * Custom text for link when closed\n */\n showMoreText: string;\n /**\n * Custom text for link when opened\n */\n hideText: string;\n /**\n * Character limit\n */\n characterLimit?: number;\n /**\n * Optional truncation\n */\n truncate?: boolean;\n}\n\nexport interface IStatusBannerProps {\n /**\n * Status banner text\n */\n statusText: string;\n /**\n * Set init visibility\n */\n visibility: boolean;\n}\n\nexport interface IVideoControlsProps {\n /**\n * Video element id\n */\n videoElementId: string;\n /**\n * Id of an element containing both the VideoControls and the video HTML element\n * Used to request fullscreen.\n */\n videoContainerId?: string;\n /**\n * Default muted\n */\n muted: boolean;\n /**\n * Default playing\n */\n autoPlay: boolean;\n /**\n * Hide volume\n */\n soundControl?: boolean;\n /**\n * Hide fullscreen. If false, provide a videoContainerId.\n */\n fullScreenOption?: boolean;\n /**\n * Loops\n */\n loop?: boolean;\n}\n\nexport type IVideoWithControlsSettings = Omit<IVideoControlsProps, 'videoElementId' | 'videoContainerId'>;\n\nexport interface IVideoWithControlsProps {\n /**\n * Video element\n */\n video: ReactElement<HTMLVideoElement>;\n /**\n * Settings for video controls\n */\n settings: IVideoWithControlsSettings;\n}\n\nexport type Image = Pick<HTMLImageElement, 'alt' | 'src'>;\n\n// eslint-disable-next-line no-shadow\nexport enum LinkTarget {\n /**\n * Opens the link in the same frame or tab as the current page.\n */\n Self = '_self',\n /**\n * Opens the link in a new browser tab or window, depending on the browser settings.\n */\n Blank = '_blank',\n}\n","const colors = {\n core: '#C8102E',\n stream: '#1866DC',\n cinema: '#1A1A1A',\n};\n\nconst commonColors = {\n black: '#1A1A1A',\n white: '#FFFFFF',\n darkgrey: '#727272',\n midgrey: '#B2B2B2',\n lightgrey: '#F0F0F0',\n error: '#C8102E',\n medium: '#D79233',\n good: '#4EAA33',\n progress: '#1866DC',\n navigation: '#C8102E',\n lemonChiffon: '#fffbbe',\n lapisLazuli: '#0060a0',\n blue: '#1866DC',\n red: '#C8102E',\n};\n\nexport const fontFamilies = {\n adobeGaramondPro: 'adobe-garamond-pro',\n adobeGaramondProItalics: 'adobe-garamond-pro',\n gothamSSmMedium: '\"Gotham SSm A\",\"Gotham SSm B\",\"Montserrat\",sans-serif',\n gothamSSm: '\"Gotham SSm A\",\"Gotham SSm B\",\"Montserrat\",sans-serif',\n sabonNextLTProRegular: 'Sabon Next LT Pro Regular',\n sabonNextLTProRegularItalics: 'Sabon Next LT Pro Regular Italics',\n sansSerifFallback: 'Montserrat, sans-serif',\n};\n\nconst common = {\n fonts: {\n desktop: {\n sizes: {\n headers: {\n 1: '96px',\n 2: '68px',\n 3: '44px',\n 4: '34px',\n 5: '24px',\n 6: '20px',\n },\n altHeaders: {\n 3: '44px',\n 4: '34px',\n 5: '24px',\n 6: '20px',\n },\n subtitles: {\n 1: '18px',\n 2: '14px',\n },\n titleDescription: '20px',\n body: {\n 1: '19px',\n 2: '16px',\n 3: '14px',\n },\n listing: '19px',\n buttons: '14px',\n overline: {\n 1: '14px',\n 2: '12px',\n 3: '10px',\n 4: '8px',\n },\n navigation: '13px',\n search: '24px',\n },\n letterSpacing: {\n headers: {\n 1: '2px',\n 2: '1px',\n 3: '1px',\n 4: '1px',\n 5: '1px',\n 6: '1px',\n },\n altHeaders: {\n 3: 'normal',\n 4: 'normal',\n 5: 'normal',\n 6: 'normal',\n },\n overline: {\n 1: '1px',\n 2: '1px',\n 3: '1px',\n 4: '1px',\n },\n subtitles: {\n 1: '1px',\n 2: '1px',\n },\n body: {\n 1: 'normal',\n 2: 'normal',\n 3: 'normal',\n },\n navigation: '1px',\n },\n lineHeights: {\n headers: {\n 1: '110px',\n 2: '72px',\n 3: '48px',\n 4: '40px',\n 5: '30px',\n 6: '28px',\n },\n altHeaders: {\n 3: '48px',\n 4: '44px',\n 5: '30px',\n 6: '28px',\n },\n subtitles: {\n 1: '22px',\n 2: '22px',\n },\n titleDescription: '28px',\n body: {\n 1: '26px',\n 2: '22px',\n 3: '20px',\n },\n peopleListing: '24px',\n listing: '36px',\n buttons: '20px',\n overline: {\n 1: '16px',\n 2: '14px',\n 3: '12px',\n 4: '10px',\n },\n navigation: '16px',\n },\n families: {\n headers: fontFamilies.gothamSSmMedium,\n altHeaders: fontFamilies.adobeGaramondPro,\n subtitles: fontFamilies.gothamSSmMedium,\n body: fontFamilies.adobeGaramondPro,\n bodyItalics: fontFamilies.adobeGaramondProItalics,\n listing: fontFamilies.adobeGaramondPro,\n listingItalics: fontFamilies.adobeGaramondProItalics,\n buttons: fontFamilies.gothamSSm,\n overline: fontFamilies.gothamSSmMedium,\n navigation: fontFamilies.gothamSSmMedium,\n peopleListingRole: fontFamilies.gothamSSm,\n search: fontFamilies.adobeGaramondPro,\n },\n weights: {\n headers: {\n 1: '500',\n 2: '500',\n 3: '500',\n 4: '500',\n 5: '500',\n 6: '500',\n },\n altHeaders: {\n 3: 'normal',\n 4: 'normal',\n 5: 'normal',\n 6: 'normal',\n },\n buttons: '400',\n overline: {\n 1: '500',\n 2: '500',\n 3: '500',\n 4: '500',\n },\n body: {\n 1: '400',\n 2: '400',\n 3: '400',\n },\n subtitles: {\n 1: '500',\n 2: '500',\n },\n navigation: '500',\n },\n transforms: {\n headers: 'uppercase',\n altHeaders: 'none',\n overline: 'uppercase',\n subtitles: 'uppercase',\n body: 'none',\n navigation: 'uppercase',\n },\n fontFeatureSettings: {\n headers: \"'tnum' on, 'lnum' on\",\n altHeaders: \"'pnum' on, 'onum' on\",\n overline: \"'tnum' on, 'lnum' on, 'liga' off, 'calt' off\",\n subtitles: \"'tnum' on, 'lnum' on\",\n body: \"'pnum' on, 'onum' on, 'liga' off\",\n navigation: \"'tnum' on, 'lnum' on, 'liga' off, 'calt' off\",\n },\n wordBreak: {\n headers: 'break-word',\n altHeaders: 'break-word',\n overline: 'break-word',\n subtitles: 'break-word',\n body: 'break-word',\n },\n margins: {\n headers: {\n // These margins use the Chrome defaults to enable proper fallbacks when using semantic level -\n // https://www.w3schools.com/cssref/css_default_values.php\n 1: '0.67em 0',\n 2: '0.83em 0',\n 3: '1em 0',\n 4: '1.33em 0',\n 5: '1.67em 0',\n 6: '2.33em 0',\n },\n },\n },\n mobile: {\n sizes: {\n headers: {\n 1: '38px',\n 2: '30px',\n 3: '26px',\n 4: '24px',\n 5: '20px',\n 6: '17px',\n },\n altHeaders: {\n 3: '26px',\n 4: '24px',\n 5: '20px',\n 6: '17px',\n },\n subtitles: {\n 1: '16px',\n 2: '14px',\n },\n titleDescription: '17px',\n body: {\n 1: '17px',\n 2: '12px',\n 3: '11px',\n },\n listing: '16px',\n buttons: '14px',\n overline: {\n 1: '14px',\n 2: '12px',\n 3: '10px',\n 4: '8px',\n },\n navigation: '13px',\n search: '20px',\n },\n letterSpacing: {\n headers: {\n 1: '1px',\n 2: '1px',\n 3: '1px',\n 4: '1px',\n 5: '1px',\n 6: '1px',\n },\n altHeaders: {\n 3: 'normal',\n 4: 'normal',\n 5: 'normal',\n 6: 'normal',\n },\n overline: {\n 1: '1px',\n 2: '1px',\n },\n subtitles: {\n 1: '1px',\n 2: '1px',\n },\n body: {\n 1: 'normal',\n 2: 'normal',\n 3: 'normal',\n },\n navigation: '1px',\n },\n lineHeights: {\n headers: {\n 1: '42px',\n 2: '34px',\n 3: '30px',\n 4: '28px',\n 5: '28px',\n 6: '24px',\n },\n altHeaders: {\n 3: '30px',\n 4: '28px',\n 5: '28px',\n 6: '24px',\n },\n subtitles: {\n 1: '24px',\n 2: '18px',\n },\n titleDescription: '24px',\n body: {\n 1: '24px',\n 2: '18px',\n 3: '16px',\n },\n listing: '34px',\n buttons: '20px',\n overline: {\n 1: '16px',\n 2: '14px',\n },\n navigation: '16px',\n },\n families: {\n headers: fontFamilies.gothamSSm,\n altHeaders: fontFamilies.adobeGaramondPro,\n subtitles: fontFamilies.gothamSSmMedium,\n body: fontFamilies.adobeGaramondPro,\n bodyItalics: fontFamilies.adobeGaramondProItalics,\n listing: fontFamilies.adobeGaramondPro,\n listingItalics: fontFamilies.adobeGaramondProItalics,\n buttons: fontFamilies.gothamSSm,\n overline: fontFamilies.gothamSSmMedium,\n navigation: fontFamilies.gothamSSmMedium,\n search: fontFamilies.adobeGaramondPro,\n },\n weights: {\n headers: {\n 1: '500',\n 2: '500',\n 3: '500',\n 4: '500',\n 5: '500',\n 6: '500',\n },\n altHeaders: {\n 3: 'normal',\n 4: 'normal',\n 5: 'normal',\n 6: 'normal',\n },\n buttons: '400',\n overline: {\n 1: '500',\n 2: '500',\n },\n body: {\n 1: '400',\n 2: '400',\n 3: '400',\n },\n subtitles: {\n 1: '500',\n 2: '500',\n },\n navigation: '500',\n },\n transforms: {\n headers: 'uppercase',\n altHeaders: 'none',\n overline: 'uppercase',\n subtitles: 'uppercase',\n body: 'none',\n navigation: 'uppercase',\n },\n fontFeatureSettings: {\n headers: \"'tnum' on, 'lnum' on\",\n altHeaders: \"'pnum' on, 'onum' on\",\n overline: \"'tnum' on, 'lnum' on, 'liga' off, 'calt' off\",\n subtitles: \"'tnum' on, 'lnum' on\",\n body: \"'pnum' on, 'onum' on, 'liga' off\",\n navigation: \"'tnum' on, 'lnum' on, 'liga' off, 'calt' off\",\n },\n wordBreak: {\n headers: 'break-word',\n altHeaders: 'break-word',\n overline: 'break-word',\n subtitles: 'break-word',\n body: 'break-word',\n },\n },\n tablet: {\n sizes: {\n headers: {\n 6: '17px',\n },\n altHeaders: {\n 4: '24px',\n },\n body: {\n 1: '17px',\n },\n },\n },\n },\n spacing: {\n 1: '4px',\n 2: '8px',\n 3: '12px',\n 4: '16px',\n 5: '20px',\n 6: '24px',\n 7: '28px',\n 8: '32px',\n 9: '36px',\n 10: '40px',\n 12: '48px',\n 15: '60px',\n 18: '72px',\n 20: '80px',\n 30: '120px',\n 35: '140px',\n 40: '160px',\n 45: '180px',\n 50: '200px',\n },\n grid: {\n mobile: {\n margin: '20px',\n outerMargin: '0',\n gap: '12px',\n },\n tablet: {\n margin: '32px',\n outerMargin: '0',\n gap: '20px',\n },\n desktop: {\n margin: '10%',\n outerMargin: '50px',\n gap: '36px',\n },\n },\n buttons: {\n paddingX: '20px',\n paddingY: '14px',\n paddingYIcon: '12px',\n iconWidth: '20px',\n iconHeight: '20px',\n iconMargin: '12px',\n },\n footer: {\n desktop: {\n height: '380px',\n paddingTop: '44px',\n paddingBottom: '0',\n itemsGap: '32px',\n mediaGap: '32px',\n mediaIconWidth: '24px',\n mediaIconHeight: '24px',\n verticalSpacingLarge: '58px',\n verticalSpacingSmall: '16px',\n },\n mobile: {\n height: 'auto',\n paddingTop: '20px',\n paddingBottom: '20px',\n itemsGap: '12px',\n mediaGap: '28px',\n mediaIconWidth: '28px',\n mediaIconHeight: '28px',\n verticalSpacingLarge: '24px',\n verticalSpacingSmall: '24px',\n },\n },\n};\n\nexport const core = {\n ...common,\n colors: {\n ...commonColors,\n ...colors,\n primary: colors.core,\n primaryButton: colors.core,\n secondaryButton: commonColors.white,\n tertiaryButton: 'transparent',\n auxiliaryButton: 'transparent',\n primaryButtonReverseBg: colors.cinema,\n primaryButtonReverse: commonColors.white,\n },\n};\nexport const stream = {\n ...common,\n colors: {\n ...commonColors,\n ...colors,\n primary: colors.stream,\n primaryButton: colors.stream,\n primaryButtonReverseBg: colors.cinema,\n primaryButtonReverse: commonColors.white,\n secondaryButton: commonColors.white,\n tertiaryButton: 'transparent',\n auxiliaryButton: 'transparent',\n },\n};\nexport const cinema = {\n ...common,\n colors: {\n ...commonColors,\n ...colors,\n primary: colors.cinema,\n primaryButton: commonColors.white,\n primaryButtonReverseBg: commonColors.white,\n primaryButtonReverse: colors.cinema,\n secondaryButton: commonColors.white,\n tertiaryButton: 'transparent',\n auxiliaryButton: 'transparent',\n },\n};\n\nexport const schools = {\n ...common,\n colors: {\n ...commonColors,\n ...colors,\n primary: colors.core,\n primaryButton: colors.core,\n primaryButtonReverseBg: colors.cinema,\n primaryButtonReverse: commonColors.white,\n secondaryButton: commonColors.white,\n tertiaryButton: 'transparent',\n auxiliaryButton: 'transparent',\n },\n fonts: {\n ...common.fonts,\n desktop: {\n ...common.fonts.desktop,\n transforms: {\n headers: 'none',\n altHeaders: 'none',\n overline: 'none',\n subtitles: 'none',\n body: 'none',\n navigation: 'uppercase',\n },\n },\n mobile: {\n ...common.fonts.mobile,\n transforms: {\n headers: 'none',\n altHeaders: 'none',\n overline: 'none',\n subtitles: 'none',\n body: 'none',\n navigation: 'uppercase',\n },\n },\n },\n};\n\nexport const themes = { core, stream, cinema, fontFamilies, schools };\n","import styled from 'styled-components';\nimport { core } from '../../../styles/themes';\nimport { IIconStyledProps } from '../../../types/iconTypes';\n\nexport const Directions = {\n left: 'transform: rotate(180deg)',\n right: 'transform: rotate(0deg)',\n up: 'transform: rotate(270deg)',\n down: 'transform: rotate(90deg)',\n reverse: 'transform: scaleX(-1)',\n};\n\nexport const Wrapper = styled.span<IIconStyledProps>`\n display: block;\n\n & svg {\n display: block;\n ${({ direction = 'right' }: IIconStyledProps) => Directions[direction]};\n }\n\n & svg path {\n fill: var(--base-color-${({ color }: IIconStyledProps) => color || 'black'}, ${core.colors.black});\n }\n`;\n","/* 12px */\nimport Expand12px from './12px/Expand.svg';\nimport Remove12px from './12px/Remove.svg';\nimport Tick from './12px/Tick.svg';\n/* Actions */\nimport AddToMyList from './Actions/AddToMyList.svg';\nimport OnMyList from './Actions/OnMyList.svg';\nimport BookTickets from './Actions/BookTickets.svg';\nimport ChooseDates from './Actions/ChooseDates.svg';\nimport EditMyList from './Actions/EditMyList.svg';\nimport Favourite from './Actions/Favourite.svg';\nimport FavouriteFull from './Actions/FavouriteFull.svg';\nimport Filter from './Actions/Filter.svg';\nimport FindAScreening from './Actions/FindAScreening.svg';\nimport Reminder from './Actions/Reminder.svg';\nimport Subscribe from './Actions/Subscribe.svg';\nimport Watch from './Actions/Watch.svg';\n/* Arrows */\nimport Arrow from './Arrows/Arrow.svg';\nimport CarouselArrow from './Arrows/CarouselArrow.svg';\nimport DropdownArrow from './Arrows/DropdownArrow.svg';\n/* Descriptors */\nimport Cinema from './Descriptors/Cinema.svg';\nimport Clock from './Descriptors/Clock.svg';\nimport CreditCard from './Descriptors/CreditCard.svg';\nimport Email from './Descriptors/Email.svg';\nimport Info from './Descriptors/Info.svg';\nimport List from './Descriptors/List.svg';\nimport Location from './Descriptors/Location.svg';\nimport PDF from './Descriptors/PDF.svg';\nimport Phone from './Descriptors/Phone.svg';\nimport Print from './Descriptors/Print.svg';\nimport Seat from './Descriptors/Seat.svg';\nimport Secure from './Descriptors/Secure.svg';\nimport Standing from './Descriptors/Standing.svg';\nimport Tickets from './Descriptors/Tickets.svg';\nimport Wheelchair from './Descriptors/Wheelchair.svg';\n/* Navigation */\nimport BalletAndDance from './Navigation/BalletAndDance.svg';\nimport Basket from './Navigation/Basket.svg';\nimport BasketFull from './Navigation/BasketFull.svg';\nimport Home from './Navigation/Home.svg';\nimport LiveStream from './Navigation/LiveStream.svg';\nimport Menu from './Navigation/Menu.svg';\nimport OperaAndMusic from './Navigation/OperaAndMusic.svg';\nimport Search from './Navigation/Search.svg';\nimport Settings from './Navigation/Settings.svg';\nimport User from './Navigation/User.svg';\nimport UserSignedIn from './Navigation/UserSignedIn.svg';\n/* Social */\nimport Facebook from './Logos/Social/Facebook.svg';\nimport Instagram from './Logos/Social/Instagram.svg';\nimport Tiktok from './Logos/Social/Tiktok.svg';\nimport Twitter from './Logos/Social/Twitter.svg';\nimport X from './Logos/Social/X.svg';\nimport Youtube from './Logos/Social/Youtube.svg';\n/* Text */\nimport Delete from './Text/Delete.svg';\nimport Shift from './Text/Shift.svg';\nimport Space from './Text/Space.svg';\n/* Utility */\nimport Close from './Utility/Close.svg';\nimport Confirm from './Utility/Confirm.svg';\nimport Detract from './Utility/Detract.svg';\nimport Expand from './Utility/Expand.svg';\nimport ExternalLink from './Utility/ExternalLink.svg';\nimport GridView from './Utility/GridView.svg';\nimport ListView from './Utility/ListView.svg';\nimport Refresh from './Utility/Refresh.svg';\nimport Remove from './Utility/Remove.svg';\nimport Star from './Utility/Star.svg';\n/* Video */\nimport AudioDescription from './Video/AudioDescription.svg';\nimport Back10 from './Video/Back10.svg';\nimport Clips from './Video/Clips.svg';\nimport Forward10 from './Video/Forward10.svg';\nimport FullScreen from './Video/FullScreen.svg';\nimport Minimise from './Video/Minimise.svg';\nimport Muted from './Video/Muted.svg';\nimport Pause from './Video/Pause.svg';\nimport Play from './Video/Play.svg';\nimport Restart from './Video/Restart.svg';\nimport Subtitles from './Video/Subtitles.svg';\nimport Trailer from './Video/Trailer.svg';\nimport Volume from './Video/Volume.svg';\n\nexport const IconLibrary = {\n AddToMyList,\n Arrow,\n AudioDescription,\n Back10,\n BalletAndDance,\n Basket,\n BasketFull,\n BookTickets,\n CarouselArrow,\n ChooseDates,\n Cinema,\n Clips,\n Clock,\n Close,\n Confirm,\n CreditCard,\n Delete,\n Detract,\n DropdownArrow,\n EditMyList,\n Email,\n Expand,\n Expand12px,\n ExternalLink,\n Facebook,\n Favourite,\n FavouriteFull,\n Filter,\n FindAScreening,\n Forward10,\n FullScreen,\n GridView,\n Home,\n Info,\n Instagram,\n List,\n ListView,\n LiveStream,\n Location,\n Menu,\n Minimise,\n Muted,\n OnMyList,\n OperaAndMusic,\n Pause,\n PDF,\n Phone,\n Play,\n Print,\n Refresh,\n Reminder,\n Remove,\n Remove12px,\n Restart,\n Search,\n Seat,\n Secure,\n Settings,\n Shift,\n Space,\n Standing,\n Star,\n Subscribe,\n Subtitles,\n Tick,\n Tickets,\n Tiktok,\n Trailer,\n Twitter,\n User,\n UserSignedIn,\n Volume,\n Watch,\n Wheelchair,\n X,\n Youtube,\n};\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 3H3V4H21V3Z\" fill={color} />\n <path d=\"M21 6.5H3V7.5H21V6.5Z\" fill={color} />\n <path d=\"M21 10H3V11H21V10Z\" fill={color} />\n <path d=\"M14.5 13.5H3V14.5H14.5V13.5Z\" fill={color} />\n <path d=\"M12 17H3V18H12V17Z\" fill={color} />\n <path d=\"M18.1 14H17.1V16.9H14V17.9H17.1V21H18.1V17.9H21V16.9H18.1V14Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M3 12.6001H19L12.9 18.7001L13.6 19.4001L21 12.0001L13.6 4.6001L12.9 5.3001L19.2 11.6001H3V12.6001Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 5V19H3V5H21ZM22 4H2V20H22V4Z\" fill={color} />\n <path\n d=\"M8.17938 9H9.33938L11.8994 15H10.5894L9.99937 13.64H7.44937L6.88937 15H5.60938L8.17938 9ZM9.57937 12.53L8.73937 10.53L7.89937 12.53H9.57937Z\"\n fill={color}\n />\n <path\n d=\"M12.9199 8.99994H15.2199C15.628 8.97678 16.0364 9.03723 16.4202 9.17759C16.8041 9.31795 17.1552 9.53526 17.452 9.81618C17.7489 10.0971 17.9852 10.4357 18.1464 10.8112C18.3077 11.1867 18.3906 11.5913 18.3899 11.9999C18.3906 12.4086 18.3077 12.8131 18.1464 13.1887C17.9852 13.5642 17.7489 13.9028 17.452 14.1837C17.1552 14.4646 16.8041 14.6819 16.4202 14.8223C16.0364 14.9626 15.628 15.0231 15.2199 14.9999H12.9199V8.99994ZM14.1799 10.1399V13.8199H15.1799C15.4276 13.8417 15.6771 13.8101 15.9115 13.7273C16.1459 13.6445 16.3599 13.5124 16.539 13.34C16.7181 13.1675 16.8582 12.9587 16.9497 12.7275C17.0413 12.4964 17.0823 12.2483 17.0699 11.9999C17.0814 11.7544 17.0414 11.5092 16.9523 11.28C16.8633 11.0509 16.7273 10.843 16.553 10.6697C16.3787 10.4963 16.17 10.3614 15.9404 10.2736C15.7108 10.1858 15.4654 10.1471 15.2199 10.1599L14.1799 10.1399Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18.1992 6.1C14.9992 2.9 9.89922 2.7 6.49922 5.5L6.69922 3H5.69922L5.39922 7.1L9.49922 7.4L9.59922 6.4L7.09922 6.2C10.0992 3.7 14.5992 3.9 17.3992 6.7C20.3992 9.7 20.3992 14.6 17.3992 17.6C14.3992 20.6 9.49922 20.6 6.49922 17.6C4.99922 16.1 4.19922 14.2 4.19922 12.1H3.19922C3.19922 14.4 4.09922 16.6 5.79922 18.3C7.49922 20.1 9.79922 21 11.9992 21C14.1992 21 16.4992 20.1 18.1992 18.4C21.5992 15 21.5992 9.5 18.1992 6.1Z\"\n fill={color}\n />\n <path d=\"M8.8 10.3L7.8 10.6L7.5 9.5L9.2 9H10.1V14.9H8.8V10.3Z\" fill={color} />\n <path\n d=\"M11.3008 12C11.3008 10.3 12.4008 9 13.9008 9C15.4008 9 16.5008 10.3 16.5008 12C16.5008 13.7 15.5008 15 13.9008 15C12.3008 15 11.3008 13.7 11.3008 12ZM15.2008 12C15.2008 10.9 14.7008 10.1 13.9008 10.1C13.1008 10.1 12.6008 10.9 12.6008 12C12.6008 13.1 13.1008 13.9 13.9008 13.9C14.7008 13.9 15.2008 13.1 15.2008 12Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20 10.8099C20 10.4099 20 10.0099 19.91 9.61995C19.8296 8.78684 19.7028 7.95889 19.53 7.13995C19.3725 6.36611 19.1722 5.6016 18.93 4.84995C18.83 4.52995 18.72 4.21995 18.61 3.90995L18.19 2.84995C18.12 2.69995 18.06 2.54995 18 2.39995C17.9472 2.27991 17.8602 2.17802 17.75 2.10691C17.6398 2.03581 17.5112 1.99861 17.38 1.99995H10.6C10.4803 1.99361 10.3611 2.02001 10.2552 2.0763C10.1494 2.13259 10.0609 2.21665 9.99918 2.31946C9.9375 2.42226 9.90499 2.53992 9.90513 2.65981C9.90527 2.7797 9.93807 2.89729 10 2.99995L10.61 3.99995C9.02093 4.16117 7.53678 4.8679 6.41 5.99995L3 9.35994L3.72 10.0699L7.16 6.66995C7.75257 6.09557 8.45725 5.64961 9.23 5.35995C8.49778 6.12058 7.95332 7.04171 7.64 8.04995L6.2 12.6399L7.2 12.9299L8.61 8.33995C9.04114 6.96737 9.97284 5.8072 11.22 5.08995C11.69 6.02959 12.091 7.00215 12.42 7.99995C11.9519 8.75685 11.7059 9.63002 11.71 10.5199C11.7119 11.022 11.7895 11.521 11.94 11.9999C12.1174 12.5578 12.3991 13.077 12.77 13.5299C12.8542 13.606 12.9312 13.6897 13 13.7799C13.3354 14.2018 13.5249 14.7212 13.54 15.2599C13.54 15.3699 13.54 15.4799 13.54 15.5899C13.5242 16.3823 13.4675 17.1734 13.37 17.9599C13.2272 18.9861 13.0168 20.0016 12.74 20.9999V20.9999C12.7011 21.1094 12.6881 21.2264 12.7021 21.3417C12.716 21.4571 12.7566 21.5676 12.8206 21.6645C12.8846 21.7615 12.9703 21.8423 13.0708 21.9005C13.1714 21.9587 13.284 21.9927 13.4 21.9999H16.91C17.1788 21.9964 17.4405 21.9126 17.6614 21.7594C17.8823 21.6062 18.0524 21.3905 18.15 21.1399C19.099 18.8653 19.6861 16.4562 19.89 13.9999C19.89 13.7699 19.94 13.5499 19.96 13.3099C19.98 13.0699 19.96 13.1099 19.96 13.0099C19.96 12.6499 19.96 12.2899 19.96 11.9299C19.96 11.5699 20 11.1899 20 10.8099ZM11.61 2.99995H17C17.0499 3.00059 17.0985 3.01618 17.1395 3.0447C17.1805 3.07322 17.212 3.11336 17.23 3.15995C17.34 3.41995 17.44 3.69995 17.55 3.96995H11.7L11.39 3.36995C11.3691 3.33182 11.3586 3.28892 11.3594 3.24547C11.3601 3.20202 11.3722 3.15953 11.3944 3.12218C11.4166 3.08482 11.4482 3.05391 11.486 3.03247C11.5238 3.01104 11.5665 2.99983 11.61 2.99995ZM12.23 4.99995H17.93C17.93 5.13995 18.02 5.27995 18.07 5.41995L17.25 6.31995L15.73 7.99995H15.65L13.08 6.99995C12.83 6.29995 12.54 5.62995 12.23 4.99995V4.99995ZM19 13.8999C18.808 16.2022 18.2545 18.4599 17.36 20.5899C17.3111 20.7095 17.2282 20.8121 17.1215 20.885C17.0149 20.9578 16.8892 20.9978 16.76 20.9999H13.86C13.8411 20.9995 13.8225 20.9945 13.8059 20.9855C13.7892 20.9764 13.775 20.9636 13.7642 20.948C13.7535 20.9324 13.7466 20.9144 13.7442 20.8957C13.7417 20.8769 13.7437 20.8578 13.75 20.8399C14.1769 19.104 14.415 17.327 14.46 15.5399C14.46 15.4699 14.46 14.9099 14.46 14.9099C14.3722 14.1233 14.0196 13.3898 13.46 12.8299V12.8299C12.9343 12.1788 12.6483 11.3668 12.65 10.5299C12.6562 10.1426 12.7203 9.75836 12.84 9.38995C12.9771 8.96486 13.1906 8.56836 13.47 8.21995L15.59 8.99995C15.6034 10.0554 15.9365 11.082 16.5453 11.9443C17.154 12.8066 18.0099 13.464 19 13.8299V13.8999ZM19 12.8099C18.2319 12.4636 17.5815 11.9007 17.1285 11.1902C16.6756 10.4797 16.4398 9.65248 16.45 8.80995C16.445 8.72001 16.445 8.62988 16.45 8.53995L18.33 6.53995C18.43 6.92995 18.53 7.32995 18.61 7.72995C18.9028 9.13498 19.0602 10.5649 19.08 11.9999C19.08 12.2499 19.06 12.5299 19 12.8099Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M16.0996 8V7C15.9996 4.8 14.1996 3 11.9996 3C9.69961 3 7.89961 4.8 7.89961 7V8H3.09961L5.19961 18.8C5.39961 20.1 6.49961 21 7.79961 21H16.1996C17.4996 21 18.5996 20.1 18.7996 18.8L20.8996 8H16.0996ZM8.89961 7C8.89961 5.4 10.2996 4 11.9996 4C13.5996 4 15.0996 5.4 15.0996 7V8H8.89961V7ZM17.8996 18.6C17.6996 19.4 16.9996 20 16.1996 20H7.79961C6.99961 20 6.29961 19.4 6.19961 18.6L4.29961 9H7.89961H16.0996H19.6996L17.8996 18.6Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M16.0996 8V7C15.9996 4.8 14.1996 3 11.9996 3C9.69961 3 7.89961 4.8 7.89961 7V8H3.09961L5.19961 18.8C5.39961 20.1 6.49961 21 7.79961 21H16.1996C17.4996 21 18.5996 20.1 18.7996 18.8L20.8996 8H16.0996ZM8.89961 7C8.89961 5.4 10.2996 4 11.9996 4C13.5996 4 15.0996 5.4 15.0996 7V8H8.89961V7Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M7 2H6V5H7V2Z\" fill={color} />\n <path d=\"M4 8V9L20 9V8L4 8Z\" fill={color} />\n <path d=\"M18 2H17V5H18V2Z\" fill={color} />\n <path d=\"M14.3008 2H13.3008V5H14.3008V2Z\" fill={color} />\n <path d=\"M15.3008 8H14.3008V20H15.3008V8Z\" fill={color} />\n <path d=\"M9.69922 8H8.69922V20H9.69922V8Z\" fill={color} />\n <path d=\"M10.6992 2H9.69922V5H10.6992V2Z\" fill={color} />\n <path d=\"M21 17V16L3 16V17L21 17Z\" fill={color} />\n <path d=\"M21 13V12L3 12V13L21 13Z\" fill={color} />\n <path\n d=\"M20 4V19C20 19.6 19.6 20 19 20H5C4.4 20 4 19.6 4 19V4H20ZM21 3H3V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V3Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M13.6 4.24658L21.3536 12.0001L13.6 19.7537L12.5464 18.7001L18.3964 12.8501H2.75V11.3501H18.5964L12.5464 5.30014L13.6 4.24658Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20.9 9L19 10.9V5H15.5V4H14.5V5H12V4H11V5H8.5V4H7.5V5H4V18C4 19.1 4.9 20 6 20H17C18.1 20 19 19.1 19 18V15.1L23 11.1L20.9 9ZM17.5 12.3H14.3V10H18V11.9L17.5 12.3ZM14.6 15.7H14.3V13.4H16.5L14.7 15.2L14.6 15.7ZM8.7 19H6C5.4 19 5 18.6 5 18V16.7H8.7V19ZM8.7 15.7H5V13.4H8.7V15.7ZM8.7 12.3H5V10H8.7V12.3ZM5 9V6H7.5V7H8.5V6H11V7H12V6H14.5V7H15.5V6H18V9H5ZM13.3 19H9.7V16.7H13.4V19H13.3ZM13.3 15.7H9.7V13.4H13.4V15.7H13.3ZM13.3 12.3H9.7V10H13.4V12.3H13.3ZM18 16.7V18C18 18.6 17.6 19 17 19H14.3V18L16.9 17.2L17.5 16.6H18V16.7ZM19 13.7L18 14.7L17 15.7L16.3 16.4L15.3 16.7L15.6 15.7L17.9 13.4L18.9 12.4L19 12.3L19.7 13L19 13.7ZM19.8 11.5L20.9 10.4L21.6 11.1L20.5 12.2L19.8 11.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C9.7381 2.00427 7.54447 2.77523 5.77725 4.18702C4.01004 5.59881 2.77365 7.56802 2.26996 9.77313C1.76627 11.9782 2.02503 14.289 3.00399 16.328C3.98295 18.3671 5.62429 20.0141 7.66 21H2V22H12C14.6522 22 17.1957 20.9464 19.0711 19.0711C20.9464 17.1957 22 14.6522 22 12C22 9.34784 20.9464 6.8043 19.0711 4.92893C17.1957 3.05357 14.6522 2 12 2V2ZM12 21C10.22 21 8.47991 20.4722 6.99987 19.4832C5.51983 18.4943 4.36627 17.0887 3.68508 15.4442C3.0039 13.7996 2.82567 11.99 3.17293 10.2442C3.5202 8.49836 4.37737 6.89471 5.63604 5.63604C6.89471 4.37737 8.49836 3.5202 10.2442 3.17293C11.99 2.82567 13.7996 3.0039 15.4442 3.68508C17.0887 4.36627 18.4943 5.51983 19.4832 6.99987C20.4722 8.47991 21 10.22 21 12C21 14.3869 20.0518 16.6761 18.364 18.364C16.6761 20.0518 14.3869 21 12 21V21Z\"\n fill={color}\n />\n <path\n d=\"M8.10954 13.3902C7.78094 13.389 7.45536 13.4529 7.15157 13.5782C6.84779 13.7035 6.57181 13.8877 6.33954 14.1202C5.87419 14.5917 5.61328 15.2276 5.61328 15.8902C5.61328 16.5527 5.87419 17.1886 6.33954 17.6602C6.80986 18.1279 7.44622 18.3905 8.10954 18.3905C8.77287 18.3905 9.40922 18.1279 9.87954 17.6602C10.3449 17.1886 10.6058 16.5527 10.6058 15.8902C10.6058 15.2276 10.3449 14.5917 9.87954 14.1202C9.64728 13.8877 9.3713 13.7035 9.06751 13.5782C8.76373 13.4529 8.43815 13.389 8.10954 13.3902V13.3902ZM9.16954 17.0002C8.92399 17.2454 8.60099 17.3979 8.25559 17.4317C7.91019 17.4655 7.56376 17.3785 7.27533 17.1855C6.9869 16.9925 6.77432 16.7054 6.67382 16.3732C6.57332 16.041 6.5911 15.6843 6.72416 15.3638C6.85721 15.0432 7.09729 14.7788 7.40348 14.6154C7.70968 14.452 8.06305 14.3999 8.40338 14.4679C8.7437 14.5359 9.04993 14.7198 9.26987 14.9882C9.4898 15.2567 9.60985 15.5931 9.60954 15.9402C9.60919 16.3378 9.45093 16.7191 9.16954 17.0002Z\"\n fill={color}\n />\n <path\n d=\"M15.8908 10.6102C16.2194 10.6113 16.545 10.5474 16.8488 10.4221C17.1525 10.2968 17.4285 10.1127 17.6608 9.8802C18.1261 9.40861 18.3871 8.77273 18.3871 8.1102C18.3871 7.44767 18.1261 6.81179 17.6608 6.3402C17.1905 5.87244 16.5541 5.60986 15.8908 5.60986C15.2275 5.60986 14.5911 5.87244 14.1208 6.3402C13.6554 6.81179 13.3945 7.44767 13.3945 8.1102C13.3945 8.77273 13.6554 9.40861 14.1208 9.8802C14.3531 10.1127 14.629 10.2968 14.9328 10.4221C15.2366 10.5474 15.5622 10.6113 15.8908 10.6102V10.6102ZM14.8308 7.0502C15.0763 6.80495 15.3993 6.65244 15.7447 6.61865C16.0901 6.58486 16.4366 6.67188 16.725 6.86489C17.0134 7.0579 17.226 7.34495 17.3265 7.67713C17.427 8.0093 17.4092 8.36606 17.2762 8.68659C17.1431 9.00712 16.903 9.2716 16.5969 9.43496C16.2907 9.59831 15.9373 9.65044 15.597 9.58246C15.2566 9.51448 14.9504 9.33059 14.7305 9.06213C14.5105 8.79367 14.3905 8.45725 14.3908 8.1102C14.3911 7.71251 14.5494 7.33124 14.8308 7.0502Z\"\n fill={color}\n />\n <path\n d=\"M8.10954 5.60988C7.78094 5.60874 7.45536 5.67266 7.15157 5.79795C6.84779 5.92324 6.57181 6.10742 6.33954 6.33988C5.87419 6.81147 5.61328 7.44735 5.61328 8.10988C5.61328 8.77241 5.87419 9.40829 6.33954 9.87988C6.80986 10.3476 7.44622 10.6102 8.10954 10.6102C8.77287 10.6102 9.40922 10.3476 9.87954 9.87988C10.3449 9.40829 10.6058 8.77241 10.6058 8.10988C10.6058 7.44735 10.3449 6.81147 9.87954 6.33988C9.64728 6.10742 9.3713 5.92324 9.06751 5.79795C8.76373 5.67266 8.43815 5.60874 8.10954 5.60988V5.60988ZM9.16954 9.16988C8.92399 9.41513 8.60099 9.56764 8.25559 9.60143C7.91019 9.63522 7.56376 9.5482 7.27533 9.35519C6.9869 9.16218 6.77432 8.87513 6.67382 8.54295C6.57332 8.21077 6.5911 7.85402 6.72416 7.53349C6.85721 7.21296 7.09729 6.94848 7.40348 6.78512C7.70968 6.62176 8.06305 6.56963 8.40338 6.63762C8.7437 6.7056 9.04993 6.88949 9.26987 7.15795C9.4898 7.42641 9.60985 7.76283 9.60954 8.10988C9.60919 8.50757 9.45093 8.88884 9.16954 9.16988V9.16988Z\"\n fill={color}\n />\n <path\n d=\"M15.8908 13.3902C15.5622 13.389 15.2366 13.4529 14.9328 13.5782C14.629 13.7035 14.3531 13.8877 14.1208 14.1202C13.6554 14.5917 13.3945 15.2276 13.3945 15.8902C13.3945 16.5527 13.6554 17.1886 14.1208 17.6602C14.5911 18.1279 15.2275 18.3905 15.8908 18.3905C16.5541 18.3905 17.1905 18.1279 17.6608 17.6602C18.1261 17.1886 18.3871 16.5527 18.3871 15.8902C18.3871 15.2276 18.1261 14.5917 17.6608 14.1202C17.4285 13.8877 17.1525 13.7035 16.8488 13.5782C16.545 13.4529 16.2194 13.389 15.8908 13.3902V13.3902ZM17.0008 17.0002C16.7911 17.2101 16.5238 17.3532 16.2328 17.4112C15.9418 17.4692 15.6401 17.4396 15.3659 17.3261C15.0917 17.2127 14.8573 17.0204 14.6924 16.7737C14.5275 16.527 14.4395 16.2369 14.4395 15.9402C14.4395 15.6434 14.5275 15.3533 14.6924 15.1066C14.8573 14.8599 15.0917 14.6676 15.3659 14.5542C15.6401 14.4407 15.9418 14.4111 16.2328 14.4691C16.5238 14.5271 16.7911 14.6702 17.0008 14.8802C17.2817 15.1614 17.4395 15.5426 17.4395 15.9402C17.4395 16.3377 17.2817 16.7189 17.0008 17.0002V17.0002Z\"\n fill={color}\n />\n <path\n d=\"M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M15 11V19H3V11H15ZM16 10H2V20H16V10Z\" fill={color} />\n <path d=\"M22 4H6V5H7H21V15V16H22V4Z\" fill={color} />\n <path d=\"M19 7H4V8H5H18V17V18H19V7Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2ZM12 21C7 21 3 17 3 12C3 7 7 3 12 3C17 3 21 7 21 12C21 17 17 21 12 21Z\"\n fill={color}\n />\n <path\n d=\"M16.5 11.5H12.5V5.5C12.5 5.2 12.3 5 12 5C11.7 5 11.5 5.2 11.5 5.5V12C11.5 12.3 11.7 12.5 12 12.5H16.5C16.8 12.5 17 12.3 17 12C17 11.7 16.8 11.5 16.5 11.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20.8996 3.9001L20.0996 3.1001L11.9996 11.3001L3.89961 3.1001L3.09961 3.9001L11.2996 12.0001L3.09961 20.1001L3.89961 20.9001L11.9996 12.7001L20.0996 20.9001L20.8996 20.1001L12.6996 12.0001L20.8996 3.9001Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M9.09961 21L3 12.5L3.8 11.9L9.09961 19.3L21.1996 3L21.9996 3.6L9.09961 21Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M10.5 14H5.5C5.2 14 5 14.2 5 14.5C5 14.8 5.2 15 5.5 15H10.5C10.8 15 11 14.8 11 14.5C11 14.2 10.8 14 10.5 14Z\"\n fill={color}\n />\n <path\n d=\"M8 16H5.5C5.2 16 5 16.2 5 16.5C5 16.8 5.2 17 5.5 17H8C8.3 17 8.5 16.8 8.5 16.5C8.5 16.2 8.3 16 8 16Z\"\n fill={color}\n />\n <path\n d=\"M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4ZM4 5H20C20.6 5 21 5.4 21 6V8H3V6C3 5.4 3.4 5 4 5ZM21 9V10.5H3V9H21ZM20 19H4C3.4 19 3 18.6 3 18V11.5H21V18C21 18.6 20.6 19 20 19Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M11 4L2 12L11 20H22V4H11ZM21 19H11.4L3.5 12L11.4 5H21V19Z\" fill={color} />\n <path\n d=\"M12.7 15.5L15.5 12.7L18.3 15.5L19 14.8L16.2 12L19 9.2L18.3 8.5L15.5 11.3L12.7 8.5L12 9.2L14.8 12L12 14.8L12.7 15.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 11.5H3V12.5H21V11.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M19.3 8L12 14.7L4.7 8L4 8.7L12 16L20 8.7L19.3 8Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 3H3V4H21V3Z\" fill={color} />\n <path d=\"M21 6.5H3V7.5H21V6.5Z\" fill={color} />\n <path d=\"M21 10H3V11H21V10Z\" fill={color} />\n <path d=\"M13.5 13.5H3V14.5H13.5V13.5Z\" fill={color} />\n <path d=\"M11 17H3V18H11V17Z\" fill={color} />\n <path\n d=\"M17.0004 13.6999L16.0004 14.6999L15.5004 15.1999L14.5004 16.1999L12.7004 17.9999L11.9004 20.9999L15.0004 20.0999L15.6004 19.4999L17.0004 17.9999L21.0004 13.9999L18.9004 11.8999L17.0004 13.6999ZM17.0004 16.4999L16.0004 17.4999L15.0004 18.4999L14.3004 19.1999L13.3004 19.4999L13.6004 18.4999L15.9004 16.1999L16.9004 15.1999L17.0004 15.0999L17.7004 15.7999L17.0004 16.4999ZM18.5004 14.9999L17.8004 14.2999L18.9004 13.1999L19.6004 13.8999L18.5004 14.9999Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4ZM21 18.2L15.3 12.5L21 6.7V18C21 18.1 21 18.2 21 18.2ZM4 5H20C20.4 5 20.6 5.2 20.8 5.5L12 14.3L10.2 12.5L9.5 11.8L3.2 5.5C3.4 5.2 3.6 5 4 5ZM3 18.2C3 18.1 3 18 3 18V6.7L8.8 12.5L3 18.2ZM4 19C3.9 19 3.8 19 3.8 19L9.5 13.3L12 15.8L14.5 13.3L20.2 19C20.1 19 20 19 20 19H4Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M12.5 11.5V3H11.5V11.5H3V12.5H11.5V21H12.5V12.5H21V11.5H12.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-label={ariaLabel}>\n <path d=\"M7.02857 0H5.31429V4.97143H0V6.68571H5.31429V12H7.02857V6.68571H12V4.97143H7.02857V0Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18 18.5C18 19.3 17.3 20 16.5 20H5.5C4.7 20 4 19.3 4 18.5V7.5C4 6.7 4.7 6 5.5 6H10.6V5H5.5C4.1 5 3 6.1 3 7.5V18.5C3 19.9 4.1 21 5.5 21H16.5C17.9 21 19 19.9 19 18.5V13.4H18V18.5Z\"\n fill={color}\n />\n <path d=\"M20.0008 3H14.0008V4H19.3008L10.3008 12.9L11.1008 13.7L20.0008 4.7V10H21.0008V4V3H20.0008Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M13.6598 22H9.70976V12.14H6.99976V8.93H9.69976V6.65C9.70976 3.94 10.8998 2 14.8398 2C15.5622 2.02024 16.2831 2.07698 16.9998 2.17V5.17H15.6098C14.2098 5.17 13.6598 5.59 13.6598 6.77V8.93H16.9298L16.6398 12.14H13.6398L13.6598 22Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 4.69994L13.88 8.51994L14.12 8.98994L14.64 9.06994L18.85 9.67994L15.8 12.6799L15.43 13.0499L15.51 13.5599L16.23 17.7599L12.47 15.7599L12 15.5099L11.53 15.7499L7.77 17.7499L8.49 13.5499L8.57 13.0399L8.2 12.6699L5.15 9.66994L9.36 9.05994L9.88 8.97994L10.12 8.50994L12 4.69994ZM12 2.43994L9.22 8.07994L3 8.99994L7.5 13.3899L6.44 19.5799L12 16.6399L17.56 19.5599L16.5 13.3699L21 8.99994L14.78 8.09994L12 2.43994Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M9.22 8.07994L12 2.43994L14.78 8.09994L21 8.99994L16.5 13.3699L17.56 19.5599L12 16.6399L6.44 19.5799L7.5 13.3899L3 8.99994L9.22 8.07994Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M8.4 5C8.2 4.1 7.4 3.5 6.5 3.5C5.6 3.5 4.8 4.1 4.6 5H2V6H4.6C4.8 6.9 5.6 7.5 6.5 7.5C7.4 7.5 8.2 6.9 8.4 6H22V5H8.4ZM6.5 6.5C5.9 6.5 5.5 6.1 5.5 5.5C5.5 4.9 5.9 4.5 6.5 4.5C7.1 4.5 7.5 4.9 7.5 5.5C7.5 6.1 7.1 6.5 6.5 6.5Z\"\n fill={color}\n />\n <path\n d=\"M17.5 10C16.6 10 15.8 10.6 15.6 11.5H2V12.5H15.6C15.8 13.4 16.6 14 17.5 14C18.4 14 19.2 13.4 19.4 12.5H22V11.5H19.4C19.2 10.6 18.4 10 17.5 10ZM17.5 13C16.9 13 16.5 12.6 16.5 12C16.5 11.4 16.9 11 17.5 11C18.1 11 18.5 11.4 18.5 12C18.5 12.6 18.1 13 17.5 13Z\"\n fill={color}\n />\n <path\n d=\"M6.5 16.5C5.6 16.5 4.8 17.1 4.6 18H2V19H4.6C4.8 19.9 5.6 20.5 6.5 20.5C7.4 20.5 8.2 19.9 8.4 19H22V18H8.4C8.2 17.1 7.4 16.5 6.5 16.5ZM6.5 19.5C5.9 19.5 5.5 19.1 5.5 18.5C5.5 17.9 5.9 17.5 6.5 17.5C7.1 17.5 7.5 17.9 7.5 18.5C7.5 19.1 7.1 19.5 6.5 19.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C9.7381 2.00427 7.54447 2.77523 5.77725 4.18702C4.01004 5.59881 2.77365 7.56802 2.26996 9.77313C1.76627 11.9782 2.02503 14.289 3.00399 16.328C3.98295 18.3671 5.62429 20.0141 7.66 21H2V22H12C14.6522 22 17.1957 20.9464 19.0711 19.0711C20.9464 17.1957 22 14.6522 22 12C22 9.34784 20.9464 6.8043 19.0711 4.92893C17.1957 3.05357 14.6522 2 12 2ZM12 21C10.22 21 8.47991 20.4722 6.99987 19.4832C5.51983 18.4943 4.36627 17.0887 3.68508 15.4442C3.0039 13.7996 2.82567 11.99 3.17293 10.2442C3.5202 8.49836 4.37737 6.89471 5.63604 5.63604C6.89471 4.37737 8.49836 3.5202 10.2442 3.17293C11.99 2.82567 13.7996 3.0039 15.4442 3.68508C17.0887 4.36627 18.4943 5.51983 19.4832 6.99987C20.4722 8.47991 21 10.22 21 12C21 14.3869 20.0518 16.6761 18.364 18.364C16.6761 20.0518 14.3869 21 12 21Z\"\n fill={color}\n />\n <path\n d=\"M8.10954 13.3902C7.78094 13.389 7.45536 13.4529 7.15157 13.5782C6.84779 13.7035 6.57181 13.8877 6.33954 14.1202C5.87419 14.5917 5.61328 15.2276 5.61328 15.8902C5.61328 16.5527 5.87419 17.1886 6.33954 17.6602C6.80986 18.1279 7.44622 18.3905 8.10954 18.3905C8.77287 18.3905 9.40922 18.1279 9.87954 17.6602C10.3449 17.1886 10.6058 16.5527 10.6058 15.8902C10.6058 15.2276 10.3449 14.5917 9.87954 14.1202C9.64728 13.8877 9.37129 13.7035 9.06751 13.5782C8.76373 13.4529 8.43815 13.389 8.10954 13.3902ZM9.16954 17.0002C8.92399 17.2454 8.60099 17.3979 8.25559 17.4317C7.91019 17.4655 7.56376 17.3785 7.27533 17.1855C6.9869 16.9925 6.77432 16.7054 6.67382 16.3732C6.57332 16.041 6.5911 15.6843 6.72416 15.3638C6.85721 15.0432 7.09729 14.7788 7.40348 14.6154C7.70968 14.452 8.06305 14.3999 8.40338 14.4679C8.7437 14.5359 9.04993 14.7198 9.26987 14.9882C9.4898 15.2567 9.60985 15.5931 9.60954 15.9402C9.60919 16.3378 9.45093 16.7191 9.16954 17.0002Z\"\n fill={color}\n />\n <path\n d=\"M15.8908 10.6102C16.2194 10.6113 16.545 10.5474 16.8488 10.4221C17.1525 10.2968 17.4285 10.1127 17.6608 9.8802C18.1261 9.40861 18.3871 8.77273 18.3871 8.1102C18.3871 7.44767 18.1261 6.81179 17.6608 6.3402C17.1905 5.87244 16.5541 5.60986 15.8908 5.60986C15.2275 5.60986 14.5911 5.87244 14.1208 6.3402C13.6554 6.81179 13.3945 7.44767 13.3945 8.1102C13.3945 8.77273 13.6554 9.40861 14.1208 9.8802C14.3531 10.1127 14.629 10.2968 14.9328 10.4221C15.2366 10.5474 15.5622 10.6113 15.8908 10.6102ZM14.8308 7.0502C15.0763 6.80495 15.3993 6.65244 15.7447 6.61865C16.0901 6.58486 16.4366 6.67188 16.725 6.86489C17.0134 7.0579 17.226 7.34495 17.3265 7.67713C17.427 8.0093 17.4092 8.36606 17.2762 8.68659C17.1431 9.00712 16.903 9.2716 16.5969 9.43496C16.2907 9.59831 15.9373 9.65044 15.597 9.58246C15.2566 9.51448 14.9504 9.33059 14.7305 9.06213C14.5105 8.79367 14.3905 8.45725 14.3908 8.1102C14.3911 7.71251 14.5494 7.33124 14.8308 7.0502Z\"\n fill={color}\n />\n <path\n d=\"M8.10954 5.60988C7.78094 5.60874 7.45536 5.67266 7.15157 5.79795C6.84779 5.92324 6.57181 6.10742 6.33954 6.33988C5.87419 6.81147 5.61328 7.44735 5.61328 8.10988C5.61328 8.77241 5.87419 9.40829 6.33954 9.87988C6.80986 10.3476 7.44622 10.6102 8.10954 10.6102C8.77287 10.6102 9.40922 10.3476 9.87954 9.87988C10.3449 9.40829 10.6058 8.77241 10.6058 8.10988C10.6058 7.44735 10.3449 6.81147 9.87954 6.33988C9.64728 6.10742 9.37129 5.92324 9.06751 5.79795C8.76373 5.67266 8.43815 5.60874 8.10954 5.60988ZM9.16954 9.16988C8.92399 9.41513 8.60099 9.56764 8.25559 9.60143C7.91019 9.63522 7.56376 9.5482 7.27533 9.35519C6.9869 9.16218 6.77432 8.87513 6.67382 8.54295C6.57332 8.21077 6.5911 7.85402 6.72416 7.53349C6.85721 7.21296 7.09729 6.94848 7.40348 6.78512C7.70968 6.62176 8.06305 6.56963 8.40338 6.63762C8.7437 6.7056 9.04993 6.88949 9.26987 7.15795C9.4898 7.42641 9.60985 7.76283 9.60954 8.10988C9.60919 8.50757 9.45093 8.88884 9.16954 9.16988Z\"\n fill={color}\n />\n <path\n d=\"M15.8908 13.3902C15.5622 13.389 15.2366 13.4529 14.9328 13.5782C14.629 13.7035 14.3531 13.8877 14.1208 14.1202C13.6554 14.5917 13.3945 15.2276 13.3945 15.8902C13.3945 16.5527 13.6554 17.1886 14.1208 17.6602C14.5911 18.1279 15.2275 18.3905 15.8908 18.3905C16.5541 18.3905 17.1905 18.1279 17.6608 17.6602C18.1261 17.1886 18.3871 16.5527 18.3871 15.8902C18.3871 15.2276 18.1261 14.5917 17.6608 14.1202C17.4285 13.8877 17.1525 13.7035 16.8488 13.5782C16.545 13.4529 16.2194 13.389 15.8908 13.3902ZM17.0008 17.0002C16.7911 17.2101 16.5238 17.3532 16.2328 17.4112C15.9418 17.4692 15.6401 17.4396 15.3659 17.3261C15.0917 17.2127 14.8573 17.0204 14.6924 16.7737C14.5275 16.527 14.4395 16.2369 14.4395 15.9402C14.4395 15.6434 14.5275 15.3533 14.6924 15.1066C14.8573 14.8599 15.0917 14.6676 15.3659 14.5542C15.6401 14.4407 15.9418 14.4111 16.2328 14.4691C16.5238 14.5271 16.7911 14.6702 17.0008 14.8802C17.2817 15.1614 17.4395 15.5426 17.4395 15.9402C17.4395 16.3377 17.2817 16.7189 17.0008 17.0002Z\"\n fill={color}\n />\n <path\n d=\"M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M5.8 6.0999C9 2.8999 14.1 2.6999 17.5 5.4999L17.3 2.9999L18.3 2.8999L18.6 6.9999L14.5 7.2999L14.4 6.2999L16.9 6.0999C13.8 3.7999 9.4 3.9999 6.5 6.7999C3.5 9.7999 3.5 14.6999 6.5 17.6999C9.5 20.6999 14.4 20.6999 17.4 17.6999C18.9 16.1999 19.7 14.2999 19.7 12.1999H20.7C20.7 14.4999 19.8 16.6999 18.1 18.3999C16.5 20.0999 14.2 20.9999 12 20.9999C9.8 20.9999 7.5 20.0999 5.8 18.3999C2.4 14.9999 2.4 9.4999 5.8 6.0999Z\"\n fill={color}\n />\n <path d=\"M8.8 10.3L7.8 10.6L7.5 9.5L9.2 9H10.1V14.9H8.8V10.3Z\" fill={color} />\n <path\n d=\"M11.3008 12C11.3008 10.3 12.4008 9 13.9008 9C15.4008 9 16.5008 10.3 16.5008 12C16.5008 13.7 15.5008 15 13.9008 15C12.3008 15 11.3008 13.7 11.3008 12ZM15.2008 12C15.2008 10.9 14.7008 10.1 13.9008 10.1C13.1008 10.1 12.6008 10.9 12.6008 12C12.6008 13.1 13.1008 13.9 13.9008 13.9C14.7008 13.9 15.2008 13.1 15.2008 12Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M3 9H4V4H9V3H3V9Z\" fill={color} />\n <path d=\"M20 20H15V21H21V15H20V20Z\" fill={color} />\n <path d=\"M15 3V4H20V9H21V3H15Z\" fill={color} />\n <path d=\"M4 15H3V21H9V20H4V15Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H14.3H15.3H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 4C19.6 4 20 4.4 20 5V8.9H15.3V4H19ZM9.7 9.9H14.4V14.6H9.7V9.9ZM8.7 14.6H4V9.9H8.7V14.6ZM15.3 9.9H20V14.6H15.3V9.9ZM14.3 8.9H9.7V4H14.4V8.9H14.3ZM5 4H8.7V8.9H4V5C4 4.4 4.4 4 5 4ZM4 19V15.6H8.7V20H5C4.4 20 4 19.6 4 19ZM9.7 20V15.6H14.4V20H9.7ZM19 20H15.3V15.6H20V19C20 19.6 19.6 20 19 20Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M22 12.1L12 4L2 12.1L2.6 12.9L4.8 11.1V18C4.8 19.1 5.7 20 6.8 20H9.6C10.1 20 10.5 19.6 10.5 19.1V15.3C10.5 14.9 10.7 14.5 11 14.2C11.3 13.9 11.7 13.8 12.1 13.8C12.9 13.8 13.5 14.6 13.5 15.4V19.1C13.5 19.6 13.9 20 14.4 20H17.2C18.3 20 19.2 19.1 19.2 18V11.1L21.4 12.9L22 12.1ZM18.2 18C18.2 18.6 17.8 19 17.2 19H14.6V15.4C14.6 14 13.5 12.8 12.2 12.8C11.5 12.8 10.8 13 10.3 13.5C9.8 14 9.5 14.6 9.5 15.3V19H6.8C6.2 19 5.8 18.5 5.8 18V10.3L12 5.3L18.2 10.3V18Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2ZM12 21C7 21 3 17 3 12C3 7 7 3 12 3C17 3 21 7 21 12C21 17 17 21 12 21Z\"\n fill={color}\n />\n <path d=\"M12.5 9.5H11.5V17.5H12.5V9.5Z\" fill={color} />\n <path d=\"M12.5 6.5H11.5V7.5H12.5V6.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M11.9998 4.62C14.3998 4.62 14.6898 4.62 15.6398 4.62C16.2138 4.652 16.7784 4.78047 17.3098 5C17.6891 5.15025 18.0306 5.38245 18.3098 5.68C18.6073 5.95918 18.8395 6.30065 18.9898 6.68C19.1854 7.21552 19.2901 7.77996 19.2998 8.35C19.2998 9.35 19.3498 9.59 19.3498 11.99C19.3498 14.39 19.3498 14.68 19.2998 15.63C19.2945 16.2028 19.1931 16.7707 18.9998 17.31C18.8495 17.6893 18.6173 18.0308 18.3198 18.31C18.0406 18.6075 17.6991 18.8397 17.3198 18.99C16.7843 19.1856 16.2198 19.2904 15.6498 19.3C14.6998 19.3 14.4098 19.35 12.0098 19.35C9.60978 19.35 9.31978 19.35 8.36978 19.3C7.79694 19.2947 7.22905 19.1933 6.68978 19C6.31043 18.8497 5.96896 18.6175 5.68978 18.32C5.39223 18.0408 5.16003 17.6993 5.00978 17.32C4.81419 16.7845 4.70942 16.22 4.69978 15.65C4.69978 14.65 4.64978 14.41 4.64978 12.01C4.64978 9.61 4.64978 9.32 4.69978 8.37C4.70509 7.79716 4.8065 7.22927 4.99978 6.69C5.15003 6.31065 5.38223 5.96918 5.67978 5.69C5.95897 5.39245 6.30044 5.16025 6.67978 5.01C7.21531 4.81441 7.77974 4.70963 8.34978 4.7C9.34978 4.7 9.58978 4.7 11.9898 4.7L11.9998 4.62ZM11.9998 3C9.55978 3 9.24978 3 8.28978 3C7.54184 3.02033 6.80218 3.16219 6.09978 3.42C5.50426 3.63557 4.96202 3.9766 4.50978 4.42C4.06638 4.87223 3.72535 5.41448 3.50978 6.01C3.25197 6.7124 3.11012 7.45206 3.08978 8.2C3.08978 9.2 3.08978 9.47 3.08978 11.91C3.08978 14.35 3.08978 14.66 3.08978 15.62C3.11012 16.3679 3.25197 17.1076 3.50978 17.81C3.72535 18.4055 4.06638 18.9478 4.50978 19.4C4.96202 19.8434 5.50426 20.1844 6.09978 20.4C6.80218 20.6578 7.54184 20.7997 8.28978 20.82C9.28978 20.82 9.55978 20.87 11.9998 20.87C14.4398 20.87 14.7498 20.87 15.7098 20.82C16.4577 20.7997 17.1974 20.6578 17.8998 20.4C18.4953 20.1844 19.0375 19.8434 19.4898 19.4C19.9332 18.9478 20.2742 18.4055 20.4898 17.81C20.769 17.1411 20.9411 16.4324 20.9998 15.71C20.9998 14.71 21.0498 14.44 21.0498 12C21.0498 9.56 21.0498 9.25 20.9998 8.29C20.9794 7.54206 20.8376 6.8024 20.5798 6.1C20.3642 5.50448 20.0232 4.96223 19.5798 4.51C19.1275 4.0666 18.5853 3.72557 17.9898 3.51C17.2874 3.25219 16.5477 3.11033 15.7998 3.09C14.7998 3.09 14.5298 3.09 12.0898 3.09L11.9998 3Z\"\n fill={color}\n />\n <path\n d=\"M11.9998 7.37988C10.7745 7.37988 9.59934 7.86663 8.73293 8.73305C7.86651 9.59947 7.37976 10.7746 7.37976 11.9999C7.37976 13.2252 7.86651 14.4003 8.73293 15.2667C9.59934 16.1331 10.7745 16.6199 11.9998 16.6199C13.2251 16.6199 14.4002 16.1331 15.2666 15.2667C16.133 14.4003 16.6198 13.2252 16.6198 11.9999C16.6198 10.7746 16.133 9.59947 15.2666 8.73305C14.4002 7.86663 13.2251 7.37988 11.9998 7.37988ZM11.9998 14.9999C11.2041 14.9999 10.4411 14.6838 9.87844 14.1212C9.31583 13.5586 8.99976 12.7955 8.99976 11.9999C8.99976 11.2042 9.31583 10.4412 9.87844 9.87856C10.4411 9.31595 11.2041 8.99988 11.9998 8.99988C12.7954 8.99988 13.5585 9.31595 14.1211 9.87856C14.6837 10.4412 14.9998 11.2042 14.9998 11.9999C14.9998 12.7955 14.6837 13.5586 14.1211 14.1212C13.5585 14.6838 12.7954 14.9999 11.9998 14.9999Z\"\n fill={color}\n />\n <path\n d=\"M16.7998 8.28012C17.3963 8.28012 17.8798 7.79658 17.8798 7.20012C17.8798 6.60365 17.3963 6.12012 16.7998 6.12012C16.2033 6.12012 15.7198 6.60365 15.7198 7.20012C15.7198 7.79658 16.2033 8.28012 16.7998 8.28012Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M4.5 7C5.32843 7 6 6.32843 6 5.5C6 4.67157 5.32843 4 4.5 4C3.67157 4 3 4.67157 3 5.5C3 6.32843 3.67157 7 4.5 7Z\"\n fill={color}\n />\n <path d=\"M21 5H8V6H21V5Z\" fill={color} />\n <path\n d=\"M4.5 20C5.32843 20 6 19.3284 6 18.5C6 17.6716 5.32843 17 4.5 17C3.67157 17 3 17.6716 3 18.5C3 19.3284 3.67157 20 4.5 20Z\"\n fill={color}\n />\n <path d=\"M21 18H8V19H21V18Z\" fill={color} />\n <path\n d=\"M4.5 13.5C5.32843 13.5 6 12.8284 6 12C6 11.1716 5.32843 10.5 4.5 10.5C3.67157 10.5 3 11.1716 3 12C3 12.8284 3.67157 13.5 4.5 13.5Z\"\n fill={color}\n />\n <path d=\"M21 11.5H8V12.5H21V11.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M3 3V7H21V3H3ZM20 6H4V4H20V6Z\" fill={color} />\n <path d=\"M3 21H21V17H3V21ZM4 18H20V20H4V18Z\" fill={color} />\n <path d=\"M3 14H21V10H3V14ZM4 11H20V13H4V11Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 15.5C10.1 15.5 8.5 13.9 8.5 12C8.5 10.1 10.1 8.5 12 8.5C13.9 8.5 15.5 10.1 15.5 12C15.5 13.9 13.9 15.5 12 15.5ZM12 9.5C10.6 9.5 9.5 10.6 9.5 12C9.5 13.4 10.6 14.5 12 14.5C13.4 14.5 14.5 13.4 14.5 12C14.5 10.6 13.4 9.5 12 9.5Z\"\n fill={color}\n />\n <path\n d=\"M16.7996 17.4L16.0996 16.7C18.3996 14.1 18.3996 9.9 16.0996 7.2L16.7996 6.5C19.4996 9.6 19.4996 14.4 16.7996 17.4Z\"\n fill={color}\n />\n <path d=\"M7.2 17.4C4.6 14.4 4.6 9.5 7.2 6.5L7.9 7.2C5.6 9.8 5.6 14 7.9 16.7L7.2 17.4Z\" fill={color} />\n <path\n d=\"M19.1004 20L18.4004 19.3C21.9004 15.3 21.9004 8.7 18.4004 4.7L19.1004 4C23.0004 8.4 23.0004 15.6 19.1004 20Z\"\n fill={color}\n />\n <path\n d=\"M4.89961 20C0.999609 15.6 0.999609 8.4 4.89961 4L5.59961 4.7C2.09961 8.7 2.09961 15.3 5.59961 19.3L4.89961 20Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 2C9.87827 2 7.84344 2.84285 6.34315 4.34315C4.84286 5.84344 4 7.87827 4 10C4 14.42 12 22 12 22C12 22 20 14.42 20 10C20 7.87827 19.1571 5.84344 17.6569 4.34315C16.1566 2.84285 14.1217 2 12 2ZM12 20.6C9.55 18.14 5 13 5 10C5 8.14348 5.7375 6.36301 7.05025 5.05025C8.36301 3.7375 10.1435 3 12 3C13.8565 3 15.637 3.7375 16.9497 5.05025C18.2625 6.36301 19 8.14348 19 10C19 13 14.45 18.14 12 20.6Z\"\n fill={color}\n />\n <path\n d=\"M12 7C11.2044 7 10.4413 7.31607 9.87868 7.87868C9.31607 8.44129 9 9.20435 9 10C9 10.7956 9.31607 11.5587 9.87868 12.1213C10.4413 12.6839 11.2044 13 12 13C12.7956 13 13.5587 12.6839 14.1213 12.1213C14.6839 11.5587 15 10.7956 15 10C15 9.20435 14.6839 8.44129 14.1213 7.87868C13.5587 7.31607 12.7956 7 12 7ZM12 12C11.4696 12 10.9609 11.7893 10.5858 11.4142C10.2107 11.0391 10 10.5304 10 10C10 9.46957 10.2107 8.96086 10.5858 8.58579C10.9609 8.21071 11.4696 8 12 8C12.5304 8 13.0391 8.21071 13.4142 8.58579C13.7893 8.96086 14 9.46957 14 10C14 10.5304 13.7893 11.0391 13.4142 11.4142C13.0391 11.7893 12.5304 12 12 12Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M22 5H2V6H22V5Z\" fill={color} />\n <path d=\"M22 18H2V19H22V18Z\" fill={color} />\n <path d=\"M22 11.5H2V12.5H22V11.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M9 3H8V8H3V9H9V3Z\" fill={color} />\n <path d=\"M16 16H21V15H15V21H16V16Z\" fill={color} />\n <path d=\"M21 9V8H16V3H15V9H21Z\" fill={color} />\n <path d=\"M8 21H9V15H3V16H8V21Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M22.0008 9.9001L21.3008 9.1001L19.2008 11.3001L17.0008 9.1001L16.3008 9.9001L18.4008 12.0001L16.3008 14.1001L17.0008 14.9001L19.2008 12.7001L21.3008 14.9001L22.0008 14.1001L19.9008 12.0001L22.0008 9.9001Z\"\n fill={color}\n />\n <path\n d=\"M4.5 9.5C3.7 9.5 3 10.2 3 11V14C3 14.8 3.7 15.5 4.5 15.5H6.8L14 21V4L6.8 9.5H4.5ZM13 6V19L7.2 14.5H4.5C4.2 14.5 4 14.3 4 14V11C4 10.7 4.2 10.5 4.5 10.5H7.2L13 6Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M15.4996 20.2002L13.3996 17.7002L12.5996 18.3002L15.5996 21.8002L20.8996 13.8002L20.0996 13.2002L15.4996 20.2002Z\"\n fill={color}\n />\n <path d=\"M21 3H3V4H21V3Z\" fill={color} />\n <path d=\"M21 6.5H3V7.5H21V6.5Z\" fill={color} />\n <path d=\"M21 10H3V11H21V10Z\" fill={color} />\n <path d=\"M14.5 13.5H3V14.5H14.5V13.5Z\" fill={color} />\n <path d=\"M11 17H3V18H11V17Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M22 11V10C20.9391 10 19.9217 9.57857 19.1715 8.82843C18.4214 8.07828 18 7.06087 18 6H17V14.78C16.4875 14.3216 15.833 14.0532 15.1463 14.0197C14.4595 13.9862 13.7821 14.1896 13.2273 14.5958C12.6726 15.0021 12.2743 15.5866 12.0991 16.2515C11.9238 16.9164 11.9823 17.6213 12.2647 18.2482C12.5471 18.8751 13.0363 19.386 13.6504 19.6954C14.2644 20.0047 14.9661 20.0937 15.638 19.9475C16.3098 19.8013 16.9111 19.4287 17.3411 18.8921C17.771 18.3556 18.0037 17.6876 18 17V9C18.4657 9.62098 19.0696 10.125 19.7639 10.4721C20.4582 10.8193 21.2237 11 22 11V11ZM15 19C14.6044 19 14.2177 18.8827 13.8888 18.6629C13.5599 18.4432 13.3036 18.1308 13.1522 17.7654C13.0008 17.3999 12.9612 16.9978 13.0384 16.6098C13.1156 16.2219 13.306 15.8655 13.5857 15.5858C13.8655 15.3061 14.2218 15.1156 14.6098 15.0384C14.9977 14.9613 15.3999 15.0009 15.7653 15.1522C16.1308 15.3036 16.4431 15.56 16.6629 15.8889C16.8827 16.2178 17 16.6044 17 17C17 17.5304 16.7892 18.0391 16.4142 18.4142C16.0391 18.7893 15.5304 19 15 19Z\"\n fill={color}\n />\n <path d=\"M22 4.02979H2V5.02979H22V4.02979Z\" fill={color} />\n <path d=\"M11 19.0298H2V20.0298H11V19.0298Z\" fill={color} />\n <path d=\"M22 19.0298H19V20.0298H22V19.0298Z\" fill={color} />\n <path d=\"M11 14.0298H2V15.0298H11V14.0298Z\" fill={color} />\n <path d=\"M22 14.0298H19V15.0298H22V14.0298Z\" fill={color} />\n <path d=\"M15 9.02979H2V10.0298H15V9.02979Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M10 2H4V22H10V2Z\" fill={color} />\n <path d=\"M20 2H14V22H20V2Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2ZM14.5 3.9L18.1 7.5H14.5V3.9ZM18 21H6C5.4 21 5 20.6 5 20V4C5 3.4 5.4 3 6 3H13.6H13.5V8.5H19V20C19 20.6 18.6 21 18 21Z\"\n fill={color}\n />\n <path\n d=\"M8 12H9.2C9.9 12 10.3 12.4 10.3 13C10.3 13.7 9.8 14 9.2 14H8.6V14.8H8V12ZM9.1 13.4C9.4 13.4 9.6 13.2 9.6 13C9.6 12.7 9.4 12.6 9.1 12.6H8.6V13.5H9.1V13.4Z\"\n fill={color}\n />\n <path\n d=\"M10.6992 12H11.7992C12.6992 12 13.2992 12.6 13.2992 13.4C13.2992 14.2 12.6992 14.8 11.7992 14.8H10.6992V12ZM11.7992 14.3C12.2992 14.3 12.6992 14 12.6992 13.5C12.6992 13 12.3992 12.6 11.7992 12.6H11.2992V14.3H11.7992Z\"\n fill={color}\n />\n <path d=\"M13.9004 12H16.0004V12.6H14.5004V13.2H15.8004V13.8H14.5004V14.9H13.9004V12Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M20.14 14H20C18.5808 13.8715 17.201 13.4637 15.94 12.8L15.67 12.66C15.5265 12.5796 15.3645 12.5382 15.2 12.54C14.9377 12.5411 14.6863 12.6453 14.5 12.83L12.9 14.43C11.4318 13.3789 10.1763 12.0589 9.2 10.54L10.85 8.89001C11.0287 8.70464 11.129 8.45748 11.13 8.20001C11.1278 8.08009 11.1041 7.96154 11.06 7.85001L10.87 7.45001C10.3893 6.35669 10.0952 5.19054 10 4.00001C9.99507 3.96686 9.99507 3.93316 10 3.90001C9.97513 3.65249 9.85889 3.42312 9.67398 3.25671C9.48907 3.09029 9.24877 2.99877 9 3.00001H4C3.73478 3.00001 3.48043 3.10537 3.29289 3.29291C3.10536 3.48044 3 3.7348 3 4.00001C3.24002 8.43074 5.10813 12.6167 8.24573 15.7543C11.3833 18.8919 15.5693 20.76 20 21C20.2652 21 20.5196 20.8947 20.7071 20.7071C20.8946 20.5196 21 20.2652 21 20V15C21.0024 14.7574 20.9165 14.5221 20.7582 14.3381C20.6 14.1541 20.3803 14.034 20.14 14ZM20 17V20C16.9863 19.8334 14.0721 18.8631 11.56 17.19C11.28 17 11.01 16.79 10.74 16.59C9.29429 15.4967 8.03183 14.1802 7 12.69C6.8 12.4 6.62 12.11 6.44 11.82C4.99691 9.45324 4.1589 6.76749 4 4.00001H9C9 4.34001 9.07 4.67001 9.13 5.00001C9.25673 5.76115 9.45769 6.50805 9.73 7.23001C9.85 7.54001 9.98 7.85001 10.12 8.15001L9.41 8.86001L8.62 9.64001L7.89 10.38C8.06 10.68 8.23 10.97 8.42 11.26C9.4178 12.7656 10.6778 14.0797 12.14 15.14C12.41 15.34 12.69 15.53 12.98 15.72L13.71 14.98L14.46 14.23L15.16 13.53L16.06 13.98C16.9924 14.3929 17.9737 14.6853 18.98 14.85C19.3 14.91 19.63 14.95 19.98 14.98V16.98L20 17Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M5.5 3.8999L20 11.9999L5.5 20.0999V3.8999Z\" fill={color} />\n <path d=\"M6 4.7L19 12L6 19.3V4.7ZM5 3V21L21 12L5 3Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19 6H16V3H8V6H5C3.9 6 3 6.9 3 8V16C3 17.1 3.9 18 5 18H8V21H16V18H19C20.1 18 21 17.1 21 16V8C21 6.9 20.1 6 19 6ZM9 4H15V6H9V4ZM15 20H9V14H15V20ZM20 16C20 16.6 19.6 17 19 17H16V13H8V17H5C4.4 17 4 16.6 4 16V8C4 7.4 4.4 7 5 7H19C19.6 7 20 7.4 20 8V16Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18.71 13.9001C18.3138 15.3804 17.4428 16.6898 16.2307 17.6273C15.0186 18.5648 13.5323 19.0787 12 19.0901C10.2633 19.0541 8.59637 18.3999 7.29868 17.2452C6.00098 16.0905 5.15758 14.5108 4.92 12.7901L6.64 14.2901L7.21 13.5701L4.42 11.1001L2 14.0001L2.7 14.5901L4.17 12.8301C4.33413 14.6921 5.15733 16.4345 6.49149 17.7437C7.82566 19.0529 9.58323 19.8431 11.448 19.9721C13.3128 20.1011 15.1624 19.5604 16.6641 18.4473C18.1658 17.3342 19.2211 15.7218 19.64 13.9001H18.71Z\"\n fill={color}\n />\n <path\n d=\"M21.2994 9.44987L19.8294 11.2099C19.6738 9.34515 18.8572 7.59736 17.5268 6.28151C16.1964 4.96566 14.4397 4.16832 12.5734 4.0332C10.7071 3.89808 8.8539 4.43407 7.34785 5.54457C5.8418 6.65507 4.78196 8.26702 4.35938 10.0899H5.28937C5.68741 8.61145 6.55919 7.30431 7.77114 6.36871C8.98308 5.43311 10.4683 4.92066 11.9994 4.90987C13.7361 4.9459 15.403 5.60004 16.7007 6.75476C17.9984 7.90949 18.8418 9.48913 19.0794 11.2099L17.3594 9.70987L16.7894 10.4299L19.5994 12.8999L21.9994 9.99987L21.2994 9.44987Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18 18V10C18 6.9 15.6 4.3 12.5 4V2H11.5V4C8.4 4.3 6 6.9 6 10V18H4V19H6H9C9 20.7 10.3 22 12 22C13.7 22 15 20.7 15 19H18H20V18H18ZM12 21C10.9 21 10 20.1 10 19H14C14 20.1 13.1 21 12 21ZM15 18H9H7V10C7 7.2 9.2 5 12 5C14.8 5 17 7.2 17 10V18H15Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M7.06066 5.93957L11.0001 2.00011L9.93945 0.939453L6 4.87891L2.06055 0.939453L0.999887 2.00011L4.93934 5.93957L0.939453 9.93945L2.00011 11.0001L6 7.00023L9.99989 11.0001L11.0605 9.93945L7.06066 5.93957Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-label={ariaLabel}>\n <g>\n <path\n d=\"M6.9956 5.96581L11.8642 10.8344L10.9042 11.7944L6.0356 6.92581L1.16703 11.7944L0.207031 10.8344L5.0756 5.96581L0.207031 1.16581L1.16703 0.205811L6.0356 5.07438L10.9042 0.205811L11.8642 1.16581L6.9956 5.96581Z\"\n fill={color}\n />\n </g>\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12.6 7.4H5.9L9.6 3.7L8.9 3L4 7.9L8.9 12.8L9.6 12.1L5.9 8.4H12.6C16.1 8.4 18.9 11.2 18.9 14.7C18.9 18.2 16 21 12.6 21C9.1 21 6.3 18.2 6.3 14.7H5.3C5.3 18.7 8.6 22 12.6 22C16.6 22 19.9 18.7 19.9 14.7C19.8 10.7 16.6 7.4 12.6 7.4Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M21 20.3L16.1 15.4C17.3 14.1 18 12.4 18 10.5C18 6.4 14.6 3 10.5 3C6.4 3 3 6.4 3 10.5C3 14.6 6.4 18 10.5 18C12.4 18 14.1 17.3 15.4 16.1L20.3 21L21 20.3ZM4 10.5C4 6.9 6.9 4 10.5 4C14.1 4 17 6.9 17 10.5C17 14.1 14.1 17 10.5 17C6.9 17 4 14.1 4 10.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M17.5 7.8V4.9c0-2.7-2.2-4.9-4.9-4.9H7.2C4.5 0 2.3 2.2 2.3 4.9v2.9H0V20h4.2v-3.7h11.3V20h4.2V7.8h-2.2ZM3 4.8h.3v.1C3.3 2.8 5 1 7.2 1h5.4c2.2 0 3.9 1.8 3.9 3.9v2.8h-1v4.6H4.2V7.8H3v-3ZM1 19V8.7h2.2v3.6H1.9v4h1.3V19H1Zm1.9-3.6v-2h13.9v2H2.9ZM18.8 19h-2.2v-2.7h1.3v-4h-1.3V8.7h2.2V19Z\"\n fill={color}\n />\n <path d=\"M3.3 7.8v-3H3v3h.3Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M18 9H17V7C17 5.67392 16.4732 4.40215 15.5355 3.46447C14.5979 2.52678 13.3261 2 12 2C10.6739 2 9.40215 2.52678 8.46447 3.46447C7.52678 4.40215 7 5.67392 7 7V9H6C5.46957 9 4.96086 9.21071 4.58579 9.58579C4.21071 9.96086 4 10.4696 4 11V20C4 20.5304 4.21071 21.0391 4.58579 21.4142C4.96086 21.7893 5.46957 22 6 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V11C20 10.4696 19.7893 9.96086 19.4142 9.58579C19.0391 9.21071 18.5304 9 18 9ZM8 7C8 5.93913 8.42143 4.92172 9.17157 4.17157C9.92172 3.42143 10.9391 3 12 3C13.0609 3 14.0783 3.42143 14.8284 4.17157C15.5786 4.92172 16 5.93913 16 7V9H8V7ZM19 20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V11C5 10.7348 5.10536 10.4804 5.29289 10.2929C5.48043 10.1054 5.73478 10 6 10H18C18.2652 10 18.5196 10.1054 18.7071 10.2929C18.8946 10.4804 19 10.7348 19 11V20Z\"\n fill={color}\n />\n <path\n d=\"M12.0001 13C11.6483 13.0027 11.3087 13.129 11.0406 13.3568C10.7725 13.5845 10.593 13.8992 10.5334 14.2459C10.4738 14.5926 10.538 14.9493 10.7147 15.2534C10.8914 15.5576 11.1694 15.79 11.5001 15.91V18H12.5001V15.91C12.8308 15.79 13.1088 15.5576 13.2855 15.2534C13.4622 14.9493 13.5264 14.5926 13.4668 14.2459C13.4072 13.8992 13.2277 13.5845 12.9596 13.3568C12.6915 13.129 12.3519 13.0027 12.0001 13Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19.4157 12.1133C19.4157 11.9133 19.4157 11.7133 19.4157 11.4133L22.1992 8.81328L20.1374 5.31328L16.426 6.31328C16.0137 6.11328 15.6013 5.91328 15.1889 5.71328L14.2611 2.11328H10.1374L9.20953 5.71328C8.79716 5.91328 8.38479 6.11328 8.07551 6.41328L4.36417 5.41328L2.30231 8.91328L4.98272 11.5133C4.98272 11.7133 4.98272 11.9133 4.98272 12.2133C4.98272 12.5133 4.98272 12.6133 4.98272 12.9133L2.19922 15.4133L4.26107 18.9133L8.07551 17.9133C8.38479 18.1133 8.79716 18.3133 9.20953 18.5133L10.1374 22.1133H14.2611L15.1889 18.5133C15.6013 18.3133 16.0137 18.1133 16.3229 17.8133L20.0343 18.8133L22.0961 15.3133L19.3126 12.7133C19.4157 12.5133 19.4157 12.3133 19.4157 12.1133ZM20.859 15.5133L19.6219 17.6133L16.6322 16.8133L16.1167 16.7133L15.7044 17.0133C15.3951 17.2133 14.9827 17.4133 14.6734 17.6133L14.2611 17.8133L14.158 18.3133L13.4363 21.1133H10.859L10.1374 18.2133L10.0343 17.7133L9.6219 17.5133C9.31262 17.3133 8.90025 17.2133 8.59097 16.9133L8.1786 16.6133L7.66314 16.7133L4.77654 17.5133L3.53943 15.4133L5.70437 13.3133L6.01365 13.1133V12.6133C6.01365 12.2133 6.01365 11.8133 6.01365 11.5133V11.0133L5.70437 10.7133L3.53943 8.71328L4.77654 6.61328L7.66314 7.41328L8.1786 7.51328L8.59097 7.21328C8.90025 7.01328 9.31262 6.81328 9.6219 6.61328L10.0343 6.41328L10.1374 5.91328L10.859 3.11328H13.3332L14.0549 6.01328L14.158 6.51328L14.5704 6.71328C14.8796 6.91328 15.292 7.01328 15.6013 7.31328L16.0137 7.61328L16.6322 7.41328L19.6219 6.61328L20.859 8.71328L18.6941 10.8133L18.2817 11.1133V11.6133C18.2817 12.0133 18.2817 12.4133 18.2817 12.7133V13.2133L18.591 13.5133L20.859 15.5133Z\"\n fill={color}\n />\n <path\n d=\"M12.1999 8.11328C9.93184 8.11328 8.07617 9.91328 8.07617 12.1133C8.07617 14.3133 9.93184 16.1133 12.1999 16.1133C14.4679 16.1133 16.3236 14.3133 16.3236 12.1133C16.3236 9.91328 14.4679 8.11328 12.1999 8.11328ZM12.1999 15.1133C10.4473 15.1133 9.1071 13.8133 9.1071 12.1133C9.1071 10.4133 10.4473 9.11328 12.1999 9.11328C13.9525 9.11328 15.2927 10.4133 15.2927 12.1133C15.2927 13.8133 13.8494 15.1133 12.1999 15.1133Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 3L3 12H8V21H16V12H21L12 3ZM15 11V12V20H9V12V11H8H5.4L12 4.4L18.6 11H16H15Z\"\n fill={color}\n aria-label={ariaLabel}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M21 16V19H3V16H2V19V20H3H21H22V19V16H21Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M9.8 3.9c1.1 0 1.9-.9 1.9-1.9 0-1-.8-2-1.9-2-1.1 0-1.9.9-1.9 2s.9 1.9 1.9 1.9Zm0-2.9c.5 0 .9.4.9.9s-.4.9-.9.9-.9-.3-.9-.8.4-1 .9-1Zm2 3.2H8c-1.3 0-2.3 1-2.3 2.2v6.4h1.7V20h4.9v-7h1.8V6.4c0-1.2-1.1-2.2-2.3-2.2Zm1.3 7.8h-.8V7.4c0-.2-.2-.4-.5-.4-.2 0-.5.2-.5.4V19h-.9v-6.3c0-.2-.2-.4-.5-.4-.2 0-.5.2-.5.4V19h-1V7.4c0-.2-.2-.4-.5-.4-.2 0-.5.2-.5.4v4.5h-.7V6.5c0-.7.6-1.2 1.3-1.2h3.7c.7 0 1.3.5 1.3 1.2l.1 5.5Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 48 46\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M24 0L30.0248 16.7076L47.7764 17.2746L33.7483 28.1674L38.6946 45.2254L24 35.25L9.30537 45.2254L14.2517 28.1674L0.223587 17.2746L17.9752 16.7076L24 0Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M20 4V20H4V4H20ZM21 3H3V21H21V3Z\" fill={color} />\n <path d=\"M12.5 11.5V7H11.5V11.5H7V12.5H11.5V17H12.5V12.5H17V11.5H12.5Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M9 7H7V8H9V7Z\" fill={color} />\n <path d=\"M17 7H11V8H17V7Z\" fill={color} />\n <path d=\"M9 12H7V13H9V12Z\" fill={color} />\n <path d=\"M17 12H11V13H17V12Z\" fill={color} />\n <path d=\"M17 9.5H15V10.5H17V9.5Z\" fill={color} />\n <path d=\"M13 9.5H7V10.5H13V9.5Z\" fill={color} />\n <path\n d=\"M19 3H5C4.46957 3 3.96086 3.21071 3.58579 3.58579C3.21071 3.96086 3 4.46957 3 5V15C3 15.5304 3.21071 16.0391 3.58579 16.4142C3.96086 16.7893 4.46957 17 5 17H11.3L17 21V17H19C19.5304 17 20.0391 16.7893 20.4142 16.4142C20.7893 16.0391 21 15.5304 21 15V5C21 4.46957 20.7893 3.96086 20.4142 3.58579C20.0391 3.21071 19.5304 3 19 3ZM20 15C20.0088 15.1336 19.989 15.2676 19.9419 15.3929C19.8948 15.5182 19.8214 15.632 19.7267 15.7267C19.632 15.8214 19.5182 15.8948 19.3929 15.9419C19.2676 15.989 19.1336 16.0088 19 16H16V19L13.1 17L12.9 16.8L11.7 16H5C4.86639 16.0088 4.73244 15.989 4.6071 15.9419C4.48177 15.8948 4.36795 15.8214 4.27327 15.7267C4.17859 15.632 4.10523 15.5182 4.0581 15.3929C4.01097 15.2676 3.99116 15.1336 4 15V5C3.99116 4.86639 4.01097 4.73244 4.0581 4.6071C4.10523 4.48177 4.17859 4.36795 4.27327 4.27327C4.36795 4.17859 4.48177 4.10523 4.6071 4.0581C4.73244 4.01097 4.86639 3.99116 5 4H19C19.1336 3.99116 19.2676 4.01097 19.3929 4.0581C19.5182 4.10523 19.632 4.17859 19.7267 4.27327C19.8214 4.36795 19.8948 4.48177 19.9419 4.6071C19.989 4.73244 20.0088 4.86639 20 5V15Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M4.09961 11.1999L1.09961 7.2999L1.89961 6.6999L4.09961 9.4999L10.0996 1.3999L10.8996 1.9999L4.09961 11.1999Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M12 14H11V16H12V14Z\" fill={color} />\n <path d=\"M15 8H14V10H15V8Z\" fill={color} />\n <path\n d=\"M19 4C19 4.26522 18.8946 4.51957 18.7071 4.70711C18.5196 4.89464 18.2652 5 18 5C17.7348 5 17.4804 4.89464 17.2929 4.70711C17.1054 4.51957 17 4.26522 17 4H5V10H2V20H14C14 19.7348 14.1054 19.4804 14.2929 19.2929C14.4804 19.1054 14.7348 19 15 19C15.2652 19 15.5196 19.1054 15.7071 19.2929C15.8946 19.4804 16 19.7348 16 20H19V14H22V4H19ZM18 19H16.73C16.5542 18.6969 16.3018 18.4453 15.9982 18.2705C15.6946 18.0956 15.3504 18.0035 15 18.0035C14.6496 18.0035 14.3054 18.0956 14.0018 18.2705C13.6982 18.4453 13.4458 18.6969 13.27 19H12V17H11V19H3V11H11V13H12V11H13.27C13.4458 11.3031 13.6982 11.5547 14.0018 11.7295C14.3054 11.9044 14.6496 11.9965 15 11.9965C15.3504 11.9965 15.6946 11.9044 15.9982 11.7295C16.3018 11.5547 16.5542 11.3031 16.73 11H18V19ZM21 13H19.73C19.5547 12.697 19.303 12.4453 19 12.27V10H16C16 10.2652 15.8946 10.5196 15.7071 10.7071C15.5196 10.8946 15.2652 11 15 11C14.7348 11 14.4804 10.8946 14.2929 10.7071C14.1054 10.5196 14 10.2652 14 10H6V5H14V7H15V5H16.27C16.4458 5.30308 16.6982 5.55465 17.0018 5.72953C17.3054 5.90441 17.6496 5.99646 18 5.99646C18.3504 5.99646 18.6946 5.90441 18.9982 5.72953C19.3018 5.55465 19.5542 5.30308 19.73 5H21V13Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19.6997 10.28C19.5532 10.2898 19.4062 10.2898 19.2597 10.28C18.4648 10.2811 17.6823 10.083 16.9836 9.70397C16.2849 9.32492 15.6922 8.77693 15.2597 8.11V15.51C15.2597 16.5919 14.9389 17.6494 14.3378 18.549C13.7368 19.4485 12.8825 20.1496 11.883 20.5636C10.8835 20.9776 9.78364 21.086 8.72256 20.8749C7.66148 20.6638 6.68682 20.1429 5.92183 19.3779C5.15684 18.6129 4.63587 17.6382 4.42481 16.5771C4.21375 15.5161 4.32207 14.4162 4.73608 13.4167C5.15009 12.4172 5.8512 11.5629 6.75074 10.9619C7.65027 10.3608 8.70784 10.04 9.7897 10.04H10.1297V12.73H9.7897C9.04975 12.73 8.3401 13.0239 7.81688 13.5472C7.29365 14.0704 6.9997 14.78 6.9997 15.52C6.9997 16.26 7.29365 16.9696 7.81688 17.4928C8.3401 18.0161 9.04975 18.31 9.7897 18.31C10.5372 18.3236 11.26 18.0429 11.8025 17.5285C12.345 17.0141 12.6636 16.3071 12.6897 15.56L12.6997 3H15.2797C15.3963 4.11994 15.9028 5.16325 16.7108 5.94747C17.5188 6.7317 18.5768 7.20691 19.6997 7.29V10.29\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M16.8 3H15.8H12.5H11.5H8.2H7.2H3V7.5V8.3V15.7V16.5V21H7.2H8.2H11.4H12.4H15.6H16.6H21V17V15.7V8.3V8V3H16.8ZM16.8 4H20V7.3H16.8V4ZM12.5 4H15.7V7.3H12.5V4ZM8.2 4H11.4V7.3H8.2V4ZM4 4H7.2V7.3H4V4ZM7.2 20H4V16.7H7.2V20ZM11.5 20H8.2V16.7H11.4V20H11.5ZM15.8 20H12.5V16.7H15.7V20H15.8ZM20 20H16.8V16.7H20V17V20ZM20 15.7H16.8H15.8H12.5H11.5H8.2H7.2H4V8.3H7.2H8.2H11.4H12.4H15.6H16.6H20V15.7Z\"\n fill={color}\n />\n <path d=\"M10 14.5999L15 11.9999L10 9.3999V14.5999Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M21.9998 5.88989C21.2497 6.22055 20.4541 6.43631 19.6398 6.52989C20.4934 6.0305 21.1366 5.23803 21.4498 4.29989C20.6398 4.77267 19.7583 5.11042 18.8398 5.29989C18.4539 4.89263 17.9885 4.5689 17.4725 4.34873C16.9565 4.12856 16.4008 4.01664 15.8398 4.01989C14.7662 4.01179 13.7327 4.42715 12.9634 5.17592C12.194 5.92469 11.7508 6.94652 11.7298 8.01989C11.7307 8.32978 11.7676 8.63852 11.8398 8.93989C10.2142 8.86071 8.62291 8.44473 7.1666 7.71829C5.71029 6.99186 4.42077 5.97082 3.37975 4.71989C3.02375 5.3266 2.83404 6.01646 2.82976 6.71989C2.82871 7.38732 2.9947 8.04441 3.31258 8.63128C3.63047 9.21815 4.09016 9.71614 4.64976 10.0799C3.99934 10.0599 3.36252 9.88873 2.78976 9.57989C2.78849 10.5249 3.11611 11.4409 3.71641 12.1707C4.31671 12.9006 5.15227 13.3988 6.07976 13.5799C5.72736 13.6732 5.36431 13.7203 4.99976 13.7199C4.74165 13.7169 4.48418 13.6935 4.22976 13.6499C4.49917 14.456 5.01247 15.1585 5.69862 15.6601C6.38478 16.1618 7.20987 16.4377 8.05975 16.4499C6.61975 17.5939 4.83879 18.2239 2.99976 18.2399C2.66976 18.2399 2.33976 18.2399 1.99976 18.2399C3.88906 19.4067 6.06925 20.0167 8.28976 19.9999C9.81706 20.0291 11.3349 19.7535 12.7544 19.1892C14.1739 18.6249 15.4667 17.7832 16.557 16.7133C17.6474 15.6435 18.5134 14.3669 19.1046 12.9583C19.6957 11.5498 20 10.0375 19.9998 8.50989C19.9998 8.32989 19.9998 8.15989 19.9998 7.97989C20.7857 7.40806 21.463 6.70024 21.9998 5.88989Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12 12C20.1 12 20.6 16.6 20.9 20H3.1C3.4 16.6 3.9 12 12 12ZM12 11C2 11 2.4 17.7 2 21H22C21.6 17.7 22 11 12 11Z\"\n fill={color}\n />\n <path\n d=\"M12 3C13.7 3 15 4.3 15 6C15 7.7 13.7 9 12 9C10.3 9 9 7.7 9 6C9 4.3 10.3 3 12 3ZM12 2C9.8 2 8 3.8 8 6C8 8.2 9.8 10 12 10C14.2 10 16 8.2 16 6C16 3.8 14.2 2 12 2Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M22 21H2C2.4 17.7 2 11 12 11C22 11 21.6 17.7 22 21Z\" fill={color} />\n <path\n d=\"M12 10C14.2091 10 16 8.20914 16 6C16 3.79086 14.2091 2 12 2C9.79086 2 8 3.79086 8 6C8 8.20914 9.79086 10 12 10Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M19 12C19 10.3 17.7 9 16 9V10C17.1 10 18 10.9 18 12C18 13.1 17.1 14 16 14V15C17.7 15 19 13.7 19 12Z\"\n fill={color}\n />\n <path\n d=\"M16 6V7C18.8 7 21 9.2 21 12C21 14.8 18.8 17 16 17V18C19.3 18 22 15.3 22 12C22 8.7 19.3 6 16 6Z\"\n fill={color}\n />\n <path\n d=\"M4.5 9.5C3.7 9.5 3 10.2 3 11V14C3 14.8 3.7 15.5 4.5 15.5H6.8L14 21V4L6.8 9.5H4.5ZM13 6V19L7.2 14.5H4.5C4.2 14.5 4 14.3 4 14V11C4 10.7 4.2 10.5 4.5 10.5H7.2L13 6Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path d=\"M9 8L16 12L9 16V8Z\" fill={color} />\n <path d=\"M20 4V20H4V4H20ZM21 3H3V21H21V3Z\" fill={color} />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M8.4 18.8c-1.1 0-2.2-.4-3-1.1-.8-.8-1.3-1.8-1.3-2.9-.1-1.6.9-3.2 2.3-3.9l-.4-1c-1.9.9-3 2.8-3 4.9.1 2.8 2.4 5.1 5.3 5.1h.2c2.6-.1 4.7-2.1 5.1-4.6l-1.1-.1c-.3 2-2 3.6-4.1 3.6ZM9.8 4.5c1.2 0 2.2-1 2.2-2.2C12 1.1 11 .1 9.8.1c-1.2 0-2.2 1-2.2 2.2 0 1.2.9 2.2 2.2 2.2Zm0-3.3c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1Zm4.9 12c-.3-.5-.9-.8-1.6-.8h-2.6V6.3c0-.6-.5-1.2-1.1-1.2H6.2c-.5.1-.9.5-.9 1v3.2h1.1V6.2l2.9.1v7.2h3.8c.3 0 .5.1.6.3l3.4 5.4.9-.6-3.3-5.4Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M13.7124 10.6179L20.4133 3H18.8254L13.007 9.61448L8.35992 3H3L10.0274 13.0023L3 20.9908H4.58799L10.7324 14.0056L15.6401 20.9908H21L13.7124 10.6179ZM11.5375 13.0904L10.8255 12.0944L5.16016 4.16911H7.59922L12.1712 10.5651L12.8832 11.5611L18.8262 19.8748H16.3871L11.5375 13.0904Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { IconSVGProps } from '../../../../../../types/iconTypes';\n\nexport default ({ color = '#1A1A1A', ariaLabel }: IconSVGProps): React.ReactElement => (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n >\n <path\n d=\"M12.4398 18.8999L8.33978 18.8199C7.00184 18.8681 5.66237 18.7877 4.33978 18.5799C2.33978 18.1699 2.21978 16.1899 2.06978 14.5799C1.86519 12.2448 1.95253 9.89335 2.32978 7.57989C2.3868 6.99013 2.66085 6.44256 3.09878 6.04344C3.5367 5.64432 4.10727 5.4221 4.69978 5.41989C9.1314 5.15166 13.5738 5.10827 18.0098 5.28989C18.4804 5.30645 18.9488 5.36332 19.4098 5.45989C21.6798 5.84989 21.7398 8.09989 21.8798 9.99989C22.0316 11.911 21.9679 13.8331 21.6898 15.7299C21.4598 17.3099 21.0298 18.6199 19.2098 18.7299C16.9298 18.8999 14.7098 19.0299 12.4198 18.9899C12.4598 18.8999 12.4498 18.8999 12.4398 18.8999ZM10.0298 14.8999L15.1398 11.9999L9.99978 9.04989L10.0298 14.8999Z\"\n fill={color}\n />\n </svg>\n);\n","import * as React from 'react';\nimport { Wrapper } from './Icons.style';\nimport { IconLibrary } from './SvgIcons';\nimport { IIconProps } from '../../../types/iconTypes';\n\nconst Icon = React.memo(\n ({ className, color, iconName, title, direction, ariaLabel }: IIconProps): React.ReactElement => {\n const IconComponent = IconLibrary[iconName];\n\n return (\n <Wrapper className={className} color={color} title={title} direction={direction}>\n <IconComponent color={color} ariaLabel={ariaLabel} />\n </Wrapper>\n );\n }\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n","import styled from 'styled-components';\nimport { ILogosStyledProps } from '../../../types/types';\n\nexport const BadgeWrapper = styled.svg<ILogosStyledProps>`\n width: auto;\n\n g,\n path {\n fill: var(--base-color-${({ fillColor }) => fillColor});\n }\n`;\n","import { ImgHTMLAttributes, ReactElement } from 'react';\nimport { ICardProps } from './card';\nimport { EditorialLink } from './editorial';\nimport { IImageWithCaptionProps } from './image';\nimport { IntegratedTimerProps } from './timer';\nimport { ILogosProps } from './types';\n\n// eslint-disable-next-line no-shadow\nexport enum CarouselType {\n Image = 'image',\n SmallCard = 'SmallCard',\n LargeCard = 'LargeCard',\n}\n\nexport interface ICarouselProps {\n /**\n * Carousel title\n */\n title?: string;\n /**\n * Carousel type.\n */\n type: CarouselType;\n /**\n * Only for image type. It sets the height in pixels of the slides in devices(default 300)\n */\n imagesHeightDevice?: number;\n /**\n * Only for image type. It sets the height in pixels of the slides in desktop(default 500)\n */\n imagesHeightDesktop?: number;\n /**\n * Carousel children (only Card and ImageAspectRatioWrapper children are allowed).\n */\n children: ReactElement<ICardProps | IImageWithCaptionProps>[];\n /**\n * Defines if there should be offset added at the beginning of the container. True by default;\n */\n useOffset?: boolean;\n}\n\nexport interface ICarouselWrapperProps {\n /**\n * Carousel has been activated or not\n */\n active: boolean;\n /**\n * Carousel type.\n */\n type: CarouselType;\n /**\n * Only for image type. It sets the height in pixels of the slides in devices(default 300)\n */\n imagesHeightDevice?: number;\n /**\n * Only for image type. It sets the height in pixels of the slides in desktop(default 500)\n */\n imagesHeightDesktop?: number;\n /**\n * Additional top padding for slides in the carousel\n */\n slidesTopPadding?: number;\n /**\n * Sets overflow to swiper when specified\n */\n overflow?: string;\n}\n\nexport type HighlightsCarouselSlideImage = ImgHTMLAttributes<HTMLImageElement> & {\n key: string;\n};\n\nexport type HighlightsCarouselSlide = {\n /**\n * heder in info section\n */\n infoTitle: string;\n /**\n * Timeframe subtitle in info section\n */\n infoTimeframe: string;\n /**\n * text subtitle in info section\n */\n infoSubtitle?: string;\n /**\n * text in info section\n */\n infoText?: string;\n /**\n * additional info section\n */\n additionalInfo?: string;\n /**\n * Link in info section\n */\n links: EditorialLink[];\n /**\n * Slide image\n */\n image: HighlightsCarouselSlideImage;\n /**\n * Params for Timer component\n */\n timerParams?: IntegratedTimerProps;\n};\n\nexport interface IHighlightsCarouselProps {\n /**\n * Carousel title\n */\n carouselTitle?: string;\n /**\n * Logo element\n */\n logo?: ReactElement<ILogosProps> | null;\n /**\n * slides to be displayed in the carousel\n */\n slides: HighlightsCarouselSlide[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IHighlightsCoreCarouselProps extends Omit<IHighlightsCarouselProps, 'logo'> {}\nexport interface IHighlightsCinemaCarouselProps extends Omit<IHighlightsCarouselProps, 'logo'> {\n /**\n * Renders logo or not\n */\n logo: boolean;\n}\nexport interface IHighlightsStreamCarouselProps extends Omit<IHighlightsCarouselProps, 'logo'> {\n /**\n * Renders logo or not\n */\n logo: boolean;\n}\n","/* eslint-disable no-shadow */\nimport { ReactElement } from 'react';\nimport { StyledProps } from 'styled-components';\n\nexport enum AspectRatio {\n '1:1' = '1 / 1',\n '3:4' = '3 / 4',\n '4:3' = '4 / 3',\n '3:2' = '3 / 2',\n '16:9' = '16 / 9',\n}\n\nexport enum AspectRatioLegacy {\n '1 / 1' = '100',\n '3 / 4' = '133',\n '4 / 3' = '75',\n '3 / 2' = '66.67',\n '16 / 9' = '56.25',\n}\n\nexport enum AspectRatioWidth {\n '1 / 1' = '1',\n '3 / 4' = '0.75',\n '4 / 3' = '1.33',\n '3 / 2' = '1.5',\n '16 / 9' = '1.78',\n}\n\nexport interface IImageAspectRatioWrapperProps {\n /**\n * Aspect ratio of the contained image\n */\n aspectRatio?: AspectRatio;\n}\n\nexport interface IImageWithCaptionProps {\n /**\n * Aspect ratio of the contained image\n */\n aspectRatio?: AspectRatio;\n /**\n * Image caption or credit\n */\n caption: string;\n /**\n * Image element\n */\n children: ReactElement<HTMLImageElement>;\n}\n\nexport interface IImageWithCaptionWrapperProps extends StyledProps<{ aspectRatio?: AspectRatio; height: number }> {\n /**\n * Aspect ratio of the contained image\n */\n aspectRatio?: AspectRatio;\n /**\n * Height of the wrapper\n */\n height: number;\n}\n","// eslint-disable-next-line no-shadow\nexport enum TickboxMode {\n Dark = 'dark',\n Light = 'light',\n}\n\nexport interface ITickboxProps {\n /**\n * The text of tickbox\n */\n children: string;\n /**\n * Tickbox is checked or not initially\n */\n checked?: boolean;\n /**\n * Mode to determine colors of text and checkmark\n */\n mode?: TickboxMode;\n /**\n * Use a white background and black checkmark for the tickbox,\n * regardless of mode?\n * PREFERRED in new components, but not default\n */\n whiteBox?: boolean;\n /**\n * Callback called when tickbox change\n */\n onChange?: (checked: boolean) => void;\n /**\n * Data label for tickbox\n */\n dataLabel?: string;\n /**\n * Element is disabled\n */\n disabled?: boolean;\n /**\n * Error message, default is undefined. To show the tickbox\n * in an error state without any text, pass in an empty string.\n */\n error?: string;\n}\n\nexport interface TickboxLabelProps {\n /**\n * Dark mode or not\n */\n dark: boolean;\n /**\n * Element is disabled\n */\n disabled?: boolean;\n}\n\nexport interface TickboxInputProps {\n /**\n * Dark mode or not\n */\n dark: boolean;\n /**\n * Use a white background for the tickbox (regardless of mode)\n */\n whiteBox?: boolean;\n /**\n * Element is disabled\n */\n disabled?: boolean;\n}\n\nexport interface TickboxCheckmarkProps {\n /**\n * Dark mode or not\n */\n dark: boolean;\n /**\n * Element is disabled\n */\n disabled?: boolean;\n /**\n * Display the border of the tickbox in errorstate style\n */\n error?: boolean;\n}\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable no-shadow */\nimport { ReactNode, AnchorHTMLAttributes, MouseEventHandler } from 'react';\nimport { IconNameType, DirectionType } from './iconTypes';\nimport { Colors } from './types';\n\nexport enum ButtonType {\n Primary = 'Primary',\n Secondary = 'Secondary',\n Tertiary = 'Tertiary',\n}\n\nexport interface IButtonProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n children: ReactNode;\n /**\n * Function to be called when a button is clicked\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n /**\n * Name of the icon to be used in the button\n */\n iconName?: IconNameType;\n /**\n * Direction of the icon used in the button\n */\n iconDirection?: DirectionType;\n /**\n * ClassName for the icon to be used in the button\n */\n iconClassName?: string;\n /**\n * Color of text and icon\n */\n color?: Colors;\n}\n\nexport interface IPrimaryButtonProps extends IButtonProps {\n /**\n * Button background color\n */\n bgColor?: Colors;\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\nexport interface IAuxiliaryButtonProps extends IButtonProps {\n /**\n * Button background color\n */\n bgColor?: Colors;\n /**\n * Function to be called when a button is clicked\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n}\n\nexport interface ITertiaryButtonProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * Color of text and icon\n */\n color?: Colors;\n /**\n * Function to be called when a button is clicked\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n children: ReactNode;\n}\n\nexport interface IRotatorButtonsProps {\n /**\n * Set available Prev button\n */\n availablePrev?: boolean;\n /**\n * Set available Next button\n */\n availableNext?: boolean;\n /**\n * Function to be called when a button is clicked\n */\n onClickPrev?: () => void;\n /**\n * Function to be called when a button is clicked\n */\n onClickNext?: () => void;\n}\n","/* eslint-disable no-shadow */\nimport { DirectionType, IconNameType } from './iconTypes';\nimport { LinkTarget } from './types';\n\nexport enum IInformationCtaVariant {\n Primary = 'Primary',\n Secondary = 'Secondary',\n Tertiary = 'Tertiary',\n TextLink = 'TextLink',\n}\n\nexport enum IInformationCtaTheme {\n Cinema = 'Cinema',\n Core = 'Core',\n Stream = 'Stream',\n}\n\nexport enum IInformationTitleVariant {\n Header = 'Header',\n AltHeader = 'AltHeader',\n}\n\nexport enum IInformationBackgroundColour {\n Cinema = 'cinema',\n Core = 'core',\n Stream = 'stream',\n White = 'white',\n}\n\nexport type TitleTextSize = 3 | 4 | 5 | 6;\n\nexport interface IInformationCTAProps {\n /**\n * Text to display on the CTA\n */\n text: string;\n /**\n * Link for the CTA\n */\n link: string;\n /**\n * Style of the CTA. Choices are \"Primary\" (solid button background), \"Secondary\" (transparent button background)\n * or \"Tertiary\" (text only)\n */\n variant?: IInformationCtaVariant;\n /**\n * Theme to use for the CTA. Choices are \"Core\" (red), \"Stream\" (blue), or \"Cinema\" (black)\n */\n theme?: IInformationCtaTheme;\n /**\n * Flag to decide whether to adjust the CTA colours for display on coloured backgrounds\n */\n infoThemed: boolean;\n /**\n * Name of the icon to be used in the button\n */\n iconName?: IconNameType;\n /**\n * Direction of the icon used in the button\n */\n iconDirection?: DirectionType;\n /**\n * Attribute to specify where to open the link\n */\n target?: LinkTarget;\n}\n\nexport interface IInformationTitleProps {\n /**\n * Title text to display\n */\n text: string;\n /**\n * Title typography type. Choices are Heading or AltHeader\n */\n variant: IInformationTitleVariant;\n /**\n * The size of the title text\n */\n textSize: TitleTextSize;\n}\n\nexport interface IInformationProps {\n /**\n * Main body text to display in the Information Component\n */\n body: string;\n /**\n * Optional CTA to display underneath the body text\n */\n cta?: IInformationCTAProps;\n /**\n * Title options for the component\n */\n title: IInformationTitleProps;\n /**\n * Background Colour. Choices: None, Core, Cinema, Stream\n */\n background?: IInformationBackgroundColour;\n}\n","/* eslint-disable max-len */\n/* eslint-disable react/no-unknown-property */\nimport React, { FunctionComponent } from 'react';\nimport { ILogosProps, Colors } from '../../../types/types';\nimport { BadgeWrapper } from './Badge.style';\n\nconst StreamBadge: FunctionComponent<ILogosProps> = ({\n fillColor = Colors.White,\n align = 'center',\n invert = false,\n}) => {\n const colour = invert ? Colors.Black : fillColor;\n return (\n <BadgeWrapper\n fillColor={colour}\n width=\"100%\"\n height=\"100%\"\n viewBox=\"110 450 865 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Royal Ballet & Opera - Stream\"\n >\n <g>\n <path\n d=\"M416.81,485.21c0-9.38-6.6-14.94-18.59-14.94h-23.1v60.79h22.84c13.2,0,20.58-7.12,20.58-17.97,0-7.3-4.86-13.11-13.46-14.07,7.9-1.13,11.73-7.47,11.73-13.8ZM389.28,481.3h5.47c5.47,0,7.64,2.69,7.64,6.51s-2.17,6.51-7.73,6.51h-5.38v-13.03ZM395.79,519.59h-6.51v-14.59h6.42c4.95,0,8.43,2.69,8.43,7.29s-3.39,7.29-8.34,7.29Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M435.74,518.9h19.19l3.73,12.16h14.76l-20.67-60.79h-14.85l-20.67,60.79h14.76l3.73-12.16ZM445.29,487.55l5.82,18.85h-11.64l5.82-18.85Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M774.06,500.66c0-18.15-13.89-31.7-32.56-31.7s-32.56,13.54-32.56,31.7,13.98,31.7,32.56,31.7,32.56-13.55,32.56-31.7ZM723.44,500.66c0-10.59,7.81-18.58,18.06-18.58s18.06,7.99,18.06,18.58-7.73,18.58-18.06,18.58-18.06-7.99-18.06-18.58Z\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"511.38 470.27 511.38 531.06 542.64 531.06 542.64 518.38 525.53 518.38 525.53 470.27 511.38 470.27\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"610.2 531.06 610.2 482.95 623.83 482.95 623.83 470.27 582.41 470.27 582.41 482.95 596.04 482.95 596.04 531.06 610.2 531.06\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"578.59 482.95 578.59 470.27 546.46 470.27 546.46 531.06 578.59 531.06 578.59 518.38 560.61 518.38 560.61 506.74 575.03 506.74 575.03 494.06 560.61 494.06 560.61 482.95 578.59 482.95\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"475.86 470.27 475.86 531.06 507.12 531.06 507.12 518.38 490.01 518.38 490.01 470.27 475.86 470.27\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"324.76 470.27 324.76 531.06 356.02 531.06 356.02 518.38 338.92 518.38 338.92 470.27 324.76 470.27\"\n stroke-width=\"0\"\n />\n <path\n d=\"M800.98,508.48c12.33,0,20.58-7.99,20.58-19.11s-8.25-19.1-20.58-19.1h-23.19v60.79h14.16v-22.58h9.03ZM791.95,481.91h6.42c6.25,0,8.68,3.21,8.68,7.47s-2.43,7.56-8.68,7.56h-6.42v-15.02Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M923.95,470.27l-19.45,57.31-11.03-20.75c7.12-2.95,11.46-9.38,11.46-17.45,0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.15v-22.58h3.56l11.55,22.58h27.62l3.73-12.16h19.19l3.74,12.16h14.76l-20.67-60.79h-14.85ZM881.74,496.93h-6.43v-15.02h6.43c6.25,0,8.68,3.21,8.68,7.47s-2.43,7.56-8.68,7.56ZM925.51,506.39l5.82-18.85,5.82,18.85h-11.64Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M636.25,511c0,12.24,9.38,21.36,22.49,21.36,7.21,0,13.2-2.78,18.24-7.38l4.86,6.08h17.8l-13.37-16.59,9.81-14.33-10.85-7.47-7.64,11.12-16.85-20.84h18.93v-12.68h-36.64v12.68l6.68,8.25c-8.94,4.34-13.46,11.46-13.46,19.8ZM657.61,501.01l11.29,14.07c-2.26,2.34-5.21,4.17-9.03,4.17-5.64,0-9.21-4-9.21-8.77,0-4.26,2.87-7.81,6.95-9.46Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M176.87,529.41c-9.38-5.9-17.02-14.16-22.06-23.01,6.6-3.04,10.6-9.29,10.6-17.02,0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.15v-22.84h5.13c6.16,12.68,16.06,24.49,27.87,31.78h0l8.08-10.59ZM142.23,496.93h-6.43v-15.02h6.43c6.25,0,8.68,3.21,8.68,7.47s-2.43,7.56-8.68,7.56Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M284.56,518.9h19.19l3.74,12.16h14.76l-20.67-60.79h-14.85l-20.67,60.79h14.76l3.73-12.16ZM294.11,487.55l5.82,18.85h-11.64l5.82-18.85Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M201.1,468.97c-18.58,0-32.56,13.54-32.56,31.7s13.98,31.7,32.56,31.7,32.56-13.55,32.56-31.7-13.89-31.7-32.56-31.7ZM201.1,519.25c-10.25,0-18.06-7.99-18.06-18.58s7.81-18.58,18.06-18.58,18.06,7.99,18.06,18.58-7.73,18.58-18.06,18.58Z\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"254.42 490.41 242.44 470.27 226.37 470.27 247.3 504.92 247.3 531.06 261.46 531.06 261.46 504.74 282.3 470.27 266.32 470.27 254.42 490.41\"\n stroke-width=\"0\"\n />\n <polygon\n points=\"857.34 482.95 857.34 470.27 825.21 470.27 825.21 531.06 857.34 531.06 857.34 518.38 839.36 518.38 839.36 506.74 853.78 506.74 853.78 494.06 839.36 494.06 839.36 482.95 857.34 482.95\"\n stroke-width=\"0\"\n />\n </g>\n {align === 'left' && (\n <g>\n <path\n d=\"M151.07,588.98c.36-1.96.53-3.12.53-5.25,0-6.14-4.54-9.88-10.68-9.88s-10.68,3.74-10.68,9.88c0,7.83,8.19,9.17,15.22,11.84,7.21,2.76,16.02,6.41,16.02,17.98s-9.08,18.16-20.47,18.16-20.47-6.85-20.47-18.16c0-2.58.53-4.54,1.07-5.87l7.92-.45c-.62,2.05-.98,4.01-.98,6.32,0,7.03,5.43,11.04,12.46,11.04s12.46-4,12.46-11.04c0-8.19-8.99-10.24-14.95-12.37-8.37-3.03-16.29-6.59-16.29-17.62s8.63-16.82,18.69-16.82,18.69,6.32,18.69,16.82c0,1.69-.27,3.74-.62,4.9l-7.92.53Z\"\n stroke-width=\"0\"\n />\n <path d=\"M184,630.37v-55.18h-16.91v-7.12h41.83v7.12h-16.91v55.18h-8.01Z\" stroke-width=\"0\" />\n <path\n d=\"M249.5,630.37c-1.69-2.58-1.33-11.04-1.6-16.2-.18-4.18-.98-6.32-2.49-7.83-1.6-1.51-4.18-2.22-7.48-2.22h-10.68v26.26h-8.01v-62.3h20.56c6.59,0,10.68,1.87,13.71,4.89,3.2,3.2,5.34,7.74,5.34,12.91,0,7.3-5.16,14.42-14.15,15.04,6.41.71,10.5,4.9,11.04,12.82l.36,5.52c.27,3.74.36,6.14.8,7.92.27,1.07.8,2.31,1.96,2.85v.36h-9.35ZM239.09,596.99c4.63,0,7.03-1.07,8.72-2.85,1.87-1.96,3.03-4.9,3.03-8.01s-1.16-5.96-3.03-7.92c-1.69-1.78-4.09-3.03-8.72-3.03h-11.84v21.81h11.84Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M271.93,630.37v-62.3h34.27v7.12h-26.26v20.03h19.14v7.12h-19.14v20.92h27.15v7.12h-35.16Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M353.01,630.37l-4.54-14.24h-22.7l-4.54,14.24h-8.1l20.03-62.3h8.01l20.03,62.3h-8.19ZM338.5,584.53c-.89-2.76-1.16-3.92-1.42-5.16-.27,1.25-.53,2.4-1.42,5.16l-7.57,24.48h18.07l-7.65-24.48Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M416.55,630.37v-37.83c0-2.22,0-4.09.09-6.23-.8,2.58-1.25,3.92-2.23,6.23l-15.75,38.72h-1.78l-15.75-38.72c-.98-2.31-1.42-3.65-2.23-6.23.09,2.14.09,4.01.09,6.23v37.83h-7.92v-62.3h8.01l16.11,39.07c1.25,3.03,1.69,4.18,2.67,6.76.98-2.58,1.42-3.74,2.67-6.76l15.93-39.07h8.01v62.3h-7.92Z\"\n stroke-width=\"0\"\n />\n </g>\n )}\n {align === 'center' && (\n <g>\n <path\n d=\"M401.56,585.29c.36-1.96.53-3.12.53-5.25,0-6.14-4.54-9.88-10.68-9.88s-10.68,3.74-10.68,9.88c0,7.83,8.19,9.17,15.22,11.84,7.21,2.76,16.02,6.41,16.02,17.98s-9.08,18.16-20.47,18.16-20.47-6.85-20.47-18.16c0-2.58.53-4.54,1.07-5.87l7.92-.45c-.62,2.05-.98,4.01-.98,6.32,0,7.03,5.43,11.04,12.46,11.04s12.46-4,12.46-11.04c0-8.19-8.99-10.24-14.95-12.37-8.37-3.03-16.29-6.59-16.29-17.62s8.63-16.82,18.69-16.82,18.69,6.32,18.69,16.82c0,1.69-.27,3.74-.62,4.9l-7.92.53Z\"\n stroke-width=\"0\"\n />\n <path d=\"M434.49,626.68v-55.18h-16.91v-7.12h41.83v7.12h-16.91v55.18h-8.01Z\" stroke-width=\"0\" />\n <path\n d=\"M500,626.68c-1.69-2.58-1.33-11.04-1.6-16.2-.18-4.18-.98-6.32-2.49-7.83-1.6-1.51-4.18-2.22-7.48-2.22h-10.68v26.26h-8.01v-62.3h20.56c6.59,0,10.68,1.87,13.71,4.89,3.2,3.2,5.34,7.74,5.34,12.91,0,7.3-5.16,14.42-14.15,15.04,6.41.71,10.5,4.9,11.04,12.82l.36,5.52c.27,3.74.36,6.14.8,7.92.27,1.07.8,2.31,1.96,2.85v.36h-9.35ZM489.58,593.3c4.63,0,7.03-1.07,8.72-2.85,1.87-1.96,3.03-4.9,3.03-8.01s-1.16-5.96-3.03-7.92c-1.69-1.78-4.09-3.03-8.72-3.03h-11.84v21.81h11.84Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M522.42,626.68v-62.3h34.27v7.12h-26.26v20.03h19.14v7.12h-19.14v20.92h27.15v7.12h-35.16Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M603.5,626.68l-4.54-14.24h-22.7l-4.54,14.24h-8.1l20.03-62.3h8.01l20.03,62.3h-8.19ZM588.99,580.84c-.89-2.76-1.16-3.92-1.42-5.16-.27,1.25-.53,2.4-1.42,5.16l-7.57,24.48h18.07l-7.65-24.48Z\"\n stroke-width=\"0\"\n />\n <path\n d=\"M667.05,626.68v-37.83c0-2.22,0-4.09.09-6.23-.8,2.58-1.25,3.92-2.23,6.23l-15.75,38.72h-1.78l-15.75-38.72c-.98-2.31-1.42-3.65-2.23-6.23.09,2.14.09,4.01.09,6.23v37.83h-7.92v-62.3h8.01l16.11,39.07c1.25,3.03,1.69,4.18,2.67,6.76.98-2.58,1.42-3.74,2.67-6.76l15.93-39.07h8.01v62.3h-7.92Z\"\n stroke-width=\"0\"\n />\n </g>\n )}\n </BadgeWrapper>\n );\n};\n\nexport default StreamBadge;\n","/* eslint-disable max-len */\nimport React, { FunctionComponent } from 'react';\nimport { ILogosProps, Colors } from '../../../types/types';\nimport { BadgeWrapper } from './Badge.style';\n\nconst CinemaBadge: FunctionComponent<ILogosProps> = ({\n fillColor = Colors.White,\n align = 'center',\n invert = false,\n}) => {\n const colour = invert ? Colors.Black : fillColor;\n return (\n <BadgeWrapper\n fillColor={colour}\n width=\"100%\"\n height=\"100%\"\n viewBox=\"110 450 865 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Royal Ballet & Opera - Cinema\"\n >\n <g>\n <g>\n <g>\n <path\n d=\"M416.26,485.21c0-9.38-6.6-14.94-18.59-14.94h-23.1v60.79h22.84c13.2,0,20.58-7.12,20.58-17.97\n\t\t\t\tc0-7.3-4.86-13.11-13.46-14.07C412.43,497.88,416.26,491.54,416.26,485.21z M388.73,481.3h5.47c5.47,0,7.64,2.69,7.64,6.51\n\t\t\t\tc0,3.82-2.17,6.51-7.73,6.51h-5.38V481.3z M395.24,519.59h-6.51v-14.59h6.42c4.95,0,8.43,2.69,8.43,7.29\n\t\t\t\tC403.58,516.81,400.19,519.59,395.24,519.59z\"\n />\n <path\n d=\"M773.51,500.66c0-18.15-13.89-31.7-32.56-31.7c-18.58,0-32.56,13.54-32.56,31.7\n\t\t\t\tc0,18.15,13.98,31.7,32.56,31.7C759.61,532.36,773.51,518.81,773.51,500.66z M722.88,500.66c0-10.59,7.81-18.58,18.06-18.58\n\t\t\t\tc10.33,0,18.06,7.99,18.06,18.58c0,10.59-7.73,18.58-18.06,18.58C730.7,519.25,722.88,511.26,722.88,500.66z\"\n />\n <path\n d=\"M435.19,518.9h19.19l3.73,12.16h14.76l-20.67-60.79h-14.85l-20.67,60.79h14.76L435.19,518.9z\n\t\t\t\t M444.74,487.55l5.82,18.85h-11.64L444.74,487.55z\"\n />\n <polygon points=\"475.31,470.27 475.31,531.06 506.57,531.06 506.57,518.38 489.46,518.38 489.46,470.27\" />\n <polygon\n points=\"609.65,531.06 609.65,482.95 623.28,482.95 623.28,470.27 581.86,470.27 581.86,482.95 \n\t\t\t\t595.49,482.95 595.49,531.06\"\n />\n <polygon\n points=\"578.03,482.95 578.03,470.27 545.91,470.27 545.91,531.06 578.03,531.06 578.03,518.38 \n\t\t\t\t560.06,518.38 560.06,506.74 574.47,506.74 574.47,494.06 560.06,494.06 560.06,482.95\"\n />\n <polygon points=\"324.21,470.27 324.21,531.06 355.47,531.06 355.47,518.38 338.36,518.38 338.36,470.27\" />\n <polygon points=\"510.82,470.27 510.82,531.06 542.09,531.06 542.09,518.38 524.98,518.38 524.98,470.27\" />\n <path\n d=\"M284,518.9h19.19l3.74,12.16h14.76l-20.67-60.79h-14.85l-20.67,60.79h14.76L284,518.9z M293.55,487.55\n\t\t\t\tl5.82,18.85h-11.64L293.55,487.55z\"\n />\n <path\n d=\"M635.7,511c0,12.24,9.38,21.36,22.49,21.36c7.21,0,13.2-2.78,18.24-7.38l4.86,6.08h17.8l-13.37-16.59\n\t\t\t\tl9.81-14.33l-10.85-7.47l-7.64,11.12l-16.85-20.84h18.93v-12.68h-36.64v12.68l6.68,8.25C640.21,495.54,635.7,502.66,635.7,511z\n\t\t\t\t M657.06,501.01l11.29,14.07c-2.26,2.34-5.21,4.17-9.03,4.17c-5.64,0-9.21-4-9.21-8.77\n\t\t\t\tC650.11,506.22,652.98,502.66,657.06,501.01z\"\n />\n <path\n d=\"M176.32,529.41c-9.38-5.9-17.02-14.16-22.06-23.01c6.6-3.04,10.6-9.29,10.6-17.02\n\t\t\t\tc0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.15v-22.84h5.13c6.16,12.68,16.06,24.49,27.87,31.78h0L176.32,529.41z\n\t\t\t\t M141.67,496.93h-6.43v-15.02h6.43c6.25,0,8.68,3.21,8.68,7.47C150.36,493.72,147.93,496.93,141.67,496.93z\"\n />\n <path\n d=\"M923.39,470.27l-19.45,57.31l-11.03-20.75c7.12-2.95,11.46-9.38,11.46-17.45\n\t\t\t\tc0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.15v-22.58h3.56l11.55,22.58h27.62l3.73-12.16h19.19l3.74,12.16h14.76\n\t\t\t\tl-20.67-60.79H923.39z M881.19,496.93h-6.43v-15.02h6.43c6.25,0,8.68,3.21,8.68,7.47C889.87,493.72,887.44,496.93,881.19,496.93z\n\t\t\t\t M924.95,506.39l5.82-18.85l5.82,18.85H924.95z\"\n />\n <path\n d=\"M800.43,508.48c12.33,0,20.58-7.99,20.58-19.11c0-11.03-8.25-19.1-20.58-19.1h-23.19v60.79h14.16v-22.58\n\t\t\t\tH800.43z M791.4,481.91h6.42c6.25,0,8.68,3.21,8.68,7.47c0,4.34-2.43,7.56-8.68,7.56h-6.42V481.91z\"\n />\n <path\n d=\"M200.55,468.97c-18.58,0-32.56,13.54-32.56,31.7c0,18.15,13.98,31.7,32.56,31.7\n\t\t\t\tc18.67,0,32.56-13.55,32.56-31.7C233.11,482.51,219.22,468.97,200.55,468.97z M200.55,519.25c-10.25,0-18.06-7.99-18.06-18.58\n\t\t\t\tc0-10.59,7.81-18.58,18.06-18.58c10.33,0,18.06,7.99,18.06,18.58C218.61,511.26,210.88,519.25,200.55,519.25z\"\n />\n <polygon\n points=\"253.87,490.41 241.89,470.27 225.82,470.27 246.75,504.92 246.75,531.06 260.9,531.06 \n\t\t\t\t260.9,504.74 281.74,470.27 265.76,470.27\"\n />\n <polygon\n points=\"856.79,482.95 856.79,470.27 824.66,470.27 824.66,531.06 856.79,531.06 856.79,518.38 \n\t\t\t\t838.81,518.38 838.81,506.74 853.23,506.74 853.23,494.06 838.81,494.06 838.81,482.95\"\n />\n </g>\n </g>\n {align === 'left' && (\n <g>\n <path d=\"M121.69,630.37v-62.3h8.01v62.3H121.69z\" />\n <path\n d=\"M179.27,630.37l-22.34-40.85c-1.33-2.4-2.58-4.81-3.2-6.32c0.09,1.51,0.18,4.09,0.18,6.32v40.85h-8.01v-62.3h8.01\n\t\t\tl22.34,40.85c1.33,2.4,2.58,4.81,3.2,6.32c-0.09-1.51-0.18-4.09-0.18-6.32v-40.85h8.01v62.3H179.27z\"\n />\n <path\n d=\"M266.85,608.12c0,5.79-1.25,10.86-3.92,14.86c-3.83,5.88-9.97,8.72-17.18,8.72c-8.1,0-13.8-3.56-17.44-8.63\n\t\t\tc-4.81-6.59-6.41-15.75-6.41-23.85c0.09-14.86,5.79-32.49,23.94-32.49c11.48,0,19.23,8.63,19.23,19.05c0,1.07-0.09,2.49-0.36,3.65\n\t\t\tl-7.92,0.45c0.18-0.98,0.27-2.14,0.27-3.38c0-6.85-4.01-12.64-11.21-12.64c-12.37,0-15.93,14.6-15.93,25.37\n\t\t\tc0,5.16,0.8,12.28,3.47,17.36c2.49,4.72,6.68,8.01,12.37,8.01c9.43,0,12.82-7.48,13.17-16.91L266.85,608.12z\"\n />\n <path d=\"M278.95,630.37v-62.3h8.01v62.3H278.95z\" />\n <path\n d=\"M336.53,630.37l-22.34-40.85c-1.33-2.4-2.58-4.81-3.2-6.32c0.09,1.51,0.18,4.09,0.18,6.32v40.85h-8.01v-62.3h8.01\n\t\t\tl22.34,40.85c1.34,2.4,2.58,4.81,3.2,6.32c-0.09-1.51-0.18-4.09-0.18-6.32v-40.85h8.01v62.3H336.53z\"\n />\n <path d=\"M360.74,630.37v-62.3h34.27v7.12h-26.26v20.03h19.14v7.12h-19.14v20.92h27.15v7.12H360.74z\" />\n <path\n d=\"M453.75,630.37v-37.83c0-2.22,0-4.09,0.09-6.23c-0.8,2.58-1.25,3.92-2.23,6.23l-15.75,38.72h-1.78l-15.75-38.72\n\t\t\tc-0.98-2.31-1.42-3.65-2.23-6.23c0.09,2.14,0.09,4.01,0.09,6.23v37.83h-7.92v-62.3h8.01l16.11,39.07\n\t\t\tc1.25,3.03,1.69,4.18,2.67,6.76c0.98-2.58,1.42-3.74,2.67-6.76l15.93-39.07h8.01v62.3H453.75z\"\n />\n <path\n d=\"M511.42,630.37l-4.54-14.24h-22.7l-4.54,14.24h-8.1l20.03-62.3h8.01l20.03,62.3H511.42z M496.91,584.53\n\t\t\tc-0.89-2.76-1.16-3.92-1.42-5.16c-0.27,1.25-0.53,2.4-1.42,5.16l-7.57,24.48h18.07L496.91,584.53z\"\n />\n <path\n d=\"M555.38,588.98c0.36-1.96,0.53-3.12,0.53-5.25c0-6.14-4.54-9.88-10.68-9.88s-10.68,3.74-10.68,9.88\n\t\t\tc0,7.83,8.19,9.17,15.22,11.84c7.21,2.76,16.02,6.41,16.02,17.98c0,11.3-9.08,18.16-20.47,18.16s-20.47-6.85-20.47-18.16\n\t\t\tc0-2.58,0.53-4.54,1.07-5.87l7.92-0.45c-0.62,2.05-0.98,4.01-0.98,6.32c0,7.03,5.43,11.04,12.46,11.04s12.46-4,12.46-11.04\n\t\t\tc0-8.19-8.99-10.24-14.95-12.37c-8.37-3.03-16.29-6.59-16.29-17.62c0-10.5,8.63-16.82,18.69-16.82s18.69,6.32,18.69,16.82\n\t\t\tc0,1.69-0.27,3.74-0.62,4.9L555.38,588.98z\"\n />\n </g>\n )}\n {align === 'center' && (\n <g>\n <path d=\"M319.77,626.67v-62.3h8.01v62.3H319.77z\" />\n <path\n d=\"M377.35,626.67l-22.34-40.85c-1.33-2.4-2.58-4.81-3.2-6.32c0.09,1.51,0.18,4.09,0.18,6.32v40.85h-8.01v-62.3h8.01\n\t\t\tl22.34,40.85c1.33,2.4,2.58,4.81,3.2,6.32c-0.09-1.51-0.18-4.09-0.18-6.32v-40.85h8.01v62.3H377.35z\"\n />\n <path\n d=\"M464.92,604.42c0,5.79-1.25,10.86-3.92,14.86c-3.83,5.88-9.97,8.72-17.18,8.72c-8.1,0-13.8-3.56-17.45-8.63\n\t\t\tc-4.81-6.59-6.41-15.75-6.41-23.85c0.09-14.86,5.79-32.49,23.94-32.49c11.48,0,19.22,8.63,19.22,19.05c0,1.07-0.09,2.49-0.36,3.65\n\t\t\tl-7.92,0.45c0.18-0.98,0.27-2.14,0.27-3.38c0-6.85-4-12.64-11.21-12.64c-12.37,0-15.93,14.6-15.93,25.37\n\t\t\tc0,5.16,0.8,12.28,3.47,17.36c2.49,4.72,6.68,8.01,12.37,8.01c9.43,0,12.82-7.48,13.17-16.91L464.92,604.42z\"\n />\n <path d=\"M477.03,626.67v-62.3h8.01v62.3H477.03z\" />\n <path\n d=\"M534.61,626.67l-22.34-40.85c-1.33-2.4-2.58-4.81-3.2-6.32c0.09,1.51,0.18,4.09,0.18,6.32v40.85h-8.01v-62.3h8.01\n\t\t\tl22.34,40.85c1.33,2.4,2.58,4.81,3.2,6.32c-0.09-1.51-0.18-4.09-0.18-6.32v-40.85h8.01v62.3H534.61z\"\n />\n <path d=\"M558.81,626.67v-62.3h34.27v7.12h-26.26v20.03h19.14v7.12h-19.14v20.92h27.15v7.12H558.81z\" />\n <path\n d=\"M651.82,626.67v-37.83c0-2.22,0-4.09,0.09-6.23c-0.8,2.58-1.25,3.92-2.23,6.23l-15.75,38.72h-1.78l-15.75-38.72\n\t\t\tc-0.98-2.31-1.42-3.65-2.23-6.23c0.09,2.14,0.09,4.01,0.09,6.23v37.83h-7.92v-62.3h8.01l16.11,39.07\n\t\t\tc1.25,3.03,1.69,4.18,2.67,6.76c0.98-2.58,1.42-3.74,2.67-6.76l15.93-39.07h8.01v62.3H651.82z\"\n />\n <path\n d=\"M709.49,626.67l-4.54-14.24h-22.7l-4.54,14.24h-8.1l20.03-62.3h8.01l20.03,62.3H709.49z M694.98,580.84\n\t\t\tc-0.89-2.76-1.16-3.92-1.42-5.16c-0.27,1.25-0.53,2.4-1.42,5.16l-7.57,24.48h18.07L694.98,580.84z\"\n />\n <path\n d=\"M753.46,585.29c0.36-1.96,0.53-3.12,0.53-5.25c0-6.14-4.54-9.88-10.68-9.88c-6.14,0-10.68,3.74-10.68,9.88\n\t\t\tc0,7.83,8.19,9.17,15.22,11.84c7.21,2.76,16.02,6.41,16.02,17.98c0,11.3-9.08,18.16-20.47,18.16s-20.47-6.85-20.47-18.16\n\t\t\tc0-2.58,0.53-4.54,1.07-5.87l7.92-0.45c-0.62,2.05-0.98,4.01-0.98,6.32c0,7.03,5.43,11.04,12.46,11.04c7.03,0,12.46-4,12.46-11.04\n\t\t\tc0-8.19-8.99-10.24-14.95-12.37c-8.37-3.03-16.29-6.59-16.29-17.62c0-10.5,8.63-16.82,18.69-16.82S762,569.36,762,579.86\n\t\t\tc0,1.69-0.27,3.74-0.62,4.9L753.46,585.29z\"\n />\n </g>\n )}\n </g>\n </BadgeWrapper>\n );\n};\n\nexport default CinemaBadge;\n","export const breakpoints = {\n xs: 320,\n sm: 700,\n md: 1140,\n ml: 1280,\n lg: 1400,\n};\n\nexport const devices = {\n smallMobile: `only screen and (max-width: ${breakpoints.xs - 1}px)`,\n mobile: `only screen and (max-width: ${breakpoints.sm - 1}px)`,\n tablet: `only screen and (max-width: ${breakpoints.md - 1}px) and (min-width: ${breakpoints.sm}px)`,\n mobileAndTablet: `only screen and (max-width: ${breakpoints.md - 1}px)`,\n desktop: `only screen and (max-width: ${breakpoints.lg - 1}px) and (min-width: ${breakpoints.md}px)`,\n smallDesktop: `only screen and (max-width: ${breakpoints.ml - 1}px) and (min-width: ${breakpoints.md}px)`,\n largeDesktop: `only screen and (min-width: ${breakpoints.lg}px)`,\n};\n","import styled from 'styled-components';\nimport { IButtonProps } from '../../../types/buttonTypes';\nimport { devices } from '../../../styles/viewports';\n\nconst ButtonWrapper = styled.a<IButtonProps>`\n padding: ${({ iconName }) => (iconName ? 'var(--button-padding-y-icon)' : 'var(--button-padding-y)')}\n var(--button-padding-x);\n height: var(--button-height);\n font-family: var(--font-family-buttons);\n font-size: var(--button-font-size);\n font-weight: var(--button-font-weight);\n color: var(--base-color-${({ color }) => color});\n line-height: var(--button-line-height);\n width: fit-content;\n border-style: solid;\n border-width: 1px;\n cursor: pointer;\n text-decoration: none;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n\n @media ${devices.mobile} {\n & {\n width: 100%;\n }\n }\n`;\n\nexport default ButtonWrapper;\n","import styled from 'styled-components';\n\nconst ButtonIconWrapper = styled.span`\n width: var(--button-icon-width);\n height: var(--button-icon-height);\n margin-right: var(--button-icon-margin);\n display: inline-block;\n`;\n\nexport default ButtonIconWrapper;\n","import React, { FunctionComponent } from 'react';\nimport ButtonWrapper from './Button.style';\nimport ButtonIconWrapper from './ButtonIconWrapper.style';\nimport { Icon } from '../Icons';\nimport { IButtonProps } from '../../../types/buttonTypes';\n\nconst Button: FunctionComponent<IButtonProps> = ({\n children,\n iconName,\n iconDirection,\n iconClassName,\n color,\n ...rest\n}) => {\n const truncatedString = (children as string).substring(0, 30);\n return (\n <ButtonWrapper {...rest} color={color} iconName={iconName}>\n {iconName ? (\n <ButtonIconWrapper data-testid=\"button-icon\" className={iconClassName}>\n <Icon iconName={iconName} direction={iconDirection} color={color} />\n </ButtonIconWrapper>\n ) : null}\n {truncatedString}\n </ButtonWrapper>\n );\n};\n\nexport default Button;\n","import styled from 'styled-components';\nimport Button from '../Button';\nimport { IPrimaryButtonProps } from '../../../../types/buttonTypes';\n\nconst PrimaryButtonWrapper = styled(Button)<IPrimaryButtonProps>`\n background-color: ${({ bgColor, theme }) => (bgColor ? `var(--base-color-${bgColor})` : theme?.colors?.primary)};\n border-color: ${({ bgColor, theme }) => (bgColor ? `var(--base-color-${bgColor})` : theme?.colors?.primary)};\n pointer-events: ${({ disabled }) => (disabled ? 'none' : 'auto')};\n`;\n\nexport default PrimaryButtonWrapper;\n\nexport const AriaDescription = styled.span`\n position: absolute;\n left: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n`;\n","import React, { FunctionComponent } from 'react';\nimport PrimaryButtonWrapper, { AriaDescription } from './PrimaryButtonWrapper.style';\nimport { Colors } from '../../../../types';\nimport { IPrimaryButtonProps } from '../../../../types/buttonTypes';\n\nconst PrimaryButton: FunctionComponent<IPrimaryButtonProps> = ({ children, disabled, ...props }) => {\n const description = 'This button is currently disabled';\n return disabled ? (\n <>\n <AriaDescription id=\"description\">{description}</AriaDescription>\n <PrimaryButtonWrapper\n color={Colors.Black}\n bgColor={Colors.MidGrey}\n disabled\n aria-disabled=\"true\"\n role=\"button\"\n aria-describedby={description}\n {...props}\n >\n {children}\n </PrimaryButtonWrapper>\n </>\n ) : (\n <PrimaryButtonWrapper color={Colors.White} {...props}>\n {children}\n </PrimaryButtonWrapper>\n );\n};\n\nexport default PrimaryButton;\n","import styled from 'styled-components';\nimport Button from '../Button';\nimport { IButtonProps } from '../../../../types/buttonTypes';\n\nconst PrimaryButtonWrapper = styled(Button)<IButtonProps>`\n background-color: var(--base-color-transparent);\n border-color: ${({ color, theme }) => (color ? `var(--base-color-${color})` : theme.colors.primary)};\n`;\n\nexport default PrimaryButtonWrapper;\n","import React, { FunctionComponent } from 'react';\nimport SecondaryButtonWrapper from './SecondaryButtonWrapper.style';\nimport { Colors } from '../../../../types';\nimport { IButtonProps } from '../../../../types/buttonTypes';\n\nconst SecondaryButton: FunctionComponent<IButtonProps> = ({ children, ...props }) => {\n return (\n <SecondaryButtonWrapper color={Colors.Primary} {...props}>\n {children}\n </SecondaryButtonWrapper>\n );\n};\n\nexport default SecondaryButton;\n","import styled from 'styled-components';\nimport { ITertiaryButtonProps } from '../../../../types/buttonTypes';\n\nconst TertiaryButtonWrapper = styled.a<ITertiaryButtonProps>`\n padding: 0;\n height: var(--button-height);\n font-family: var(--font-family-buttons);\n font-size: var(--button-font-size);\n font-weight: var(--button-font-weight);\n color: var(--base-color-${({ color }) => color});\n width: fit-content;\n background: none;\n border-style: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n text-decoration: none;\n box-sizing: border-box;\n`;\n\nconst TertiaryIconWrapper = styled.span`\n width: var(--button-icon-width);\n min-width: 20px;\n height: var(--button-icon-height);\n margin-left: var(--button-icon-margin);\n display: inline-block;\n`;\n\nexport { TertiaryIconWrapper, TertiaryButtonWrapper };\n","import React, { FunctionComponent } from 'react';\nimport { TertiaryButtonWrapper, TertiaryIconWrapper } from './TertiaryButton.style';\nimport { Icon } from '../../Icons';\nimport { IButtonProps } from '../../../../types/buttonTypes';\n\nconst Button: FunctionComponent<IButtonProps> = ({ children, color, ...rest }) => {\n const truncatedString = (children as string).substring(0, 100);\n return (\n <TertiaryButtonWrapper {...rest} color={color}>\n {truncatedString}\n <TertiaryIconWrapper data-testid=\"tertiary-icon\">\n <Icon iconName=\"Arrow\" color={color} />\n </TertiaryIconWrapper>\n </TertiaryButtonWrapper>\n );\n};\n\nexport default Button;\n","const zLevels = [\n 'base',\n 'content',\n 'contentOverlay',\n 'sponsorship',\n 'anchor',\n 'searchOverlay',\n 'navigation',\n 'search',\n 'menu',\n 'overlay',\n 'popup',\n];\n\nconst zIndexes: { [level: string]: number } = {};\n\nzLevels.forEach((name, index) => {\n zIndexes[name] = index;\n});\n\nexport default zIndexes;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IDropdowItemProps, IDropdownProps } from '../../../types/types';\nimport zIndexes from '../../../styles/zIndexes';\n\nexport const TabContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n`;\n\nexport const OptionItem = styled.a<IDropdowItemProps>`\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-black);\n text-decoration: none;\n cursor: pointer;\n text-transform: uppercase;\n\n :hover,\n :focus {\n color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n`;\n\nexport const OptionsContainer = styled.div<IDropdownProps>`\n background-color: var(--base-color-white);\n border: 1px solid var(--base-color-light-grey);\n border-top-color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n display: flex;\n flex-direction: column;\n row-gap: var(--navigation-small-gap);\n padding: var(--navigation-middle-gap);\n position: absolute;\n top: 24px;\n min-width: calc(100% - calc(2 * var(--navigation-middle-gap)));\n max-width: max-content;\n white-space: nowrap;\n z-index: ${zIndexes.menu};\n\n ${(props) => {\n if (props.withIcon === 'none') {\n return `\n top: 21px;\n `;\n }\n return ``;\n }}\n\n @media ${devices.mobileAndTablet} {\n padding-left: 0px;\n padding-bottom: 0px;\n row-gap: var(--navigation-large-gap);\n border: 0;\n background-color: none;\n\n ${(props) => {\n if (props.withOptionsInMobile) {\n return `\n position: relative;\n top: 0px;\n `;\n }\n return `\n display: none;\n `;\n }}\n }\n`;\n","import * as React from 'react';\nimport { LogoWrapper, LogoLeftSide, LogoLeftSideRow, LogoRightSide } from './styled';\nimport { Colors } from '../../../types';\n\n// eslint-disable-next-line no-shadow\nexport enum TextLogoProduct {\n Stream = 'STREAM',\n Cinema = 'CINEMA',\n}\n\nexport interface ITextLogoProps {\n productName: TextLogoProduct;\n color: Colors;\n fontSize?: number;\n}\n\nconst Logo = ({ color, productName, fontSize = 12 }: ITextLogoProps): React.ReactElement => (\n <LogoWrapper color={color} fontSize={fontSize}>\n <LogoLeftSide color={color}>\n <LogoLeftSideRow>ROYAL</LogoLeftSideRow>\n <LogoLeftSideRow>OPERA</LogoLeftSideRow>\n <LogoLeftSideRow>HOUSE</LogoLeftSideRow>\n </LogoLeftSide>\n <LogoRightSide>{productName}</LogoRightSide>\n </LogoWrapper>\n);\n\nexport default Logo;\n","import styled from 'styled-components';\nimport { IControlledDropdownHeaderProps } from '../../../types/types';\n\nexport const ControlledDropdownWrapper = styled.div`\n position: relative;\n width: fit-content;\n`;\n\nexport const ControlledDropdownHeaderContainer = styled.span<IControlledDropdownHeaderProps>`\n display: flex;\n gap: 6px;\n border-bottom: 1px solid transparent;\n height: 24px;\n line-height: 24px;\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-black);\n text-decoration: none;\n text-transform: uppercase;\n cursor: pointer;\n\n ${({ active, activeColor }) => {\n if (active) {\n return `\n & {\n border-bottom: 1px solid ${activeColor};\n color: var(--base-color-${activeColor});\n }\n && svg path {\n fill: var(--base-color-${activeColor});\n } \n `;\n }\n return '';\n }}\n`;\n\nexport const ControlledDropdownHeaderContainerLink = styled(ControlledDropdownHeaderContainer).attrs({\n as: 'a',\n})``;\n\nexport const IconWrapper = styled.span`\n width: 24px;\n height: 24px;\n`;\n","/* eslint-disable no-useless-return */\n/* eslint-disable no-else-return */\nimport React, { useCallback, useEffect, useRef, FunctionComponent } from 'react';\nimport { OptionsContainer, OptionItem } from '../Dropdown/Dropdown.style';\nimport {\n ControlledDropdownWrapper,\n ControlledDropdownHeaderContainerLink,\n ControlledDropdownHeaderContainer,\n IconWrapper,\n} from './ControlledDropdown.style';\nimport { Icon } from '../../atoms/Icons';\nimport { IControlledDropdownProps, INodeProps } from '../../../types/types';\nimport { breakpoints } from '../../../styles/viewports';\n\nconst ControlledDropdown: FunctionComponent<IControlledDropdownProps> = ({\n text,\n options,\n activeColor = 'primary',\n active,\n onClick,\n onOptionClick,\n onMouseEnter,\n onMouseLeave,\n onReset,\n onFocus,\n onBlur,\n}) => {\n const ref: INodeProps = useRef();\n\n const resetHandler = useCallback(() => onReset?.(), []);\n\n useEffect(() => {\n if (window.innerWidth > breakpoints.sm) {\n const mouseClickHandler = (e: Event) => {\n if (ref?.current?.contains(e.target)) {\n return;\n } else if (active) {\n resetHandler();\n }\n };\n document.addEventListener('click', mouseClickHandler);\n\n return () => {\n document.removeEventListener('click', mouseClickHandler);\n };\n }\n // eslint-disable-next-line consistent-return\n return;\n }, [ref, resetHandler, active]);\n\n const handleOptionKeyDown = (e: React.KeyboardEvent<HTMLAnchorElement>, link: string) => {\n if (e.key === 'Enter') {\n onOptionClick?.(link);\n } else if (e.key === 'Escape') {\n resetHandler();\n }\n };\n\n const handleHeaderKeyDown = (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (e.key === 'Enter') {\n onClick?.();\n } else if (e.key === 'Escape') {\n resetHandler();\n }\n };\n\n const handleOptionBlur = (i: number) => {\n if (i === (options?.length || 0) - 1) {\n onBlur?.();\n }\n };\n\n const isDropdown = !!options?.length;\n\n const wrapperEvents = {\n onMouseEnter: () => onMouseEnter?.(),\n onMouseLeave: () => onMouseLeave?.(),\n };\n\n const headerEvents = {\n onMouseDown: (e: MouseEvent) => {\n e.preventDefault();\n onClick?.();\n },\n onFocus: () => onFocus?.(),\n onBlur: () => !isDropdown && onBlur?.(),\n onKeyDown: handleHeaderKeyDown,\n };\n\n return (\n <ControlledDropdownWrapper ref={ref} {...wrapperEvents}>\n {isDropdown ? (\n <>\n <ControlledDropdownHeaderContainer\n active={active}\n activeColor={activeColor}\n {...headerEvents}\n tabIndex={0}\n data-testid=\"span-container\"\n >\n {text}\n <IconWrapper data-testid=\"dropdown-icon\">\n <Icon iconName=\"DropdownArrow\" />\n </IconWrapper>\n </ControlledDropdownHeaderContainer>\n {active && options ? (\n <OptionsContainer colorPrimary={activeColor} withOptionsInMobile>\n {options.map((optionItem, index) => (\n <OptionItem\n key={`key-${index}-${optionItem.option}`}\n onClick={() => onOptionClick?.(optionItem.optionLink)}\n onKeyDown={(e) => handleOptionKeyDown(e, optionItem.optionLink)}\n colorPrimary={activeColor}\n tabIndex={0}\n onBlur={() => handleOptionBlur(index)}\n href={optionItem.optionLink}\n >\n {optionItem.option}\n </OptionItem>\n ))}\n </OptionsContainer>\n ) : null}\n </>\n ) : (\n <ControlledDropdownHeaderContainerLink\n active={active}\n activeColor={activeColor}\n {...headerEvents}\n data-testid=\"link-container\"\n tabIndex={0}\n >\n {text}\n </ControlledDropdownHeaderContainerLink>\n )}\n </ControlledDropdownWrapper>\n );\n};\n\nexport default ControlledDropdown;\n","import styled from 'styled-components';\n\nconst Grid = styled.div`\n display: grid;\n grid-template-columns: var(--grid-template-columns);\n grid-template-rows: max-content;\n gap: var(--grid-column-gap);\n margin: 0;\n`;\n\nexport default Grid;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IGridItemProps } from '../../../types/types';\n\nconst GridItem = styled.div<IGridItemProps>`\n grid-column: ${({ columnStartDesktop }) => columnStartDesktop} / span\n ${({ columnSpanDesktop = 1 }) => columnSpanDesktop};\n\n @media ${devices.mobile} {\n & {\n grid-column: ${({ columnStartDevice, columnStartSmallDevice }) => columnStartSmallDevice ?? columnStartDevice} /\n span ${({ columnSpanDevice = 1, columnSpanSmallDevice }) => columnSpanSmallDevice ?? columnSpanDevice};\n }\n }\n\n @media ${devices.tablet} {\n & {\n grid-column: ${({ columnStartDevice }) => columnStartDevice} / span\n ${({ columnSpanDevice = 1 }) => columnSpanDevice};\n }\n }\n`;\n\nexport default GridItem;\n","import styled from 'styled-components';\nimport { AspectRatio, AspectRatioLegacy, IImageAspectRatioWrapperProps } from '../../../types/image';\n\nconst ImageAspectRatioWrapper = styled.div<IImageAspectRatioWrapperProps>`\n position: relative;\n aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio};\n\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n width: 100%;\n padding-top: ${({ aspectRatio = AspectRatio['1:1'] }) => AspectRatioLegacy[aspectRatio]}%;\n }\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n position: absolute;\n top: 0;\n left: 0;\n }\n }\n`;\n\nexport default ImageAspectRatioWrapper;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IProgressProps } from '../../../types/progress';\n\nexport const ProgressView = styled.div<IProgressProps>`\n height: ${({ height }) => (height ? `${height}px` : '6px')};\n width: 100%;\n display: flex;\n flex-direction: row;\n`;\n\nexport const ElapsedProgressView = styled.div<IProgressProps & { isProgressWithSteps: boolean }>`\n background-color: ${({ color }) => (color ? `var(--base-color-${color})` : 'var(--base-color-progress)')};\n flex: ${({ progress }) => progress};\n padding-left: ${({ isProgressWithSteps }) => (isProgressWithSteps ? '34px' : '0')};\n\n @media ${devices.mobile} {\n padding-left: ${({ isProgressWithSteps }) => (isProgressWithSteps ? '24px' : '0')};\n }\n`;\n\nexport const PendingProgressView = styled.div<IProgressProps>`\n background-color: ${({ color }) => (color ? `var(--base-color-${color})` : 'var(--base-color-lightgrey)')};\n opacity: 0.5;\n flex: ${({ progress }) => progress};\n`;\n\nexport const StepsWrapper = styled.div<IProgressProps>`\n margin-top: 10px;\n display: flex;\n justify-content: space-between;\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n text-transform: var(--text-transform-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n\n @media ${devices.mobile} {\n font-size: var(--font-size-body-2);\n font-weight: var(--font-weight-body-2);\n letter-spacing: var(--letter-spacing-body-2);\n line-height: var(--line-height-body-2);\n }\n`;\n\nexport const StepWrapper = styled.div<{ isVisible: boolean; isActive: boolean }>`\n visibility: ${({ isVisible }) => (isVisible ? `visible` : 'hidden')};\n color: ${({ isActive }) => (isActive ? `var(--base-color-black)` : 'var(--base-color-midgrey)')};\n`;\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { FunctionComponent } from 'react';\n\nimport { ProgressView, ElapsedProgressView, PendingProgressView, StepsWrapper, StepWrapper } from './Progress.styles';\nimport { IProgressProps } from '../../../types/progress';\n\nconst Progress: FunctionComponent<IProgressProps> = ({\n progress = 0,\n height = 6,\n elapsedLineColor,\n pendingLineColor,\n steps,\n}) => {\n const stepsQuantity = steps?.quantity && steps.quantity <= 20 ? steps.quantity : 20;\n const currentStep = steps?.current && steps.current <= 20 ? steps.current : 20;\n\n const renderSteps = () => {\n if (!steps) return [];\n\n return Array.from(Array(stepsQuantity), (_, index) => index + 1).map((step) => (\n <StepWrapper key={`progress-step-${step}`} isVisible={step <= currentStep} isActive={step === currentStep}>\n {step} / {stepsQuantity}\n </StepWrapper>\n ));\n };\n\n const getProgressValue = () => {\n if (steps) {\n return (100 / (stepsQuantity - 1)) * (currentStep - 1);\n }\n return progress;\n };\n\n const progressValue = getProgressValue();\n\n return (\n <>\n <ProgressView height={height} data-testid=\"progress-container\">\n <ElapsedProgressView\n color={elapsedLineColor}\n isProgressWithSteps={!!steps}\n progress={progressValue}\n data-testid=\"elapsedprogress\"\n />\n <PendingProgressView color={pendingLineColor} progress={100 - progressValue} data-testid=\"pendingprogress\" />\n </ProgressView>\n {steps && <StepsWrapper data-testid=\"progress-steps-container\">{renderSteps()}</StepsWrapper>}\n </>\n );\n};\n\nexport default Progress;\n","import styled from 'styled-components';\nimport { IRadioProps } from '../../../types/formTypes';\n\nexport const RadioContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`;\n\nexport const RadioLine = styled.div<IRadioProps>`\n display: grid;\n gap: 20px;\n grid-template-columns: 1.15em 1fr;\n user-select: none;\n cursor: pointer;\n color: black;\n\n &:focus {\n outline: none;\n }\n\n input[type='radio'] {\n cursor: pointer;\n appearance: none;\n background-color: #ffffff00;\n margin: 0;\n color: black;\n width: 20px;\n height: 20px;\n border: 1px solid black;\n border-radius: 50%;\n position: relative;\n place-content: center;\n display: block;\n }\n\n input[type='radio']::before {\n content: '';\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: #ffffff00;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n input[type='radio']:checked::before {\n background-color: black;\n }\n`;\n\nexport const RadioError = styled.div<IRadioProps>`\n color: var(--base-color-errorstate);\n`;\n","import styled from 'styled-components';\nimport { ITypographyWrapperProps } from '../../../types/typography';\n\nconst Wrapper = styled.div<ITypographyWrapperProps>`\n font-family: var(--font-family-${({ typography }) => typography});\n font-feature-settings: var(--font-feature-settings-${({ typography }) => typography});\n font-size: var(--font-size-${({ typography }) => typography}-${({ level }) => level});\n font-weight: var(--font-weight-${({ typography }) => typography}-${({ level }) => level});\n letter-spacing: var(--letter-spacing-${({ typography }) => typography}-${({ level }) => level});\n line-height: var(--line-height-${({ typography }) => typography}-${({ level }) => level});\n text-transform: var(--text-transform-${({ typography }) => typography});\n word-break: var(--word-break-${({ typography }) => typography});\n margin: var(--margin-${({ typography }) => typography}-${({ level }) => level});\n`;\nexport default Wrapper;\n","import React from 'react';\nimport Wrapper from './Typography.style';\nimport {\n IAltHeaderProps,\n IBodyTextProps,\n IHeaderProps,\n IOverlineProps,\n IStyledTag,\n ISubtitleProps,\n} from '../../../types/typography';\n\nexport const StyledTag = ({ tag, typography, children, level }: IStyledTag) => {\n return (\n <Wrapper typography={typography} as={tag} level={level}>\n {children}\n </Wrapper>\n );\n};\n\nexport const AltHeader = ({ semanticLevel, level, children }: IAltHeaderProps) => {\n const renderedTag = semanticLevel ? `h${semanticLevel}` : `h${level}`;\n return (\n <StyledTag tag={renderedTag as React.ElementType} typography=\"altHeader\" level={level}>\n {children}\n </StyledTag>\n );\n};\n\nexport const BodyText = ({ level, children, tag = 'div' }: IBodyTextProps) => {\n const renderedTag = tag as React.ElementType;\n return (\n <StyledTag tag={renderedTag} typography=\"body\" level={level}>\n {children}\n </StyledTag>\n );\n};\n\nexport const Header = ({ semanticLevel, level, children }: IHeaderProps) => {\n const renderedTag = semanticLevel ? `h${semanticLevel}` : `h${level}`;\n return (\n <StyledTag tag={renderedTag as React.ElementType} typography=\"header\" level={level}>\n {children}\n </StyledTag>\n );\n};\n\nexport const Overline = ({ level, children, tag = 'div' }: IOverlineProps) => {\n const renderedTag = tag as React.ElementType;\n return (\n <StyledTag tag={renderedTag} typography=\"overline\" level={level}>\n {children}\n </StyledTag>\n );\n};\n\nexport const Subtitle = ({ level, children, tag = 'div' }: ISubtitleProps) => {\n const renderedTag = tag as React.ElementType;\n return (\n <StyledTag tag={renderedTag} typography=\"subtitle\" level={level}>\n {children}\n </StyledTag>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { RadioContainer, RadioError, RadioLine } from './Radio.style';\nimport { IRadioProps } from '../../../types/formTypes';\nimport { BodyText } from '../Typography';\n\n/**\n * DEPRECATED. Use Radio2 instead\n */\nconst Radio = ({ checked = false, error, label, onChange }: IRadioProps) => {\n const [isChecked, setChecked] = useState<boolean>(checked);\n\n const handleRadioChange = () => {\n setChecked(!isChecked);\n onChange?.(label ?? '');\n };\n\n const handleKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Space' || event.key === ' ') handleRadioChange();\n };\n\n useEffect(() => {\n setChecked(checked);\n }, [onChange]);\n\n return (\n <RadioContainer>\n <RadioLine role=\"radio\" tabIndex={0} onClick={handleRadioChange} onKeyPress={handleKeyPress}>\n <input type=\"radio\" checked={isChecked} readOnly />\n <BodyText level={1}>{label}</BodyText>\n </RadioLine>\n {error && (\n <RadioError>\n <BodyText level={1}>{error}</BodyText>\n </RadioError>\n )}\n </RadioContainer>\n );\n};\n\nexport default Radio;\n","import styled from 'styled-components';\nimport { IRadio2Props } from '../../../types/formTypes';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const Radio = styled.div<Pick<IRadio2Props, 'error' | 'darkMode' | 'disabled' | 'blackBox'>>`\n position: absolute;\n top: 1px;\n left: 0;\n z-index: 1;\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: ${({ error, darkMode, disabled }) => {\n if (error !== undefined) return '1px solid var(--error-color-state)';\n if (disabled) return '1px solid var(--base-color-midgrey)';\n if (darkMode) return '1px solid var(--base-color-white)';\n return '1px solid var(--base-color-black)';\n }};\n background-color: ${({ disabled, darkMode }) => {\n if (disabled) return 'var(--base-color-lightgrey)';\n if (darkMode) return 'var(--base-color-white)';\n return ' var(--base-color-white)';\n }};\n color: ${({ disabled, blackBox, darkMode }) => {\n if (disabled) return 'var(--base-color-midgrey)';\n if (darkMode) return 'var(--base-color-black)';\n if (blackBox) return 'var(--base-color-white)';\n return ' var(--base-color-black)';\n }};\n`;\n\nexport const TickboxLabel = styled.label<Pick<IRadio2Props, 'darkMode' | 'blackBox'>>`\n position: relative;\n padding-left: 32px;\n input[type='radio'] {\n width: 1px;\n height: 1px;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n z-index: 0;\n &:checked + ${Radio} {\n background-color: ${({ blackBox, darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n if (blackBox) return 'var(--base-color-black)';\n return ' var(--base-color-white)';\n }};\n }\n &:focus + ${Radio} {\n outline: ${({ darkMode }) => {\n if (darkMode) return '4px solid var(--base-color-lemonchiffon)';\n return '3px solid var(--base-color-lapislazuli)';\n }};\n }\n }\n`;\n\nexport const RadioIcon = styled.div`\n display: none;\n color: inherit;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: currentColor;\n input[type='radio']:checked + ${Radio} & {\n display: block;\n }\n`;\n\nexport const TextLabel = styled.div<Pick<IRadio2Props, 'darkMode' | 'disabled'>>`\n color: ${({ darkMode, disabled }) => {\n if (darkMode && disabled) return 'var(--base-color-lightgrey)';\n if (darkMode) return 'var(--base-color-white)';\n if (disabled) return 'var(--base-color-darkgrey)';\n return 'var(--base-color-black)';\n }};\n`;\n\nexport const ErrorLabel = styled.div<Pick<IRadio2Props, 'darkMode'>>`\n margin-top: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n return 'var(--base-color-errorstate)';\n }};\n`;\n","import React, { forwardRef } from 'react';\n\nimport { Container, TickboxLabel, Radio, RadioIcon, TextLabel, ErrorLabel } from './Radio2.style';\n\nimport { IRadio2Props } from '../../../types/formTypes';\nimport { BodyText, AltHeader } from '../Typography';\n\n/**\n * A Radio component, that wraps around the native `<input type=\"radio\"/>` element\n * and adds some extra styling, states and information around it (i.e. an error label,\n * error state).\n *\n * # Error state\n * An error label will be shown below the radio if the `error` prop exists.\n * Also radio will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n *\n * # Black box mode\n * If `blackBox` prop is true checked state will be styled as black box with white tick icon.\n * This style was used before as a default. Not preferred in new components.\n * This will be ignored if `darkMode` is true.\n */\nconst Radio2Component = (\n { children, disabled = false, error, darkMode = false, blackBox = false, ...inputProps }: IRadio2Props,\n ref: React.Ref<HTMLInputElement>\n): React.ReactElement => {\n return (\n <Container>\n <TickboxLabel darkMode={darkMode} blackBox={blackBox}>\n <input {...inputProps} disabled={disabled} type=\"radio\" ref={ref} data-testid=\"radio-input\" />\n <Radio error={error} darkMode={darkMode} disabled={disabled} blackBox={blackBox}>\n <RadioIcon />\n </Radio>\n <TextLabel disabled={disabled} darkMode={darkMode} data-testid=\"radio-content\">\n <BodyText level={1}>{children}</BodyText>\n </TextLabel>\n </TickboxLabel>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"radio-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\nconst Radio2 = forwardRef<HTMLInputElement, IRadio2Props>(Radio2Component);\n\nexport default Radio2;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const ButtonsContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n`;\n\nexport const IconWrapper = styled.div`\n justify-content: center;\n display: flex;\n align-items: center;\n width: var(--rotator-button-width);\n height: var(--rotator-button-width);\n background-color: var(--base-color-lightgrey);\n color: var(--base-color-black);\n\n svg {\n width: var(--rotator-button-icon-width);\n height: var(--rotator-button-icon-width);\n }\n\n svg path {\n fill: var(--base-color-black);\n }\n\n :hover {\n cursor: pointer;\n background-color: ${({ theme }) => theme.colors.primary};\n\n && svg path {\n fill: var(--base-color-white);\n }\n }\n\n @media ${devices.mobile} {\n background-color: var(--base-color-black);\n\n && svg path {\n fill: var(--base-color-white);\n }\n\n :hover {\n cursor: default;\n background-color: var(--base-color-black);\n\n && svg path {\n fill: var(--base-color-white);\n }\n }\n }\n`;\n\nexport const IconUnavailableWrapper = styled.div`\n justify-content: center;\n display: flex;\n align-items: center;\n width: var(--navigation-large-margin);\n height: var(--navigation-large-margin);\n background-color: var(--base-color-lightgrey);\n color: var(--base-color-black);\n opacity: 0.2;\n\n svg {\n width: var(--navigation-xlarge-gap);\n height: var(--navigation-xlarge-gap);\n }\n\n svg path {\n fill: var(--base-color-black);\n }\n\n @media ${devices.mobile} {\n opacity: 1;\n pointer-events: none;\n background-color: var(--base-color-black);\n\n && svg path {\n fill: var(--base-color-white);\n }\n }\n`;\n","import React from 'react';\nimport { ButtonsContainer, IconWrapper, IconUnavailableWrapper } from './RotatorButtons.style';\nimport { IRotatorButtonsProps } from '../../../types/buttonTypes';\nimport { Icon } from '../Icons';\n\nconst RotatorButtons = ({\n onClickPrev,\n onClickNext,\n availablePrev = true,\n availableNext = true,\n}: IRotatorButtonsProps) => {\n const onClickLeftHandler = () => {\n if (onClickPrev) {\n onClickPrev();\n }\n };\n\n const onPrevKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onClickLeftHandler();\n }\n };\n\n const onClickRightHandler = () => {\n if (onClickNext) {\n onClickNext();\n }\n };\n\n const onNextKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onClickRightHandler();\n }\n };\n\n const renderPrevIcon = () => <Icon iconName=\"CarouselArrow\" direction=\"reverse\" />;\n\n const renderNextIcon = () => <Icon iconName=\"CarouselArrow\" />;\n\n return (\n <ButtonsContainer>\n {availablePrev ? (\n <IconWrapper\n onClick={onClickLeftHandler}\n onKeyDown={onPrevKeyDownHandler}\n tabIndex={0}\n data-testid=\"iconprev\"\n className=\"carousel-icon-wrapper-left\"\n >\n {renderPrevIcon()}\n </IconWrapper>\n ) : (\n <IconUnavailableWrapper data-testid=\"iconprevnoavailable\">{renderPrevIcon()}</IconUnavailableWrapper>\n )}\n {availableNext ? (\n <IconWrapper\n onClick={onClickRightHandler}\n onKeyDown={onNextKeyDownHandler}\n tabIndex={0}\n data-testid=\"iconnext\"\n className=\"carousel-icon-wrapper-right\"\n >\n {renderNextIcon()}\n </IconWrapper>\n ) : (\n <IconUnavailableWrapper data-testid=\"iconnextnoavailable\">{renderNextIcon()}</IconUnavailableWrapper>\n )}\n </ButtonsContainer>\n );\n};\n\nexport default RotatorButtons;\n","import styled from 'styled-components';\nimport { ILogosStyledProps } from '../../../types/types';\n\nexport const SecondaryLogoWrapper = styled.svg<ILogosStyledProps>`\n path {\n fill: var(--base-color-${({ fillColor }) => fillColor});\n }\n`;\n","import styled from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\n\nexport const SectionSplitterContainer = styled(Grid)`\n height: 4px;\n`;\nexport const Splitter = styled.div`\n width: 100%;\n height: 4px;\n background: var(--base-color-lightgrey);\n`;\n","import styled from 'styled-components';\n\nexport const SponsorLogoWrapper = styled.div`\n background-color: var(--base-color-black);\n width: 172px;\n`;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport { SponsorLogoWrapper } from './SponsorLogo.style';\nimport { ISponsorLogoProps } from '../../../types/types';\n\nconst SponsorLogo = ({ colorLogo = '#fff', colorBackground = '#1d1d1b' }: ISponsorLogoProps): React.ReactElement => {\n return (\n <SponsorLogoWrapper>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 258.64 57.26\" width=\"172\" height=\"46\">\n <g id=\"Layer_2\" data-name=\"Layer 2\">\n <g id=\"Layer_1-2\" data-name=\"Layer 1\">\n <path\n fill={colorLogo}\n d=\"M48.59,20.83l0-1.16-4.8,1.72,0,1.26,4.9,1.44,0-1.1-1.09-.3-.06-1.52Zm-1.89.59,0,1.11-2-.52v0Z\"\n />\n <path\n fill={colorLogo}\n d=\"M48.8,18.33l.36-1.09-1.87-.6c.13-.4.18-.55.86-.52l1.36,0L49.88,15l-1.66,0c-.61,0-.84.07-1,.39h0a1.14,1.14,0,0,0-.84-1.29c-.85-.27-1.39.26-1.64,1l-.55,1.68ZM45.31,16l.1-.33c.19-.58.6-.52.79-.46a.63.63,0,0,1,.41.84l-.11.33Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"50.82 13.54 51.47 12.61 48.22 10.32 48.82 9.46 48.1 8.96 46.23 11.62 46.95 12.13 47.56 11.26 50.82 13.54\"\n />\n <path\n fill={colorLogo}\n d=\"M51.76,5.65a4.57,4.57,0,0,0-1,.61,1.43,1.43,0,0,0-.4,2.14c1.11,1.33,2.28-.25,2.89.46a.62.62,0,0,1-.18.9,2.56,2.56,0,0,1-1,.46l.56.76a4.67,4.67,0,0,0,1.14-.68,1.52,1.52,0,0,0,.35-2.22c-1.11-1.32-2.31.22-2.88-.46-.23-.27-.13-.58.16-.82a2.15,2.15,0,0,1,.89-.42Z\"\n />\n <path\n fill={colorLogo}\n d=\"M60.54,2.18a2.8,2.8,0,0,0-1.3.06,2.23,2.23,0,0,0-1.56,2.91,2.28,2.28,0,0,0,2.77,2,4,4,0,0,0,1.14-.44l-.26-1a2.05,2.05,0,0,1-.91.47c-.71.17-1.39-.34-1.6-1.26s.11-1.67.85-1.84a1.85,1.85,0,0,1,1,0Z\"\n />\n <path\n fill={colorLogo}\n d=\"M63.1,4.21c-.17,1.42.35,2.58,1.74,2.75S67,6.13,67.19,4.72,66.84,2.14,65.45,2s-2.17.82-2.35,2.23m1.16.15c.12-.93.44-1.65,1.09-1.57s.8.86.69,1.78-.45,1.65-1.1,1.57-.79-.86-.68-1.78\"\n />\n <path\n fill={colorLogo}\n d=\"M68.82,5.91a1.65,1.65,0,0,0,.75,2.45A1.65,1.65,0,0,0,72,7.52L73.4,4.77l-1-.52L70.89,7.17c-.22.43-.51.61-.92.41s-.44-.56-.21-1l1.48-2.91-1-.52Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"72.35 9.88 73.04 10.6 75.57 8.16 75.58 8.17 74.02 11.61 74.96 12.58 78.45 9.21 77.75 8.49 75.34 10.83 75.33 10.82 76.76 7.47 75.84 6.5 72.35 9.88\"\n />\n <path\n fill={colorLogo}\n d=\"M81.32,14.62A2.92,2.92,0,0,0,81,13.36a2.24,2.24,0,0,0-3.2-.87,2.28,2.28,0,0,0-1.28,3.14,4.1,4.1,0,0,0,.69,1l.89-.49a2,2,0,0,1-.66-.78,1.4,1.4,0,0,1,.86-1.84c.88-.43,1.65-.26,2,.43a1.79,1.79,0,0,1,.18,1Z\"\n />\n <rect\n fill={colorLogo}\n x=\"77.47\"\n y=\"17.86\"\n width=\"4.85\"\n height=\"1.14\"\n transform=\"translate(-1.99 14.27) rotate(-10.08)\"\n />\n <polygon\n fill={colorLogo}\n points=\"77.75 21.16 77.56 23.9 78.43 23.96 78.54 22.36 82.51 22.64 82.59 21.49 77.75 21.16\"\n />\n <polygon\n fill={colorLogo}\n points=\"48.1 32.49 49.47 34.12 49.78 33.85 48.68 32.56 50.15 31.32 51.15 32.52 51.45 32.25 50.46 31.06 51.78 29.94 52.83 31.2 53.14 30.93 51.81 29.36 48.1 32.49\"\n />\n <polygon\n fill={colorLogo}\n points=\"51.54 36.09 51.88 36.31 54.27 32.76 54.28 32.77 53.58 37.46 54.04 37.78 56.75 33.74 56.42 33.52 54.01 37.11 53.99 37.1 54.72 32.38 54.26 32.06 51.54 36.09\"\n />\n <path\n fill={colorLogo}\n d=\"M59.06,37.34l.83.24-.47,1.64a1.43,1.43,0,0,1-.68,0,1.83,1.83,0,0,1-1.05-2.46c.43-1.47,1.47-1.73,2.13-1.53a1.89,1.89,0,0,1,.9.57l.15-.45A2.92,2.92,0,0,0,60,34.8a2.23,2.23,0,0,0-2.7,1.75,2.27,2.27,0,0,0,1.35,3,2.24,2.24,0,0,0,1.15,0l.66-2.3L59.17,37Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"62.58 40.06 64.59 40.06 64.59 39.67 63.01 39.67 63.01 35.22 62.58 35.22 62.58 40.06\"\n />\n <path\n fill={colorLogo}\n d=\"M66.56,39.85l.41-.12L67,38.32l1.86-.53L69.66,39l.44-.12L67.21,34.6l-.44.13Zm.55-4.73h0l1.53,2.31L67,37.91Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"72.18 37.79 72.52 37.56 70.19 33.97 70.2 33.97 74.24 36.45 74.7 36.16 72.06 32.07 71.72 32.3 74.07 35.92 74.06 35.92 70.01 33.42 69.54 33.71 72.18 37.79\"\n />\n <path\n fill={colorLogo}\n d=\"M77.11,33.88l.47-.58A2.21,2.21,0,0,0,77,30a2.07,2.07,0,0,0-3.31.42l-.4.5ZM73.88,30.8l.22-.28c1-1.3,2.07-.62,2.67-.14,1,.75,1.23,1.71.56,2.56l-.27.36Z\"\n />\n <path\n fill={colorLogo}\n d=\"M110.46,21h0l-2.33,6.65h4.71Zm-1.78-3.24h3.65l6.33,16.12h-3.58l-1.39-3.69h-6.53l-1.41,3.69H102.4Z\"\n />\n <path\n fill={colorLogo}\n d=\"M123.57,24.66h1.07c1.59,0,3.42-.24,3.42-2.24s-1.81-2.11-3.42-2.11h-1.07Zm-3.23-6.89h3.49c3.46,0,7.6-.11,7.6,4.37a3.69,3.69,0,0,1-3.33,3.74v0c.88.07,1.39.95,1.71,1.67l2.59,6.31h-3.61l-1.93-5c-.47-1.2-.88-1.66-2.25-1.66h-1v6.7h-3.23Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"137.59 20.31 132.97 20.31 132.97 17.77 145.45 17.77 145.45 20.31 140.82 20.31 140.82 33.9 137.59 33.9 137.59 20.31\"\n />\n <path\n fill={colorLogo}\n d=\"M156.16,20.73a8.35,8.35,0,0,0-3.28-.69,2.24,2.24,0,0,0-2.54,2.24c0,2.79,7.07,1.61,7.07,7,0,3.53-2.8,4.87-6,4.87a14.29,14.29,0,0,1-4.14-.62l.3-2.91a7.79,7.79,0,0,0,3.65,1c1.22,0,2.86-.62,2.86-2.08,0-3.07-7.06-1.8-7.06-7.13,0-3.61,2.79-4.92,5.63-4.92a12.25,12.25,0,0,1,3.86.57Z\"\n />\n <path\n fill={colorLogo}\n d=\"M178,33.67a16.81,16.81,0,0,1-3.67.5c-5.22,0-8.85-2.61-8.85-8.06s3.37-8.61,8.85-8.61a10.39,10.39,0,0,1,3.64.67l-.23,2.72a6.65,6.65,0,0,0-3.48-.85c-3.33,0-5.41,2.54-5.41,5.84s2,5.75,5.48,5.75a9.05,9.05,0,0,0,3.53-.67Z\"\n />\n <path\n fill={colorLogo}\n d=\"M187.42,31.63c3.3,0,4.53-2.93,4.53-5.84S190.63,20,187.42,20,182.9,23,182.9,25.79s1.22,5.84,4.52,5.84m0-14.13c5.06,0,7.9,3.42,7.9,8.29s-2.79,8.38-7.9,8.38-7.89-3.44-7.89-8.38,2.77-8.29,7.89-8.29\"\n />\n <path\n fill={colorLogo}\n d=\"M197.47,17.77h3.23v9.31c0,2.75.88,4.55,3.35,4.55s3.35-1.8,3.35-4.55V17.77h3.23V28.08c0,4.31-2.45,6.09-6.58,6.09s-6.58-1.78-6.58-6.09Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"213.06 17.77 217.03 17.77 223.17 29.83 223.22 29.83 223.22 17.77 226.31 17.77 226.31 33.89 222.36 33.89 216.2 21.84 216.15 21.84 216.15 33.89 213.06 33.89 213.06 17.77\"\n />\n <path\n fill={colorLogo}\n d=\"M240.93,33.67a16.81,16.81,0,0,1-3.67.5c-5.22,0-8.85-2.61-8.85-8.06s3.37-8.61,8.85-8.61a10.43,10.43,0,0,1,3.64.67l-.23,2.72a6.65,6.65,0,0,0-3.48-.85c-3.33,0-5.41,2.54-5.41,5.84s2,5.75,5.48,5.75a9.05,9.05,0,0,0,3.53-.67Z\"\n />\n <rect fill={colorLogo} x=\"243.37\" y=\"17.77\" width=\"3.23\" height=\"16.12\" />\n <polygon\n fill={colorLogo}\n points=\"249.15 17.77 252.38 17.77 252.38 31.35 258.64 31.35 258.64 33.89 249.15 33.89 249.15 17.77\"\n />\n <polygon\n fill={colorLogo}\n points=\"102.45 40.87 111.96 40.87 111.96 43.41 105.68 43.41 105.68 47.38 111.43 47.38 111.43 49.92 105.68 49.92 105.68 54.45 112.01 54.45 112.01 56.99 102.45 56.99 102.45 40.87\"\n />\n <polygon\n fill={colorLogo}\n points=\"114.66 40.87 118.64 40.87 124.78 52.92 124.82 52.92 124.82 40.87 127.92 40.87 127.92 56.99 123.97 56.99 117.8 44.93 117.76 44.93 117.76 56.99 114.66 56.99 114.66 40.87\"\n />\n <path\n fill={colorLogo}\n d=\"M143.51,44a10.56,10.56,0,0,0-4.17-.86A5.48,5.48,0,0,0,133.51,49c0,3.28,2,5.75,5.47,5.75a8.6,8.6,0,0,0,2.12-.23v-4.2h-3.42V47.75h6.51v8.68a20.3,20.3,0,0,1-5.21.83c-5.22,0-8.85-2.61-8.85-8.06s3.38-8.61,8.85-8.61a15.72,15.72,0,0,1,4.73.67Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"146.78 40.87 150.01 40.87 150.01 54.45 156.27 54.45 156.27 56.99 146.78 56.99 146.78 40.87\"\n />\n <path\n fill={colorLogo}\n d=\"M165.76,44.1h0l-2.34,6.65h4.72ZM164,40.87h3.65L174,57h-3.58L169,53.29h-6.54l-1.4,3.7H157.7Z\"\n />\n <polygon\n fill={colorLogo}\n points=\"175.53 40.87 179.5 40.87 185.65 52.92 185.69 52.92 185.69 40.87 188.79 40.87 188.79 56.99 184.84 56.99 178.67 44.93 178.62 44.93 178.62 56.99 175.53 56.99 175.53 40.87\"\n />\n <path\n fill={colorLogo}\n d=\"M194.66,54.45h1.8a5.27,5.27,0,0,0,5.31-5.52,5.27,5.27,0,0,0-5.31-5.52h-1.8Zm-3.23-13.58h4.41c4.94,0,9.3,1.66,9.3,8.06S200.78,57,195.84,57h-4.41Z\"\n />\n <path\n fill={colorLogo}\n d=\"M248,3.39h-.7l1.84,5.24-.13.46c-.2.67-.39,1.12-.94,1.12a1.29,1.29,0,0,1-.47-.08l-.06.55a3,3,0,0,0,.69.08c.72,0,1.08-.71,1.33-1.42l2.07-5.95h-.67L249.43,7.7h0ZM245.88,6c0,1-.31,2.16-1.53,2.16S242.81,6.92,242.81,6s.37-2.17,1.54-2.17S245.88,5,245.88,6m-3.71,2.59h.64V7.75h0a1.68,1.68,0,0,0,1.62.94c1.42,0,2.13-1.18,2.13-2.71s-.61-2.71-2.13-2.71a1.75,1.75,0,0,0-1.62,1h0V1h-.64Zm-3.46-5.18h-.64V4h0a1.7,1.7,0,0,0-1.61-.71c-1.53,0-2.14,1.13-2.14,2.71,0,1.15.53,2.59,2.19,2.59a1.6,1.6,0,0,0,1.57-1h0c0,1.46-.14,2.66-1.79,2.66a3.55,3.55,0,0,1-1.52-.36l-.05.64a5.45,5.45,0,0,0,1.56.27c1.78,0,2.43-1.18,2.43-2.62ZM235,6c0-1,.32-2.17,1.54-2.17s1.53.92,1.53,2.17c0,.94-.41,2-1.57,2S235,7,235,6m-6.17,2.59h.64V5.7c0-.86.37-1.89,1.54-1.89.88,0,1.23.63,1.23,1.61V8.57h.63V5.26c0-1.14-.48-2-1.76-2a1.64,1.64,0,0,0-1.68,1h0V3.39h-.62c0,.41,0,.82,0,1.22Zm-1.71-7.42h-.64V2h.64Zm-.64,7.42h.64V3.39h-.64ZM221.1,6c0-1,.31-2.17,1.53-2.17S224.17,5,224.17,6s-.4,2.16-1.54,2.16S221.1,7,221.1,6m3.7-5h-.63V4.26h0a1.76,1.76,0,0,0-1.62-1C221,3.27,220.4,4.4,220.4,6s.71,2.71,2.13,2.71a1.68,1.68,0,0,0,1.62-.94h0v.82h.63Zm-9.89,7.62h.64V5.7c0-.86.37-1.89,1.54-1.89.88,0,1.22.63,1.22,1.61V8.57H219V5.26c0-1.14-.48-2-1.76-2a1.64,1.64,0,0,0-1.68,1h0V3.39h-.62c0,.41,0,.82,0,1.22Zm-1.72-5.18h-.64V6.25c0,.87-.36,1.89-1.53,1.89-.89,0-1.23-.63-1.23-1.6V3.39h-.64V6.7c0,1.14.49,2,1.77,2a1.64,1.64,0,0,0,1.67-1h0v.93h.62c0-.42,0-.83,0-1.22Zm-7.08,5.18h.64V3.93h1.17V3.39h-1.17V2.94c0-.62-.09-1.57.78-1.57a1.13,1.13,0,0,1,.51.12l0-.56a1.47,1.47,0,0,0-.6-.1c-1.33,0-1.37,1.09-1.37,2.18v.38h-1v.54h1Zm-3.5-5.1a3.91,3.91,0,0,0-1.25-.2A2.51,2.51,0,0,0,198.8,6a2.45,2.45,0,0,0,2.48,2.71,3.89,3.89,0,0,0,1.33-.18l-.06-.6a3.38,3.38,0,0,1-1.17.23A2,2,0,0,1,199.5,6a1.93,1.93,0,0,1,1.95-2.17,2.78,2.78,0,0,1,1.11.27Zm-5.2-2.32h-.64V2h.64Zm-.64,7.42h.64V3.39h-.64Zm-2.35,0h.64V1h-.64ZM192.26,6c0,1-.31,2.16-1.53,2.16S189.19,6.92,189.19,6s.37-2.17,1.54-2.17S192.26,5,192.26,6m-3.71,2.59h.64V7.75h0a1.68,1.68,0,0,0,1.62.94C192.25,8.69,193,7.51,193,6s-.61-2.71-2.13-2.71a1.75,1.75,0,0,0-1.62,1h0V1h-.64Zm-1.68-5.18h-.64V6.25c0,.87-.36,1.89-1.53,1.89-.89,0-1.23-.63-1.23-1.6V3.39h-.64V6.7c0,1.14.49,2,1.77,2a1.64,1.64,0,0,0,1.67-1h0v.93h.62c0-.42,0-.83,0-1.22ZM180.69,6c0,1-.32,2.16-1.54,2.16S177.62,6.92,177.62,6s.39-2.17,1.53-2.17S180.69,5,180.69,6M177,10.7h.64v-3h0a1.6,1.6,0,0,0,1.61,1c1.43,0,2.13-1.18,2.13-2.71s-.6-2.71-2.13-2.71a1.78,1.78,0,0,0-1.65,1.06h0l0-.94H177Zm-3.46-7.31h-.64V4h0a1.72,1.72,0,0,0-1.62-.71c-1.52,0-2.13,1.13-2.13,2.71,0,1.15.53,2.59,2.18,2.59a1.62,1.62,0,0,0,1.58-1h0c0,1.46-.14,2.66-1.79,2.66a3.59,3.59,0,0,1-1.53-.36l0,.64a5.54,5.54,0,0,0,1.57.27c1.78,0,2.43-1.18,2.43-2.62ZM169.81,6c0-1,.31-2.17,1.53-2.17s1.54.92,1.54,2.17c0,.94-.42,2-1.58,2s-1.49-1-1.49-2m-6.17,2.59h.64V5.7c0-.86.36-1.89,1.53-1.89.89,0,1.23.63,1.23,1.61V8.57h.64V5.26c0-1.14-.49-2-1.77-2a1.62,1.62,0,0,0-1.67,1h0V3.39h-.62c0,.41,0,.82,0,1.22Zm-1.71-7.42h-.64V2h.64Zm-.64,7.42h.64V3.39h-.64Zm-4.53-.12a3.91,3.91,0,0,0,1.45.24c.78,0,1.81-.38,1.81-1.47,0-1.7-2.55-1.58-2.55-2.54,0-.66.45-.87,1.11-.87a2.87,2.87,0,0,1,1.15.25l.06-.56a4.08,4.08,0,0,0-1.28-.23c-.85,0-1.68.38-1.68,1.41,0,1.5,2.49,1.31,2.49,2.54,0,.59-.54.92-1.15.92a3.05,3.05,0,0,1-1.35-.32ZM155.5,3.39h-.64V6.25c0,.87-.37,1.89-1.54,1.89-.88,0-1.23-.63-1.23-1.6V3.39h-.63V6.7c0,1.14.48,2,1.76,2a1.65,1.65,0,0,0,1.68-1h0v.93h.62c0-.42,0-.83,0-1.22ZM144.23,6c0-1,.31-2.17,1.53-2.17S147.29,5,147.29,6s-.39,2.16-1.53,2.16S144.23,7,144.23,6m3.7-5h-.64V4.26h0a1.75,1.75,0,0,0-1.61-1c-1.53,0-2.13,1.13-2.13,2.71s.71,2.71,2.13,2.71a1.66,1.66,0,0,0,1.61-.94h0v.82h.64Zm-9.06,4.66a1.7,1.7,0,0,1,1.52-1.8c1,0,1.32.9,1.32,1.8ZM142,7.75a3.27,3.27,0,0,1-1.45.39,1.75,1.75,0,0,1-1.71-2h3.54V5.83c0-1.39-.6-2.56-2.06-2.56-1.31,0-2.18,1.12-2.18,2.71s.64,2.71,2.35,2.71A4.14,4.14,0,0,0,142,8.4Zm-4.71-4.36h-1.18V1.91l-.64.23V3.39h-1v.54h1V7c0,1,.05,1.73,1.18,1.73a2.32,2.32,0,0,0,.78-.14l0-.53a1.47,1.47,0,0,1-.59.12c-.51,0-.69-.39-.69-.85V3.93h1.18Zm-6,5.18h.64V6c0-.94.28-2.08,1.29-2.08a1.41,1.41,0,0,1,.47.07V3.33a2,2,0,0,0-.45-.06,1.52,1.52,0,0,0-1.33,1.11h0v-1h-.64a9.26,9.26,0,0,1,0,1.15ZM125.76,6c0-1.2.6-2.17,1.71-2.17s1.72,1,1.72,2.17-.6,2.16-1.72,2.16-1.71-1-1.71-2.16m-.7,0a2.43,2.43,0,1,0,4.83,0,2.43,2.43,0,1,0-4.83,0m-1.83,0c0,1-.32,2.16-1.54,2.16S120.16,6.92,120.16,6s.4-2.17,1.53-2.17S123.23,5,123.23,6m-3.71,4.72h.64v-3h0a1.61,1.61,0,0,0,1.62,1c1.42,0,2.13-1.18,2.13-2.71s-.61-2.71-2.13-2.71a1.79,1.79,0,0,0-1.66,1.06h0l0-.94h-.64ZM117.4,6c0,1-.32,2.16-1.54,2.16S114.33,6.92,114.33,6s.39-2.17,1.53-2.17S117.4,5,117.4,6m-3.71,4.72h.64v-3h0a1.6,1.6,0,0,0,1.61,1c1.43,0,2.14-1.18,2.14-2.71s-.61-2.71-2.14-2.71a1.79,1.79,0,0,0-1.65,1.06h0l0-.94h-.64ZM112,3.39h-.64V6.25c0,.87-.37,1.89-1.54,1.89-.88,0-1.23-.63-1.23-1.6V3.39H108V6.7c0,1.14.49,2,1.77,2a1.64,1.64,0,0,0,1.68-1h0v.93h.62c0-.42,0-.83,0-1.22Zm-9.4,5a3.92,3.92,0,0,0,1.61.31,2.08,2.08,0,0,0,2.32-2c0-2.07-3.25-2.09-3.25-3.51,0-.91.8-1.22,1.54-1.22a2.89,2.89,0,0,1,1.28.27l.12-.64a4.31,4.31,0,0,0-1.39-.23c-1.25,0-2.25.71-2.25,1.84,0,1.86,3.25,2,3.25,3.43a1.41,1.41,0,0,1-1.59,1.45,2.77,2.77,0,0,1-1.57-.42Z\"\n />\n <rect fill={colorLogo} x=\"92.12\" width=\"0.75\" height=\"56.99\" />\n <path fill={colorLogo} d=\"M2.46,50.42H4.22v5.07H7.29V57H2.46Z\" />\n <path\n fill={colorLogo}\n d=\"M10.84,57.2a3.59,3.59,0,0,1-1.37-.26,3.27,3.27,0,0,1-1.82-1.83,4,4,0,0,1,0-2.79,3.5,3.5,0,0,1,.72-1.1,3.28,3.28,0,0,1,1.1-.72,3.59,3.59,0,0,1,1.37-.26,3.65,3.65,0,0,1,1.38.26,3.14,3.14,0,0,1,1.09.72,3.33,3.33,0,0,1,.72,1.1,4,4,0,0,1,0,2.79,3.3,3.3,0,0,1-1.81,1.83A3.65,3.65,0,0,1,10.84,57.2Zm0-1.65a1.67,1.67,0,0,0,.69-.14A1.65,1.65,0,0,0,12,55a1.68,1.68,0,0,0,.32-.59,2.35,2.35,0,0,0,.11-.71,2.41,2.41,0,0,0-.11-.72,1.64,1.64,0,0,0-.32-.58,1.54,1.54,0,0,0-.51-.4,1.77,1.77,0,0,0-1.38,0,1.54,1.54,0,0,0-.51.4,1.64,1.64,0,0,0-.32.58,2.41,2.41,0,0,0-.11.72,2.35,2.35,0,0,0,.11.71,1.68,1.68,0,0,0,.32.59,1.65,1.65,0,0,0,.51.39A1.67,1.67,0,0,0,10.84,55.55Z\"\n />\n <path fill={colorLogo} d=\"M16.43,52h-2V50.42h5.83V52h-2V57H16.43Z\" />\n <path fill={colorLogo} d=\"M22.49,52h-2V50.42h5.83V52h-2V57H22.49Z\" />\n <path fill={colorLogo} d=\"M26.7,50.42h4.77v1.52h-3v1h2.47v1.43H28.46v1.13h3.22V57h-5Z\" />\n <path\n fill={colorLogo}\n d=\"M32.4,50.42h2.74a3.24,3.24,0,0,1,1,.14,2.05,2.05,0,0,1,.74.41,2,2,0,0,1,.48.68,2.5,2.5,0,0,1,.16.94,2.19,2.19,0,0,1-.28,1.14,2.27,2.27,0,0,1-.77.77L37.86,57H36l-1.13-2.25h-.73V57H32.4Zm2.57,3a.75.75,0,0,0,.79-.79.8.8,0,0,0-.21-.59.77.77,0,0,0-.59-.22h-.84v1.6Z\"\n />\n <path fill={colorLogo} d=\"M39.81,54.4l-2.35-4h2l1.29,2.36L42,50.42h2l-2.36,4V57H39.81Z\" />\n <path fill={colorLogo} d=\"M45.71,50.42h4.62V52H47.47v1.28h2.21v1.45H47.47V57H45.71Z\" />\n <path\n fill={colorLogo}\n d=\"M50.76,50.42h1.76V54.3a1.46,1.46,0,0,0,.25.89,1.17,1.17,0,0,0,1.67,0,1.48,1.48,0,0,0,.25-.89V50.42h1.78v4a3,3,0,0,1-.21,1.15,2.4,2.4,0,0,1-.59.86,2.66,2.66,0,0,1-.9.55,3.58,3.58,0,0,1-2.3,0,2.85,2.85,0,0,1-.91-.54,2.49,2.49,0,0,1-.59-.86,3,3,0,0,1-.21-1.16Z\"\n />\n <path fill={colorLogo} d=\"M57.42,50.42H59l2.54,3.69V50.42h1.74V57h-1.5l-2.64-3.8V57H57.42Z\" />\n <path\n fill={colorLogo}\n d=\"M64.28,50.42h2.54a4.85,4.85,0,0,1,1.41.2,3.06,3.06,0,0,1,1.13.6,2.67,2.67,0,0,1,.74,1.05,3.78,3.78,0,0,1,.27,1.49,3.56,3.56,0,0,1-.27,1.44,2.77,2.77,0,0,1-.75,1,3.18,3.18,0,0,1-1.13.62,5,5,0,0,1-1.41.2H64.28Zm2.47,5.07a1.67,1.67,0,0,0,1.81-1.76,2.27,2.27,0,0,0-.11-.72,1.59,1.59,0,0,0-.34-.56,1.29,1.29,0,0,0-.56-.36,2.13,2.13,0,0,0-.8-.13H66v3.53Z\"\n />\n <path fill={colorLogo} d=\"M71.05,50.42h4.76v1.52h-3v1h2.47v1.43H72.8v1.13H76V57h-5Z\" />\n <path\n fill={colorLogo}\n d=\"M76.75,50.42h2.54a4.85,4.85,0,0,1,1.41.2,3.15,3.15,0,0,1,1.13.6,2.89,2.89,0,0,1,.74,1.05,3.78,3.78,0,0,1,.27,1.49,3.56,3.56,0,0,1-.27,1.44,3,3,0,0,1-.75,1,3.18,3.18,0,0,1-1.13.62,5,5,0,0,1-1.41.2H76.75Zm2.47,5.07A1.66,1.66,0,0,0,81,53.73a2,2,0,0,0-.11-.72,1.44,1.44,0,0,0-.33-.56,1.36,1.36,0,0,0-.56-.36,2.13,2.13,0,0,0-.8-.13H78.5v3.53Z\"\n />\n <path\n fill={colorBackground}\n d=\"M28.47,18.89a2.62,2.62,0,0,0-1.56.63c.16-1.82-.51-3.17-1.76-3.63a3.22,3.22,0,0,0-2.33.1l-1-2.44c.93-2.28,2.56-5.06,2.56-7.34,0-1.77-.89-3.07-2.6-3.07a4.45,4.45,0,0,0-3.05,1.95C17.53,2.45,16.28,1.2,14.94,1.2c-2.13,0-3,2.13-3,4a18.84,18.84,0,0,0,2,7.52,63.85,63.85,0,0,0-2.9,7.57,8.59,8.59,0,0,0-6.12-2.7,6.3,6.3,0,0,0-3.53,1A2.93,2.93,0,0,0,0,20.87a2.64,2.64,0,0,0,2.23,2.54C4.56,24,5.6,25.9,6.48,29.58c1.61,6.64,5.76,10.63,12.14,10.63A12.26,12.26,0,0,0,30.86,28a14.77,14.77,0,0,0-.26-2.64,10.78,10.78,0,0,0,.46-1.56c.57-2.85-.52-4.88-2.59-4.88\"\n />\n <path\n fill={colorLogo}\n d=\"M24.62,17.33c1.08.5,1.17,2.76.08,5.45-.88,2.6-2.15,4.18-3.34,4.19-.93,0-1.71-.66-1.71-2.42,0-3.32,2.73-8.25,5-7.22\"\n />\n <path\n fill={colorLogo}\n d=\"M13.43,5.15c0-1.09.47-2.39,1.51-2.39q1.08,0,2.64,3.42a27.54,27.54,0,0,0-2.75,4.52,17.18,17.18,0,0,1-1.4-5.55\"\n />\n <path\n fill={colorLogo}\n d=\"M18.62,38.66c-5.45,0-9.18-3.79-10.63-9.44-1-3.89-2.23-6.49-5.4-7.32-.36-.1-1-.36-1-1S2.75,19.1,4.93,19.1a7.68,7.68,0,0,1,6.17,3.69l1.11-.41c.16-2.12,1.24-5,3.14-9.09,2.39-5.13,4.81-8.63,6.42-8.59a1.41,1.41,0,0,1,1.12,1.51c0,2.12-1.87,5.31-3.51,8.78-.17.35-.91,2-.91,2l1.07.46c.35-.59,1.08-2,1.18-2.24l.8,1.77a11.34,11.34,0,0,0-3.21,7.58c0,2,.88,3.2,2.17,3.61a2.91,2.91,0,0,0,3.22-1,2.57,2.57,0,0,0,2.65,2.32,3.35,3.35,0,0,0,3.06-2.21A11,11,0,0,1,18.62,38.66\"\n />\n <path\n fill={colorLogo}\n d=\"M29.66,23.56c-.36,2.18-1.68,4.6-3.31,4.6s-1.47-2.06-1.11-3.3c.57-2.23,2.09-4.57,3.23-4.57s1.5,1.41,1.19,3.27\"\n />\n <path\n fill={colorBackground}\n d=\"M24.15,34.49c-4.61,2.62-8.91.95-10.53-3.83L15,30c1.32,3.89,5.13,5,8.65,3.13Z\"\n />\n <path fill={colorBackground} d=\"M22.9,24.5a1.21,1.21,0,1,1-1.21-1.21A1.21,1.21,0,0,1,22.9,24.5\" />\n <path fill={colorBackground} d=\"M28,26a1.09,1.09,0,1,1-1.09-1.09A1.09,1.09,0,0,1,28,26\" />\n <path\n fill={colorBackground}\n d=\"M25.9,6.58a1.15,1.15,0,0,1-.41-.08,1.23,1.23,0,0,1-.33-.23,1.12,1.12,0,0,1-.22-.33,1.07,1.07,0,0,1-.08-.41,1.06,1.06,0,0,1,.08-.4,1.33,1.33,0,0,1,.22-.34,1.46,1.46,0,0,1,.33-.22,1.16,1.16,0,0,1,.42-.08,1.06,1.06,0,0,1,.4.08,1.12,1.12,0,0,1,.33.22,1.11,1.11,0,0,1,.22.34,1.06,1.06,0,0,1,.08.4,1.07,1.07,0,0,1-.08.41,1,1,0,0,1-.22.33,1,1,0,0,1-.33.23A1.11,1.11,0,0,1,25.9,6.58Zm0-.2a.72.72,0,0,0,.33-.07.76.76,0,0,0,.26-.18.78.78,0,0,0,.17-.26,1,1,0,0,0,.06-.33.88.88,0,0,0-.06-.33.73.73,0,0,0-.17-.27.76.76,0,0,0-.26-.18.71.71,0,0,0-.32-.07.72.72,0,0,0-.33.07.68.68,0,0,0-.26.18.73.73,0,0,0-.17.27.88.88,0,0,0-.06.33,1,1,0,0,0,.06.33.78.78,0,0,0,.17.26.68.68,0,0,0,.26.18A.71.71,0,0,0,25.9,6.38ZM25.54,5H26a.47.47,0,0,1,.17,0,.41.41,0,0,1,.11.07.3.3,0,0,1,.07.1.52.52,0,0,1,0,.11.41.41,0,0,1-.05.19.31.31,0,0,1-.15.12l.25.44h-.22l-.24-.41h-.17v.41h-.2Zm.4.49a.17.17,0,0,0,.13,0,.17.17,0,0,0,.05-.12.13.13,0,0,0-.05-.11.2.2,0,0,0-.14,0h-.19v.32Z\"\n />\n </g>\n </g>\n </svg>\n </SponsorLogoWrapper>\n );\n};\n\nexport default SponsorLogo;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const CustomImage = styled.img`\n max-height: 100px;\n max-width: auto;\n\n @media ${devices.tablet} {\n max-height: 55px;\n }\n\n @media ${devices.mobile} {\n max-height: 45px;\n }\n`;\n\nexport const SponsorshipStyledIframe = styled.div`\n background-color: transparent;\n height: 80px;\n margin: 0px;\n overflow: hidden;\n padding: 0;\n width: 80px;\n\n & > iframe {\n border: 0;\n display: block;\n margin: 0px;\n padding: 0px;\n overflow: hidden;\n width: 100%;\n height: 100%;\n }\n\n @media ${devices.mobile} {\n & {\n height: 40px;\n width: 40px;\n }\n & iframe {\n height: 80px;\n transform: scale(0.5) translate(-40px, -40px);\n width: 80px;\n }\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport { ISponsorshipProps } from '../../../types/types';\nimport { SponsorshipStyledIframe, CustomImage } from './Sponsorship.style';\n\nconst DEFAULT_SPONSORSHIP_IFRAME = 'https://static.roh.org.uk/rolex/v4/rolex.html?size=80';\nconst DEFAULT_SPONSORSHIP_TITLE = 'rolex';\nconst DEFAULT_DATA_ROH = 'ImgAdvert';\nconst DEFAULT_SPONSORSHIP_ALT_TEXT = \"Sponsor's logo\";\n\nconst Sponsorship: FunctionComponent<ISponsorshipProps> = ({\n src = DEFAULT_SPONSORSHIP_IFRAME,\n dataRoh = DEFAULT_DATA_ROH,\n title = DEFAULT_SPONSORSHIP_TITLE,\n altText = DEFAULT_SPONSORSHIP_ALT_TEXT,\n isCustomImage,\n}) => {\n if (isCustomImage) return <CustomImage src={src} alt={altText} data-roh={dataRoh} data-testid=\"custom-sponsor\" />;\n\n return (\n <SponsorshipStyledIframe>\n <iframe src={src} scrolling=\"no\" data-roh={dataRoh} title={title} className=\"desktopIframe\" />\n </SponsorshipStyledIframe>\n );\n};\n\nexport default Sponsorship;\n","import styled from 'styled-components';\nimport { ITabProps } from '../../../types/types';\nimport { devices } from '../../../styles/viewports';\n\nexport const TabText = styled.a<ITabProps>`\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-black);\n margin-right: 0px;\n margin-top: 5px;\n text-decoration: none;\n text-transform: uppercase;\n\n ${(props) => {\n if (props.withIcon === 'left') {\n return `margin-left: 5px;`;\n }\n\n return ``;\n }}\n\n @media ${devices.mobileAndTablet} {\n ${(props) => {\n if (!props.withTextInMobile) {\n return `\n display: none;\n `;\n }\n\n return ``;\n }}\n }\n`;\n\nexport const TitleContainer = styled.div<ITabProps>`\n display: flex;\n flex-direction: row;\n width: fit-content;\n border-bottom: 1px solid transparent;\n\n ${(props) => {\n if (props.withIcon === 'left') {\n return `\n flex-direction: row-reverse;\n svg {\n margin-right: 6px;\n }`;\n }\n\n return `\n svg {\n margin-left: 6px;\n }`;\n }}\n\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n\n ${({ selected, colorPrimary }) => {\n if (selected) {\n return `\n cursor: pointer;\n border-bottom: 1px solid var(--base-color-${colorPrimary});\n && a {\n color: var(--base-color-${colorPrimary});\n } \n && svg path {\n fill: var(--base-color-${colorPrimary});\n } \n `;\n }\n\n return '';\n }}\n\n ${(props) => {\n if (!props.withTextInMobile) {\n return `\n svg {\n margin-right: 6px;\n }\n `;\n }\n return ``;\n }}\n\n @media ${devices.mobileAndTablet} {\n svg {\n margin-right: 0px;\n }\n }\n\n :hover {\n cursor: pointer;\n border-bottom: 1px solid var(--base-color-${({ colorPrimary }) => colorPrimary});\n && a {\n color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n && svg path {\n fill: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n`;\n","import React from 'react';\nimport { TabText, TitleContainer } from './Tab.style';\nimport { ITabProps } from '../../../types/types';\nimport { Icon } from '../Icons';\n\nconst Tab = ({\n title,\n titleLink = '',\n onClick,\n onFocus,\n onReset,\n selected = false,\n iconName = 'DropdownArrow',\n withIcon = 'right',\n withTextInMobile = true,\n colorPrimary = 'primary',\n}: ITabProps) => {\n const clickHandler = () => {\n if (onClick) {\n onClick(titleLink);\n }\n };\n\n const onFocusHandler = () => onFocus?.();\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n clickHandler();\n } else if (e.key === 'Escape') {\n onReset?.();\n }\n };\n\n return (\n <TitleContainer\n colorPrimary={colorPrimary}\n withTextInMobile={withTextInMobile}\n withIcon={withIcon}\n selected={selected}\n onClick={() => clickHandler()}\n onFocus={onFocusHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={0}\n >\n <TabText withTextInMobile={withTextInMobile}>{title}</TabText>\n {withIcon !== 'none' && <Icon iconName={iconName} />}\n </TitleContainer>\n );\n};\n\nexport default Tab;\n","import styled from 'styled-components';\nimport { ITabLinkProps } from '../../../types/navigation';\nimport { devices } from '../../../styles/viewports';\n\nexport const TabLinkWrapper = styled.a<ITabLinkProps>`\n padding: ${({ iconName }) =>\n iconName ? 'calc(var(--text-link-underline-offset) - 4px) 0' : 'var(--text-link-underline-offset) 0'};\n font-family: var(--font-family-navigation);\n font-size: var(--font-size-navigation);\n font-weight: var(--font-weight-navigation);\n line-height: var(--line-height-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n text-transform: var(--text-transform-navigation);\n color: ${({ selected, color, hoverColor }) =>\n selected ? `var(--base-color-${hoverColor})` : `var(--base-color-${color})`};\n width: fit-content;\n display: flex;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n border-bottom: ${({ selected, hoverColor }) =>\n selected ? `1px solid var(--base-color-${hoverColor})` : '1px solid transparent'};\n ${({ selected, hoverColor }) =>\n selected\n ? `&& svg path {\n fill: var(--base-color-${hoverColor});\n }`\n : ''}\n\n @media ${devices.desktop}, ${devices.largeDesktop} {\n &:hover {\n color: var(--base-color-${({ hoverColor }) => hoverColor});\n border-bottom: 1px solid var(--base-color-${({ hoverColor }) => hoverColor});\n\n && svg path {\n fill: var(--base-color-${({ hoverColor }) => hoverColor});\n }\n }\n }\n`;\n\nexport const TabLinkIconWrapper = styled.span`\n width: var(--button-icon-width);\n height: var(--button-icon-height);\n margin-right: var(--button-icon-margin);\n`;\n","import React, { FunctionComponent } from 'react';\nimport { TabLinkWrapper, TabLinkIconWrapper } from './TabLink.style';\nimport { Icon } from '..';\nimport { ITabLinkProps } from '../../../types/navigation';\nimport { Colors } from '../../../types/types';\n\nconst TabLink: FunctionComponent<ITabLinkProps> = ({\n children,\n iconName,\n iconDirection,\n color = Colors.DarkGrey,\n hoverColor = Colors.Primary,\n ...rest\n}) => {\n return (\n <TabLinkWrapper color={color} iconName={iconName} hoverColor={hoverColor} {...rest}>\n {iconName ? (\n <TabLinkIconWrapper data-testid=\"tab-link-icon\">\n <Icon iconName={iconName} direction={iconDirection} color={color} />\n </TabLinkIconWrapper>\n ) : null}\n {children}\n </TabLinkWrapper>\n );\n};\n\nexport default TabLink;\n","import styled from 'styled-components';\nimport { ITextAreaProps } from '../../../types/formTypes';\n\nexport const TextAreaWrapper = styled.div<Pick<ITextAreaProps, 'width' | 'height'>>`\n width: ${({ width }) => (width ? `${width}px;` : '100%;')};\n height: ${({ height }) => `${height}px;`};\n`;\n\nexport const TextAreaLabel = styled.div<Pick<ITextAreaProps, 'darkMode'>>`\n margin-block: 0 15px;\n ${({ darkMode }) => (darkMode ? 'color: var(--base-color-white)' : '')};\n`;\n\nexport const TextAreaBox = styled.textarea<Pick<ITextAreaProps, 'error' | 'darkMode'>>`\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n box-sizing: border-box;\n resize: none;\n padding: 20px;\n width: 100%;\n height: 100%;\n border: 1px solid ${({ error }) => (error ? 'var(--base-color-errorstate)' : 'var(--base-color-lightgrey)')};\n\n ${({ error, darkMode }) => {\n if (!darkMode || !error) return '';\n\n return 'outline: 3px solid var(--base-color-errorstate)';\n }};\n\n :disabled {\n background-color: var(--base-color-lightgrey);\n border: 1px solid transparent;\n outline: none;\n }\n\n :focus {\n outline-style: solid;\n outline-width: ${({ darkMode }) => (darkMode ? '4px' : '3px')};\n outline-color: ${({ darkMode }) => (darkMode ? 'var(--base-color-lemonchiffon)' : 'var(--base-color-lapislazuli)')};\n }\n`;\n\nexport const TextAreaError = styled.div<Pick<ITextAreaProps, 'darkMode'>>`\n ${({ darkMode }) => (darkMode ? 'color: var(--base-color-white)' : '')};\n color: ${({ darkMode }) => (darkMode ? 'var(--base-color-white)' : 'var(--base-color-errorstate)')};\n margin-block: 15px 0;\n`;\n","import styled from 'styled-components';\nimport { ITextFieldProps } from '../../../types/formTypes';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const InputWrapper = styled.div<Pick<ITextFieldProps, 'width'>>`\n position: relative;\n width: auto;\n max-width: ${({ width }) => {\n if (!width) return 'none';\n return `${width}px`;\n }};\n`;\n\nexport const Input = styled.input<Pick<ITextFieldProps, 'error' | 'darkMode'> & { isPasswordField: boolean }>`\n box-sizing: border-box;\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n text-transform: var(--text-transform-altHeader);\n border-radius: 0;\n width: 100%;\n height: 48px;\n padding-left: 20px;\n -moz-appearance: textfield;\n padding-right: ${({ isPasswordField }) => {\n if (isPasswordField) return `80px`;\n return `20px`;\n }};\n outline: none;\n border: ${({ error }) => {\n if (error !== undefined) return `1px solid var(--base-color-errorstate)`;\n return `1px solid var(--base-color-darkgrey)`;\n }};\n &:disabled {\n background-color: var(--base-color-lightgrey);\n border: 1px solid transparent;\n outline: none;\n }\n\n &:focus {\n outline: ${({ darkMode }) => {\n if (darkMode) return `4px solid var(--base-color-lemonchiffon)`;\n return `3px solid var(--base-color-lapislazuli)`;\n }};\n }\n\n /* remove search decoration */\n &::-webkit-search-decoration,\n &::-webkit-search-cancel-button,\n &::-webkit-search-results-button,\n &::-webkit-search-results-decoration {\n display: none;\n }\n\n /* remove number decoration */\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n`;\n\nexport const ShowHideButton = styled.button`\n position: absolute;\n width: 53px;\n top: 50%;\n margin-top: calc(var(--line-height-overline-1) / 2 * -1);\n right: 20px;\n border: none;\n background: none;\n padding: 0;\n display: block;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n color: var(--base-color-black);\n`;\n\nexport const TextLabel = styled.div<Pick<ITextFieldProps, 'darkMode'>>`\n margin-bottom: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return `var(--base-color-white)`;\n return `var(--base-color-black)`;\n }};\n`;\n\nexport const ErrorLabel = styled.div<Pick<ITextFieldProps, 'darkMode'>>`\n margin-top: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return `var(--base-color-white)`;\n return `var(--base-color-errorstate)`;\n }};\n`;\n","import React, { useState, forwardRef } from 'react';\n\nimport { Container, InputWrapper, Input, TextLabel, ErrorLabel, ShowHideButton } from './TextField.style';\n\nimport { ITextFieldProps } from '../../../types/formTypes';\nimport { AltHeader, Overline } from '../Typography';\n\n/**\n * A text field component, that wraps around the native `<input />` element\n * and adds some extra states and information around it (i.e. a text and an error labels,\n * error state, show/hide button for password field).\n *\n * # Label\n * You can use this component just like you would use a regular `<input />` element,\n * just with the extra `label` prop, to set the label of the content. For example:\n * ```tsx\n * <TextField label=\"This is a label\" />\n * ```\n *\n * # Error state\n * An error label will be shown below the text input field if the `error` prop exists.\n * Also input will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Password mode\n * If type `password` provided this will be rendered with the `Show/Hide` button over the input field.\n * Clicking on that changes type to `text` and back to `password`.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n * ```tsx\n * <div>\n * <WhiteBackgroundContainer>\n * <TextField label=\"...\" />\n * </WhiteBackgroundContainer>\n * <BlackBackgroundContainer>\n * <TextField darkMode label=\"...\" />\n * </BlackBackgroundContainer>\n * <BlueBackgroundContainer>\n * <TextField darkMode label=\"...\" />\n * </BlueBackgroundContainer>\n * </div>\n * ```\n */\nconst TextFieldComponent = (\n { label, type = 'text', error, darkMode = false, width, ...inputProps }: ITextFieldProps,\n ref: React.Ref<HTMLInputElement>\n): React.ReactElement => {\n const [showPassword, setShowPassword] = useState(false);\n\n const isPasswordField = type === 'password';\n const showHideButtonText = showPassword ? 'Hide' : 'Show';\n const inputType = (() => {\n if (type !== 'password') return type;\n if (showPassword) return 'text';\n return 'password';\n })();\n\n const showHideClickHandler = () => {\n setShowPassword((prev) => !prev);\n };\n\n return (\n <Container>\n <label htmlFor={inputProps.id}>\n {!!label && (\n <TextLabel darkMode={darkMode} data-testid=\"text-field-text-label\">\n <AltHeader level={6}>{label}</AltHeader>\n </TextLabel>\n )}\n <InputWrapper width={width}>\n <Input\n isPasswordField={isPasswordField}\n type={inputType}\n error={error}\n darkMode={darkMode}\n data-testid=\"text-field-input\"\n ref={ref}\n id={inputProps.id}\n {...inputProps}\n />\n {isPasswordField && (\n <ShowHideButton type=\"button\" onClick={showHideClickHandler}>\n <Overline level={1}>{showHideButtonText}</Overline>\n </ShowHideButton>\n )}\n </InputWrapper>\n </label>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"text-field-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\nconst TextField = forwardRef<HTMLInputElement, ITextFieldProps>(TextFieldComponent);\n\nexport default TextField;\n","import styled, { css } from 'styled-components';\nimport { ITextFieldProps } from '../../../types/formTypes';\nimport { Theme } from '../../../types/utility';\n\nexport const TextFieldContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst textStyles = css`\n font-family: var(--font-family-body);\n font-weight: ${({ theme }) => (theme as Theme).fonts.desktop.weights.body[1]};\n font-size: ${({ theme }) => (theme as Theme).fonts.desktop.sizes.altHeaders[6]};\n line-height: ${({ theme }) => (theme as Theme).spacing[7]};\n`;\n\nexport const Input = styled.input<Pick<ITextFieldProps, 'error' | 'darkMode'>>`\n ${textStyles}\n\n width: ${({ width }) => (width ? `${width}px` : '196px')};\n height: 48px;\n padding: 0px 20px;\n\n border: 1px solid ${({ theme }) => (theme as Theme).colors.darkgrey};\n outline: none;\n\n ${({ error, theme }) => {\n if (!error) return;\n // eslint-disable-next-line consistent-return\n return `\n border: 1px solid ${(theme as Theme).colors.error};\n `;\n }}\n\n :disabled {\n background-color: ${({ theme }) => (theme as Theme).colors.lightgrey};\n border: 1px solid transparent;\n outline: none;\n }\n\n :focus {\n outline: ${({ darkMode, theme }) => {\n if (darkMode) return `4px solid ${(theme as Theme).colors.lemonChiffon}`;\n return `3px solid ${(theme as Theme).colors.lapisLazuli}`;\n }}};\n }\n`;\n\nexport const TextLabel = styled.p<Pick<ITextFieldProps, 'darkMode'>>`\n ${textStyles};\n\n color: ${({ darkMode, theme }) => (darkMode ? (theme as Theme).colors.white : (theme as Theme).colors.black)};\n`;\n\nexport const ErrorLabel = styled.p<Pick<ITextFieldProps, 'darkMode'>>`\n ${textStyles};\n\n color: ${({ darkMode, theme }) => (darkMode ? (theme as Theme).colors.white : (theme as Theme).colors.error)};\n`;\n","import styled from 'styled-components';\nimport { ITextLinkProps } from '../../../types/types';\n\nexport const TextLinkWrapper = styled.a<ITextLinkProps>`\n border-bottom: 1px solid;\n padding-bottom: ${({ iconName }) =>\n iconName ? 'calc(var(--text-link-underline-offset) - 4px)' : 'var(--text-link-underline-offset)'};\n font-family: var(--harmonic-font-family-sans);\n font-size: 17px;\n font-weight: 500;\n line-height: 14px;\n letter-spacing: var(--letter-spacing-overline-1);\n color: var(--base-color-${({ color }) => color});\n width: fit-content;\n display: flex;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n\n @media (max-width: 600px) {\n font-size: 14px;\n}\n`;\n\nexport const TextLinkIconWrapper = styled.span`\n width: var(--button-icon-width);\n height: var(--button-icon-height);\n margin-left: var(--button-icon-margin);\n`;","import React, { FunctionComponent } from 'react';\nimport { TextLinkWrapper, TextLinkIconWrapper } from './TextLink.style';\nimport { Icon } from '../Icons';\nimport { ITextLinkProps } from '../../../types/types';\n\nconst TextLink: FunctionComponent<ITextLinkProps> = ({ children, iconName, iconDirection, color, ...rest }) => {\n const truncatedString = (children as string).substring(0, 30);\n return (\n <TextLinkWrapper color={color} iconName={iconName} {...rest}>\n {truncatedString}\n {iconName ? (\n <TextLinkIconWrapper data-testid=\"text-link-icon\">\n <Icon iconName={iconName} direction={iconDirection} color={color} />\n </TextLinkIconWrapper>\n ) : null}\n </TextLinkWrapper>\n );\n};\n\nexport default TextLink;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { TickboxLabelProps, TickboxInputProps, TickboxCheckmarkProps } from '../../../types/tickbox';\n\ninterface ITickboxErrorProps {\n dark: boolean;\n}\n\nexport const TickboxError = styled.div<ITickboxErrorProps>`\n margin-block: 20px;\n color: var(--base-color-${({ dark }) => (dark ? 'white' : 'errorstate')});\n`;\n\nexport const TickboxLabel = styled.label<TickboxLabelProps>`\n display: block;\n width: fit-content;\n position: relative;\n padding-left: 32px;\n color: var(\n --base-color-${({ dark, disabled }) => {\n if (dark) return disabled ? 'lightgrey' : 'white';\n return disabled ? 'darkgrey' : 'black';\n }}\n );\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n div {\n margin-left: -32px;\n }\n\n @media ${devices.mobileAndTablet} {\n &:focus {\n outline: 0;\n }\n }\n`;\n\nexport const TickboxCheckmark = styled.span<TickboxCheckmarkProps>`\n position: absolute;\n top: 1px;\n left: 0;\n height: 20px;\n width: 20px;\n padding: 3px;\n box-sizing: border-box;\n border: 1px solid\n var(\n --base-color-${({ dark, disabled, error }) => {\n if (error) return 'errorstate';\n if (disabled) return 'midgrey';\n if (dark) return 'white';\n return 'black';\n }}\n );\n background-color: var(--base-color-${({ disabled }) => (disabled ? 'lightgrey' : 'white')});\n outline: ${({ error, dark }) => (dark && error ? '1px solid var(--base-color-errorstate)' : 'none')};\n\n svg {\n display: none;\n }\n\n @media ${devices.mobile} {\n top: 0;\n }\n`;\n\nexport const TickboxInput = styled.input<TickboxInputProps>`\n display: none;\n\n &:checked ~ ${TickboxCheckmark} {\n background-color: var(\n --base-color-${({ dark, whiteBox, disabled }) => {\n if (disabled) return 'lightgrey';\n if (dark || whiteBox) return 'white';\n return 'black';\n }}\n );\n & svg {\n display: block;\n path {\n fill: var(\n --base-color-${({ dark, whiteBox, disabled }) => {\n if (disabled) return 'midgrey';\n if (dark || whiteBox) return 'black';\n return 'white';\n }}\n );\n }\n }\n }\n`;\n","import styled from 'styled-components';\nimport { ITickbox2Props } from '../../../types/formTypes';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const Tickbox = styled.div<Pick<ITickbox2Props, 'error' | 'darkMode' | 'disabled' | 'blackBox'>>`\n position: absolute;\n top: 1px;\n left: 0;\n z-index: 1;\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: ${({ error, darkMode, disabled }) => {\n if (error !== undefined) return '1px solid var(--error-color-state)';\n if (disabled) return '1px solid var(--base-color-midgrey)';\n if (darkMode) return '1px solid var(--base-color-white)';\n return '1px solid var(--base-color-black)';\n }};\n background-color: ${({ disabled, darkMode }) => {\n if (disabled) return 'var(--base-color-lightgrey)';\n if (darkMode) return 'var(--base-color-white)';\n return ' var(--base-color-white)';\n }};\n color: ${({ disabled, blackBox, darkMode }) => {\n if (disabled) return 'var(--base-color-midgrey)';\n if (darkMode) return 'var(--base-color-black)';\n if (blackBox) return 'var(--base-color-white)';\n return ' var(--base-color-black)';\n }};\n`;\n\nexport const TickboxLabel = styled.label<Pick<ITickbox2Props, 'darkMode' | 'blackBox'>>`\n position: relative;\n padding-left: 32px;\n input[type='checkbox'] {\n width: 1px;\n height: 1px;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n z-index: 0;\n &:checked + ${Tickbox} {\n background-color: ${({ blackBox, darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n if (blackBox) return 'var(--base-color-black)';\n return ' var(--base-color-white)';\n }};\n }\n &:focus + ${Tickbox} {\n outline: ${({ darkMode }) => {\n if (darkMode) return '4px solid var(--base-color-lemonchiffon)';\n return '3px solid var(--base-color-lapislazuli)';\n }};\n }\n }\n`;\n\nexport const TickboxIcon = styled.div`\n display: none;\n color: inherit;\n svg {\n font-size: 12px;\n width: 1em;\n height: 1em;\n fill: currentColor;\n color: inherit;\n path {\n fill: currentColor;\n color: inherit;\n }\n }\n input[type='checkbox']:checked + ${Tickbox} & {\n display: block;\n }\n`;\n\nexport const TextLabel = styled.div<Pick<ITickbox2Props, 'darkMode' | 'disabled'>>`\n color: ${({ darkMode, disabled }) => {\n if (darkMode && disabled) return 'var(--base-color-lightgrey)';\n if (darkMode) return 'var(--base-color-white)';\n if (disabled) return 'var(--base-color-darkgrey)';\n return 'var(--base-color-black)';\n }};\n`;\n\nexport const ErrorLabel = styled.div<Pick<ITickbox2Props, 'darkMode'>>`\n margin-top: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n return 'var(--base-color-errorstate)';\n }};\n`;\n","import React, { forwardRef } from 'react';\n\nimport { Container, TickboxLabel, Tickbox, TickboxIcon, TextLabel, ErrorLabel } from './Tickbox2.style';\n\nimport { ITickbox2Props } from '../../../types/formTypes';\nimport { BodyText, AltHeader } from '../Typography';\nimport { Icon } from '../Icons';\n\n/**\n * A Tickbox component, that wraps around the native `<input type=\"checkbox\"/>` element\n * and adds some extra styling, states and information around it (i.e. an error label,\n * error state).\n *\n * # Error state\n * An error label will be shown below the tickbox if the `error` prop exists.\n * Also tickbox will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n *\n * # Black box mode\n * If `blackBox` prop is true checked state will be styled as black box with white tick icon.\n * This style was used before as a default. Not preferred in new components.\n * This will be ignored if `darkMode` is true.\n */\nconst Tickbox2Component = (\n { children, disabled = false, error, darkMode = false, blackBox = false, ...inputProps }: ITickbox2Props,\n ref: React.Ref<HTMLInputElement>\n): React.ReactElement => {\n return (\n <Container>\n <TickboxLabel darkMode={darkMode} blackBox={blackBox}>\n <input {...inputProps} disabled={disabled} type=\"checkbox\" ref={ref} data-testid=\"tickbox-input\" />\n <Tickbox error={error} darkMode={darkMode} disabled={disabled} blackBox={blackBox}>\n <TickboxIcon>\n <Icon iconName=\"Tick\" />\n </TickboxIcon>\n </Tickbox>\n <TextLabel disabled={disabled} darkMode={darkMode} data-testid=\"tickbox-content\">\n <BodyText level={1}>{children}</BodyText>\n </TextLabel>\n </TickboxLabel>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"tickbox-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\nconst Tickbox2 = forwardRef<HTMLInputElement, ITickbox2Props>(Tickbox2Component);\n\nexport default Tickbox2;\n","import styled from 'styled-components';\nimport { ITimerProps } from '../../../types/timer';\nimport { devices } from '../../../styles/viewports';\n\nexport const TimerWrapper = styled.div<Pick<ITimerProps, 'color'>>`\n color: var(--base-color-${({ color }) => color});\n`;\n\nexport const Line = styled.div<Pick<ITimerProps, 'color'>>`\n height: 1px;\n background-color: var(--base-color-${({ color }) => color});\n margin-top: 32px;\n\n @media ${devices.mobileAndTablet} {\n margin-top: 20px;\n }\n`;\n\nexport const TitleWrapper = styled.div`\n margin-bottom: 16px;\n\n @media ${devices.mobileAndTablet} {\n margin-bottom: 8px;\n }\n`;\n\nexport const ValuesWrapper = styled.div`\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n display: flex;\n\n @media ${devices.tablet} {\n font-size: var(--font-size-header-5);\n }\n`;\n\nexport const TimerLabel = styled.div`\n font-family: var(--font-family-overline);\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n line-height: var(--line-height-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n text-transform: var(--text-transform-overline);\n margin-top: 4px;\n`;\n\nexport const TimerValueSeparator = styled.div`\n margin: 0 20px;\n\n @media ${devices.tablet} {\n margin: 0 12px;\n }\n\n @media ${devices.mobile} {\n margin: 0 12px;\n }\n`;\n\nexport const TimerValueWrapper = styled.div``;\n\nexport const TimerValue = styled.div``;\n","import React, { FunctionComponent } from 'react';\nimport moment from 'moment';\nimport {\n TimerValueWrapper,\n TimerValue,\n TimerLabel,\n TimerValueSeparator,\n TimerWrapper,\n ValuesWrapper,\n Line,\n TitleWrapper,\n} from './Timer.style';\nimport { ITimerProps } from '../../../types/timer';\nimport { Colors } from '../../../types/types';\nimport { AltHeader } from '../Typography';\n\nconst Timer: FunctionComponent<ITimerProps> = ({\n endDate,\n title,\n endDateHandler,\n bottomLine = true,\n color = Colors.Black,\n}) => {\n const [seconds, setSeconds] = React.useState('00');\n const [minutes, setMinutes] = React.useState('00');\n const [hours, setHours] = React.useState('00');\n const [days, setDays] = React.useState('00');\n const [isEndDateReached, setIsEndDateReached] = React.useState(false);\n\n const renderTimerValue = (value: string, label: string, separator: boolean = true): React.ReactElement => (\n <>\n <TimerValueWrapper>\n <TimerValue className=\"harmonic-timer-value\">{value}</TimerValue>\n <TimerLabel className=\"harmonic-timer-label\">{label}</TimerLabel>\n </TimerValueWrapper>\n {separator && <TimerValueSeparator>:</TimerValueSeparator>}\n </>\n );\n\n React.useEffect(() => {\n if (isEndDateReached) return undefined;\n\n // We use this to set values for the timer immediately\n const setIntervalAndExecute = (fn: VoidFunction, delay: number) => {\n fn();\n return setInterval(fn, delay);\n };\n\n const updateValues = () => {\n const futureDate = moment(endDate);\n const nowDate = moment();\n const differenceInMilliseconds = futureDate.valueOf() - nowDate.valueOf();\n const difference = moment(differenceInMilliseconds).utc();\n if (differenceInMilliseconds < 0) {\n setIsEndDateReached(true);\n if (endDateHandler) endDateHandler();\n } else {\n const fullDaysLeft = Math.floor(futureDate.diff(nowDate, 'days', true));\n const daysDiff = fullDaysLeft < 10 ? `0${fullDaysLeft}` : fullDaysLeft.toString();\n const hoursDiff = difference.format('HH');\n const minutesDiff = difference.format('mm');\n const secondsDiff = difference.format('ss');\n\n setDays(daysDiff);\n setHours(hoursDiff);\n setMinutes(minutesDiff);\n setSeconds(secondsDiff);\n }\n };\n\n const interval = setIntervalAndExecute(updateValues, 1000);\n\n return () => {\n clearInterval(interval);\n };\n });\n\n const hideTimer = moment(endDate).isBefore(moment());\n\n if (hideTimer) return null;\n\n return (\n <TimerWrapper color={color}>\n {title && (\n <TitleWrapper className=\"harmonic-timer-title-wrapper\">\n <AltHeader level={5}>{title}</AltHeader>\n </TitleWrapper>\n )}\n <ValuesWrapper className=\"harmonic-timer-values-wrapper\">\n {renderTimerValue(days, 'Days')}\n {renderTimerValue(hours, 'Hrs')}\n {renderTimerValue(minutes, 'Mins')}\n {renderTimerValue(seconds, 'Secs', false)}\n </ValuesWrapper>\n {bottomLine && <Line className=\"harmonic-timer-bottom-line\" data-testid=\"timer-bottom-line\" color={color} />}\n </TimerWrapper>\n );\n};\n\nexport default Timer;\n","import styled from 'styled-components';\n\nexport const TypeTagsContainer = styled.ul`\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n & li {\n display: inline-block;\n margin: 0;\n }\n\n & li:before {\n content: '—';\n margin: 0 0.5em;\n }\n\n & li:first-child:before {\n display: none;\n }\n`;\n","import React from 'react';\nimport { TypeTagsContainer } from './TypeTags.style';\nimport { ITypeTagsProps } from '../../../types/types';\nimport { Overline } from '../Typography';\n\nconst TypeTags = ({ list }: ITypeTagsProps) => {\n return (\n <TypeTagsContainer>\n {list.map((t) => (\n <Overline level={1} tag=\"li\" key={t}>\n {t}\n </Overline>\n ))}\n </TypeTagsContainer>\n );\n};\n\nexport default TypeTags;\n","import styled, { css } from 'styled-components';\n\ntype WithDeviceVolume = {\n volumeHidden?: boolean;\n};\n\nconst VideoPlayButton = styled.button`\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background-color: #fff;\n border: none;\n padding: 12px;\n cursor: pointer;\n`;\n\nconst VideoFullscreenButton = styled.button`\n width: 56px;\n height: 36px;\n background-color: rgb(26, 26, 26, 0.6);\n border-radius: 5px;\n padding: 5px 14px;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n`;\n\nconst VideoControlsWrapper = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n`;\n\nconst VideoControlsInnerWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 40px 17px 30px;\n`;\n\nconst LeftWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst VideoVolume = styled.input`\n width: 100px;\n margin-left: 24px;\n`;\n\nconst VideoMute = styled.button`\n width: 17px;\n height: 17px;\n background: none;\n border: none;\n padding: 0;\n svg {\n width: 100%;\n height: 100%;\n }\n cursor: pointer;\n`;\n\nconst thumbStyles = css`\n -webkit-appearance: none;\n appearance: none;\n border: none;\n height: 8px;\n width: 8px;\n border-radius: 50%;\n background: #ffffff;\n border: none;\n transform: translateY(-25%);\n`;\n\nconst trackStyles = css`\n width: 100%;\n cursor: pointer;\n height: 4px;\n background: rgb(241, 241, 241, 0.5);\n border-radius: 1.3px;\n border: none;\n`;\n\nconst VolumeControlsWrapper = styled.div<WithDeviceVolume>`\n display: flex;\n margin: 0 12px;\n padding: 0;\n background-color: rgb(26, 26, 26, 0.6);\n border-radius: 5px;\n height: 36px;\n width: ${({ volumeHidden }) => (volumeHidden ? '40px' : '100px')};\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n /* Range slider overrides */\n input[type='range' i] {\n -webkit-appearance: none;\n appearance: none;\n width: 42px;\n margin: 0;\n margin-left: 7px;\n background: transparent; /* Otherwise white in Chrome */\n\n ::-webkit-slider-runnable-track {\n ${trackStyles}\n }\n ::-moz-range-track {\n ${trackStyles}\n }\n ::-ms-track {\n ${trackStyles}\n }\n ::-ms-fill-lower {\n ${trackStyles}\n }\n ::-ms-fill-upper {\n ${trackStyles}\n }\n\n ::-webkit-slider-thumb {\n ${thumbStyles}\n }\n ::-moz-range-thumb {\n ${thumbStyles}\n }\n ::-ms-thumb {\n ${thumbStyles}\n }\n }\n`;\n\nconst StoryBookWrapper = styled.div`\n position: relative;\n width: 100%;\n height: 70vh;\n background: #c8102e;\n video {\n min-width: 100%;\n min-height: 100%;\n object-fit: cover;\n }\n`;\n\nexport {\n VideoPlayButton,\n VideoControlsWrapper,\n VideoVolume,\n VideoMute,\n VolumeControlsWrapper,\n StoryBookWrapper,\n VideoFullscreenButton,\n LeftWrapper,\n VideoControlsInnerWrapper,\n};\n","import React, { ChangeEvent, FunctionComponent, useCallback, useEffect, useState } from 'react';\nimport { Icon } from '../Icons';\nimport {\n VideoControlsWrapper,\n VolumeControlsWrapper,\n VideoMute,\n VideoVolume,\n VideoPlayButton,\n VideoFullscreenButton,\n LeftWrapper,\n VideoControlsInnerWrapper,\n} from './VideoControls.style';\nimport { IVideoControlsProps } from '../../../types/types';\n\nconst FullscreenButton = ({\n isFullscreen,\n handleMinimise,\n handleFullscreen,\n}: {\n isFullscreen: boolean;\n handleMinimise: () => void;\n handleFullscreen: () => void;\n}) => {\n return (\n <VideoFullscreenButton\n id=\"fullscreen\"\n onClick={isFullscreen ? handleMinimise : handleFullscreen}\n className=\"video-fullscreen-button\"\n data-testid=\"video-fullscreen-button\"\n aria-label={isFullscreen ? 'Minimise video' : 'Fullscreen video'}\n >\n <Icon data-testid=\"fullscreen-icon\" iconName={isFullscreen ? 'Minimise' : 'FullScreen'} color=\"white\" />\n </VideoFullscreenButton>\n );\n};\n\nconst VideoControls: FunctionComponent<IVideoControlsProps> = ({\n videoElementId,\n videoContainerId,\n muted = true,\n autoPlay = false,\n soundControl = false,\n fullScreenOption = false,\n loop = false,\n}) => {\n const [playing, setPlaying] = useState(autoPlay && muted); // browsers won't autoplay an unmuted video.\n const [isMuted, setIsMuted] = useState(muted);\n const [volume, setVolume] = useState(50);\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n const getVideoElement = (): HTMLMediaElement | null => document.querySelector(`#${videoElementId}`);\n\n useEffect(() => {\n const video = getVideoElement();\n if (video) {\n video.loop = loop;\n }\n }, [loop]);\n\n useEffect(() => {\n const handleFullscreenChange = () => {\n setIsFullscreen(!!document.fullscreenElement);\n };\n\n document.addEventListener('fullscreenchange', handleFullscreenChange);\n\n return () => {\n document.removeEventListener('fullscreenchange', handleFullscreenChange);\n };\n }, []);\n\n const handleFullscreen = useCallback(async () => {\n const videoContainer = document.querySelector(`#${videoContainerId}`);\n\n if (!videoContainer?.requestFullscreen) return;\n await videoContainer.requestFullscreen();\n\n setIsFullscreen(true);\n }, []);\n\n const handleMinimise = useCallback(async () => {\n if (!document.fullscreenElement) return;\n await document.exitFullscreen();\n\n setIsFullscreen(false);\n }, []);\n\n const handlePlay = useCallback(() => {\n const video = getVideoElement();\n if (!video) return;\n if (playing) {\n video.pause();\n setPlaying(false);\n } else {\n video?.play();\n setPlaying(true);\n }\n }, [playing]);\n\n const handleMute = useCallback(() => {\n const video = getVideoElement();\n if (video) {\n if (isMuted) {\n video.muted = false;\n setIsMuted(false);\n } else {\n video.muted = true;\n setIsMuted(true);\n }\n }\n }, [isMuted]);\n\n const handleVolume = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const video = getVideoElement();\n const newVolume = Number(e.target.value);\n if (video) {\n video.volume = newVolume / 100;\n if (newVolume === 0) {\n video.muted = true;\n setIsMuted(true);\n } else {\n video.muted = false;\n setIsMuted(false);\n }\n setVolume(newVolume);\n }\n },\n [isMuted]\n );\n\n return (\n <VideoControlsWrapper className=\"video-controls-container\">\n <VideoControlsInnerWrapper>\n <LeftWrapper>\n <VideoPlayButton\n id=\"play\"\n onClick={handlePlay}\n className=\"video-play-button\"\n data-testid=\"video-play-button\"\n aria-label={!playing ? 'Play' : 'Pause'}\n >\n <Icon iconName={!playing ? 'Play' : 'Pause'} />\n </VideoPlayButton>\n\n <VolumeControlsWrapper volumeHidden={!soundControl}>\n <VideoMute\n id=\"mute\"\n className=\"video-mute-button\"\n data-testid=\"video-mute-button\"\n onClick={handleMute}\n aria-label={muted ? 'Unmute' : 'Mute'}\n >\n <Icon data-testid=\"mute-icon\" iconName={isMuted ? 'Muted' : 'Volume'} color=\"white\" />\n </VideoMute>\n {soundControl && (\n <VideoVolume\n id=\"vol-control\"\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"1\"\n onChange={handleVolume}\n value={isMuted ? 0 : volume}\n aria-label={`Volume - ${volume}%`}\n />\n )}\n </VolumeControlsWrapper>\n </LeftWrapper>\n {fullScreenOption && (\n <FullscreenButton\n isFullscreen={isFullscreen}\n handleFullscreen={handleFullscreen}\n handleMinimise={handleMinimise}\n />\n )}\n </VideoControlsInnerWrapper>\n </VideoControlsWrapper>\n );\n};\n\nexport default VideoControls;\n","import styled from 'styled-components';\nimport { IStepperProps } from '../../../types/formTypes';\n\nexport const StepperWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: left;\n align-items: left;\n`;\n\nexport const StepperError = styled.div<Pick<IStepperProps, 'darkMode'>>`\n color: var(--base-color-${({ darkMode }) => (darkMode ? 'white' : 'errorstate')});\n margin-block: 15px 0;\n\n * {\n margin: 0;\n }\n`;\n\nexport const StepperBox = styled.div<Pick<IStepperProps, 'error' | 'darkMode' | 'disabled'>>`\n width: 154px;\n height: 48px;\n display: flex;\n flex-direction: row;\n align-items: center;\n border: 1px solid\n var(\n --base-color-${({ darkMode, disabled, error }) => {\n if (error) return 'errorstate';\n if (disabled) return 'midgrey';\n if (darkMode) return 'darkgrey';\n return 'darkgrey';\n }}\n );\n background-color: var(--base-color-${({ disabled }) => (disabled ? 'lightgrey' : 'white')});\n ${({ error, darkMode }) => (error && darkMode ? 'outline: 1px solid var(--base-color-errorstate);' : '')};\n\n * {\n color: var(--base-color-${({ disabled }) => (disabled ? 'midgrey' : 'black')});\n word-break: unset;\n user-select: none;\n }\n\n path {\n fill: var(--base-color-${({ disabled }) => (disabled ? 'midgrey' : 'black')}) !important;\n }\n\n & > * {\n width: 51px;\n }\n`;\n\nexport const StepperValue = styled.input<Pick<IStepperProps, 'disabled'>>`\n width: 51px;\n border: 0;\n text-align: center;\n font-family: var(--font-family-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n background-color: transparent;\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'text')};\n`;\n\nexport const StepperButton = styled.div<Pick<IStepperProps, 'disabled'>>`\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n\n span {\n display: flex;\n justify-content: center;\n }\n\n svg {\n width: 40%;\n height: auto;\n }\n`;\n","import styled from 'styled-components';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { devices } from '../../../styles/viewports';\nimport zIndexes from '../../../styles/zIndexes';\nimport { INavigationWrapperProps } from '../../../types/navigation';\n\nexport const NavigationWrapper = styled.div<INavigationWrapperProps>`\n @media ${devices.mobileAndTablet} {\n ${({ isMenuOpen }) =>\n isMenuOpen &&\n `\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: ${zIndexes.overlay};\n background-color: var(--base-color-white);\n overflow-y: auto;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n `}\n }\n`;\n\nexport const FullScreenContainer = styled.div`\n background-color: var(--base-color-black);\n width: 100vw;\n position: absolute;\n z-index: ${zIndexes.searchOverlay};\n opacity: 0.4;\n`;\n\nexport const NavigationGrid = styled(Grid)`\n position: relative;\n background-color: var(--base-color-white);\n height: 140px;\n z-index: ${zIndexes.navigation};\n\n @media ${devices.mobile} {\n height: 80px;\n }\n`;\n\nexport const SearchBackground = styled.div<{ visible?: boolean }>`\n visibility: ${({ visible }) => (visible ? 'visible' : 'hidden')};\n background-color: var(--base-color-white);\n height: 100px;\n border-top: 1px solid var(--base-color-light-grey);\n width: 100%;\n position: absolute;\n top: 140px;\n z-index: ${zIndexes.search};\n\n @media ${devices.mobile} {\n height: 100%;\n top: 80px;\n }\n`;\n\nexport const GridItemSearch = styled(GridItem)<{ visible?: boolean }>`\n visibility: ${({ visible }) => (visible ? 'visible' : 'hidden')};\n background-color: var(--base-color-white);\n border-top: 1px solid var(--base-color-light-grey);\n width: 100%;\n position: absolute;\n top: 140px;\n z-index: ${zIndexes.search};\n height: 100px;\n\n @media ${devices.mobile} {\n height: 100%;\n top: 80px;\n }\n`;\n\nexport const NavigationGridMobile = styled(Grid)`\n display: none;\n\n @media ${devices.mobileAndTablet} {\n display: grid;\n background-color: var(--base-color-white);\n padding-top: ${({ theme }) => theme.spacing[12]};\n padding-bottom: var(--navigation-large-margin);\n }\n`;\n\nexport const LogoContainer = styled.div`\n height: 140px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n &&& .logoImg {\n height: 96px;\n width: 66px;\n }\n\n @media ${devices.mobile} {\n height: 80px;\n\n &&& .logoImg {\n width: 100%;\n height: 64px;\n }\n }\n`;\n\nexport const MenuContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 140px;\n\n @media ${devices.mobileAndTablet} {\n flex-direction: row;\n height: 80px;\n justify-content: flex-end;\n }\n`;\n\nexport const NavContainer = styled.div`\n height: 40px;\n margin-top: auto;\n\n @media ${devices.mobileAndTablet} {\n background-color: var(--base-color-white);\n height: auto;\n margin-top: 0px;\n }\n`;\n\nexport const NavContainerGridItem = styled(GridItem)`\n @media ${devices.desktop} {\n grid-column: 3 / span 14;\n }\n`;\n\nexport const NavTopContainer = styled.div`\n height: 26px;\n right: 50px;\n top: 20px;\n position: absolute;\n\n @media ${devices.mobileAndTablet} {\n margin-top: 1px;\n position: inherit;\n }\n`;\n","import styled from 'styled-components';\n\nexport const LogoWrapper = styled.div`\n width: 66px;\n height: auto;\n cursor: pointer;\n & img {\n width: auto;\n height: 100%;\n }\n`;\n","import React from 'react';\nimport { LogoWrapper } from './Logo.style';\nimport { ILogoProps } from '../../../types/types';\nimport { devices } from '../../../styles/viewports';\n\nconst Logo = ({\n id = 'Logo',\n dataRoh = 'imgLogo',\n urlLink = 'https://www.rbo.org.uk/',\n desktopImage,\n devicesImage,\n title = 'Royal Ballet and Opera',\n altText = 'Royal Ballet and Opera Homepage',\n}: ILogoProps) => {\n return (\n <a data-roh={dataRoh} rel=\"noopener noreferrer\" href={urlLink} title={title}>\n <LogoWrapper id={id} className=\"logoImg\">\n <picture>\n <source srcSet={devicesImage || desktopImage} media={devices.mobileAndTablet} />\n <img src={desktopImage} alt={altText} />\n </picture>\n </LogoWrapper>\n </a>\n );\n};\n\nexport default Logo;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const NavTopContainer = styled.div`\n display: flex;\n flex-direction: row;\n column-gap: 16px;\n justify-content: flex-end;\n height: 26px;\n\n @media ${devices.mobile} {\n column-gap: 8px;\n }\n`;\n","import styled from 'styled-components';\nimport { IBasketProps } from '../../../types/navigation';\n\nexport const BasketContainer = styled.div<IBasketProps>`\n display: inline-flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n border-bottom: 1px solid var(--base-color-transparent);\n\n ${({ selected, colorPrimary }) => {\n if (selected) {\n return `\n border-bottom: 1px solid var(--base-color-${colorPrimary});\n && a {\n color: var(--base-color-${colorPrimary});\n }\n && svg path {\n fill: var(--base-color-${colorPrimary});\n }\n `;\n }\n return '';\n }}\n\n :hover {\n border-bottom: 1px solid var(--base-color-${({ colorPrimary }) => colorPrimary});\n && a {\n color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n && svg path {\n fill: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n\n ${({ isActive, colorPrimary }) => {\n if (isActive) {\n return `\n && a {\n color: var(--base-color-${colorPrimary});\n }\n && svg path {\n fill: var(--base-color-${colorPrimary});\n }\n `;\n }\n return '';\n }}\n`;\n\nexport const SvgContainer = styled.div`\n position: relative;\n\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n`;\n\nexport const NumContainer = styled.div`\n display: flex;\n justify-content: center;\n width: 12px;\n height: 12px;\n position: absolute;\n top: 8px;\n margin-left: 6px;\n\n & .basket-num {\n color: white;\n font-size: 10px;\n font-family: var(--font-family-navigation);\n }\n`;\n\nexport const BasketText = styled.a`\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n color: var(--base-color-black);\n margin-left: 6px;\n text-decoration: none;\n`;\n","export const getSecondsUntil = (expiryUnixTimestamp: number | undefined): number => {\n if (!expiryUnixTimestamp) return 0;\n const now = Date.now();\n const expiry = new Date(expiryUnixTimestamp * 1000);\n const diff = Math.round((expiry.getTime() - now) / 1000);\n return diff > 0 ? diff : 0;\n};\n\nexport const formatTime = (seconds: number): string => {\n if (seconds > 60) {\n return `${Math.ceil(seconds / 60)} mins`;\n }\n return `${seconds} sec${seconds === 1 ? '' : 's'}`;\n};\n\nexport const checkTimeRed = (seconds: number): boolean => {\n if (seconds <= 0) {\n return false;\n }\n return seconds / 60 <= 5;\n};\n","import React from 'react';\nimport { BasketContainer, SvgContainer, NumContainer, BasketText } from './Basket.style';\nimport { IBasketProps } from '../../../types/navigation';\nimport { Icon } from '../../atoms/Icons';\nimport { useBasket } from './hooks';\n\nconst Basket = ({\n text,\n expiryTime,\n link,\n selected = false,\n numItems = 0,\n numVirtualItems = 0,\n onClick,\n colorPrimary = 'primary',\n}: IBasketProps) => {\n const onClickHandler = () => {\n if (onClick) {\n onClick(link || '/basket');\n }\n };\n\n const { basketText, basketTotalNumItems, basketIsActive, basketIsEmpty } = useBasket(\n expiryTime,\n numItems,\n numVirtualItems\n );\n\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onClickHandler();\n }\n };\n\n return (\n <BasketContainer\n selected={selected}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n colorPrimary={colorPrimary}\n isActive={basketIsActive}\n tabIndex={0}\n >\n <SvgContainer>\n {basketIsEmpty ? (\n <Icon iconName=\"Basket\" ariaLabel=\"basket icon\" />\n ) : (\n <>\n <Icon iconName=\"BasketFull\" />\n <NumContainer>\n <span className=\"basket-num\">{basketTotalNumItems}</span>\n </NumContainer>\n </>\n )}\n </SvgContainer>\n <div>\n {!basketIsEmpty ? <BasketText data-testid=\"baskettext\">{expiryTime ? basketText : text}</BasketText> : ''}\n </div>\n </BasketContainer>\n );\n};\n\nexport default Basket;\n","import { useState, useEffect } from 'react';\nimport { getSecondsUntil, formatTime, checkTimeRed } from './helpers';\n\ninterface BasketProps {\n basketText?: string;\n basketTotalNumItems: number;\n basketIsActive?: boolean;\n basketIsEmpty: boolean;\n}\n\nexport const useBasket = (expiryUnixTimestamp?: number, numItems = 0, numVirtualItems = 0): BasketProps => {\n const [basketText, setBasketText] = useState<string | undefined>();\n const [basketIsActive, setBasketIsActive] = useState<boolean>();\n const [basketTotalNumItems, setBasketTotalNumItems] = useState<number>(0);\n const [seconds, setSeconds] = useState<number>(getSecondsUntil(expiryUnixTimestamp));\n const [timer, setTimer] = useState<NodeJS.Timeout | undefined>();\n const [basketIsEmpty, setBasketIsEmpty] = useState<boolean>(true);\n\n useEffect(() => {\n if (numItems > 0 || numVirtualItems > 0) {\n setBasketIsEmpty(false);\n } else {\n setBasketIsEmpty(true);\n }\n setBasketTotalNumItems(numItems + numVirtualItems);\n }, [numItems, numVirtualItems]);\n\n useEffect(() => {\n if (!expiryUnixTimestamp) return;\n setSeconds(getSecondsUntil(expiryUnixTimestamp));\n }, [expiryUnixTimestamp]);\n\n useEffect(() => {\n if (timer) {\n clearInterval(timer); // clears the old timer before setting a new one\n }\n\n if (!expiryUnixTimestamp || numItems === 0) return () => undefined;\n const interval = setInterval(() => {\n setSeconds(getSecondsUntil(expiryUnixTimestamp));\n }, 1000);\n setTimer(interval);\n\n return () => clearInterval(interval);\n }, [expiryUnixTimestamp]);\n\n useEffect(() => {\n if (!timer) return;\n if (seconds > 0) {\n setBasketText(formatTime(seconds));\n setBasketIsActive(checkTimeRed(seconds));\n } else {\n clearInterval(timer);\n setBasketTotalNumItems(numVirtualItems);\n setBasketText('');\n setBasketIsActive(false);\n setBasketIsEmpty(true);\n }\n }, [seconds, timer]);\n\n return { basketText, basketTotalNumItems, basketIsActive, basketIsEmpty };\n};\n","import styled from 'styled-components';\nimport { ISearchProps } from '../../../types/navigation';\n\nexport const SearchContainer = styled.div<ISearchProps>`\n display: inline-flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n border-bottom: 1px solid var(--base-color-transparent);\n ${({ selected, colorPrimary }) => {\n if (selected) {\n return `\n border-bottom: 1px solid var(--base-color-${colorPrimary});\n && svg path {\n fill: var(--base-color-${colorPrimary});\n }\n `;\n }\n return '';\n }}\n\n :hover {\n border-bottom: 1px solid var(--base-color-${({ colorPrimary }) => colorPrimary});\n && svg path {\n fill: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n`;\n\nexport const SvgContainer = styled.div`\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n`;\n","import React from 'react';\nimport { SearchContainer, SvgContainer } from './Search.style';\nimport { ISearchProps } from '../../../types/navigation';\nimport SvgIcon from '../Icons/Icons';\n\nconst Search = ({ selected = false, onClick, colorPrimary = 'primary' }: ISearchProps) => {\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onClick?.();\n }\n };\n return (\n <SearchContainer\n selected={selected}\n onClick={onClick}\n onKeyDown={onKeyDownHandler}\n data-testid=\"search-icon\"\n colorPrimary={colorPrimary}\n tabIndex={0}\n >\n <SvgContainer>\n <SvgIcon iconName=\"Search\" />\n </SvgContainer>\n </SearchContainer>\n );\n};\n\nexport default Search;\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport React, { useEffect, useState, useRef } from 'react';\nimport { TabContainer, OptionsContainer, OptionItem } from './Dropdown.style';\nimport { IDropdownProps, INodeProps } from '../../../types/types';\nimport Tab from '../Tab';\n\nconst Dropdown = ({\n title,\n titleLink,\n selected = false,\n options = [],\n onChange,\n iconName = 'DropdownArrow',\n isMobileBehaviour = false,\n withOptionsInMobile = true,\n withIcon = 'right',\n colorPrimary = 'primary',\n}: IDropdownProps) => {\n const node: INodeProps = useRef();\n const [open, setOpen] = useState(false);\n const [lockOpen, setLockOpen] = useState(false);\n const [titleSelected, setTitleSelected] = useState(selected);\n let timerCloseOptions: NodeJS.Timeout;\n\n const handleClick = (e: MouseEvent) => {\n if (node.current.contains(e.target)) {\n return;\n }\n\n if (isMobileBehaviour) {\n if (timerCloseOptions) {\n clearTimeout(timerCloseOptions);\n }\n\n timerCloseOptions = setTimeout(() => {\n setOpen(false);\n setLockOpen(false);\n setTitleSelected(false);\n }, 200);\n } else {\n setOpen(false);\n setLockOpen(false);\n setTitleSelected(false);\n }\n };\n\n const handleChange = (optionLink: string) => {\n if (onChange) {\n onChange(optionLink);\n }\n\n setOpen(false);\n setLockOpen(false);\n setTitleSelected(false);\n };\n\n const withOptions = () => options.length > 0;\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClick);\n\n return () => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, []);\n\n const handleClickTitle = (value: string) => {\n if (withOptions()) {\n setLockOpen(true);\n setOpen(true);\n setTitleSelected(titleSelected);\n }\n\n if (onChange) {\n onChange(value);\n }\n };\n\n const onMouseHandler = (value: boolean) => {\n if (withOptions() && !lockOpen) {\n setOpen(value);\n setTitleSelected(value);\n }\n };\n\n const clickMobileHandler = () => {\n if (withOptions()) {\n setOpen(!open);\n setTitleSelected(!open);\n }\n };\n\n const onFocusTitleHandler = () => {\n if (withOptions()) {\n setLockOpen(true);\n setOpen(true);\n setTitleSelected(titleSelected);\n }\n };\n\n const onResetHandler = () => {\n setOpen(false);\n setLockOpen(false);\n setTitleSelected(false);\n };\n\n const onBlurHandler = (i: number) => {\n if (i === options.length - 1) {\n onResetHandler();\n }\n };\n\n const onKeyDownHandler = (e: React.KeyboardEvent, link: string) => {\n if (e.key === 'Enter') {\n handleChange(link);\n } else if (e.key === 'Escape') {\n onResetHandler();\n }\n };\n\n const renderTab = () => {\n return (\n <>\n <Tab\n title={title}\n titleLink={titleLink}\n selected={titleSelected}\n iconName={iconName}\n withIcon={withIcon}\n withTextInMobile={withOptionsInMobile}\n onClick={(value) => handleClickTitle(value)}\n onFocus={onFocusTitleHandler}\n onReset={onResetHandler}\n colorPrimary={colorPrimary}\n />\n {withOptions() && open && (\n <OptionsContainer withOptionsInMobile={withOptionsInMobile} withIcon={withIcon} colorPrimary={colorPrimary}>\n {options.map((optionItem, index) => (\n <OptionItem\n key={`key-${index}-${optionItem.option}`}\n onClick={() => handleChange(optionItem.optionLink)}\n onBlur={() => onBlurHandler(index)}\n onKeyDown={(e) => onKeyDownHandler(e, optionItem.optionLink)}\n colorPrimary={colorPrimary}\n tabIndex={0}\n href={optionItem.optionLink}\n >\n {optionItem.option}\n </OptionItem>\n ))}\n </OptionsContainer>\n )}\n </>\n );\n };\n\n return (\n <>\n {isMobileBehaviour ? (\n <TabContainer ref={node} onClick={() => clickMobileHandler()}>\n {renderTab()}\n </TabContainer>\n ) : (\n <TabContainer ref={node} onMouseEnter={() => onMouseHandler(true)} onMouseLeave={() => onMouseHandler(false)}>\n {renderTab()}\n </TabContainer>\n )}\n </>\n );\n};\n\nexport default Dropdown;\n","import React from 'react';\nimport { IAccountProps } from '../../../types/navigation';\nimport Dropdown from '../Dropdown';\n\nconst Account = ({ title, options = [], onClick, iconName, titleLink, colorPrimary = 'primary' }: IAccountProps) => {\n const onChangeHandler = (link: string) => {\n if (onClick) {\n onClick(link);\n }\n };\n\n return (\n <Dropdown\n titleLink={titleLink}\n title={title}\n options={options}\n onChange={onChangeHandler}\n iconName={iconName}\n withOptionsInMobile={false}\n withIcon=\"left\"\n colorPrimary={colorPrimary}\n />\n );\n};\n\nexport default Account;\n","import React from 'react';\nimport { NavTopContainer } from './NavTop.style';\nimport { INavTopProps } from '../../../types/navigation';\nimport Basket from '../Basket';\nimport Search from '../../atoms/Search';\nimport Account from '../../atoms/Account';\n\nconst NavTop = ({\n accountText,\n accountLink,\n accountIcon,\n accountOptions,\n onLink,\n basketText,\n basketExpiryUnixTimestamp,\n basketLink,\n basketNumItems,\n basketNumVirtualItems,\n onClickSearch,\n isShowSearch = false,\n colorPrimary = 'primary',\n}: INavTopProps) => {\n return (\n <NavTopContainer>\n <Search onClick={onClickSearch} selected={isShowSearch} colorPrimary={colorPrimary} />\n <Basket\n link={basketLink}\n text={basketText}\n expiryTime={basketExpiryUnixTimestamp}\n numItems={basketNumItems}\n numVirtualItems={basketNumVirtualItems}\n onClick={onLink}\n colorPrimary={colorPrimary}\n />\n <Account\n title={accountText}\n titleLink={accountLink}\n options={accountOptions}\n iconName={accountIcon}\n onClick={onLink}\n colorPrimary={colorPrimary}\n />\n </NavTopContainer>\n );\n};\n\nexport default NavTop;\n","import styled from 'styled-components';\nimport { ITabsProps } from '../../../types/types';\nimport { devices } from '../../../styles/viewports';\n\nexport const TabsContainer = styled.div`\n display: inline-flex;\n flex-direction: row;\n column-gap: 32px;\n`;\n\nexport const ItemsContainer = styled.div<ITabsProps>`\n display: inline-flex;\n flex-direction: row;\n column-gap: 32px;\n\n @media ${devices.desktop} {\n column-gap: 15px;\n }\n\n @media ${devices.desktop}, ${devices.largeDesktop} {\n div:last-child > div {\n right: 1px;\n }\n }\n\n @media ${devices.mobileAndTablet} {\n ${(props) => {\n if (props.showMenu) {\n return `\n display: flex;\n flex-direction: column;\n row-gap: 32px;\n `;\n }\n return `display: none;`;\n }}\n }\n`;\n\nexport const MenuContainer = styled.div<ITabsProps>`\n display: none;\n width: 60px;\n\n & a {\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-black);\n text-decoration: none;\n cursor: pointer;\n\n :hover {\n color: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n\n :hover {\n && svg path {\n fill: var(--base-color-${({ colorPrimary }) => colorPrimary});\n }\n }\n\n @media ${devices.mobileAndTablet} {\n display: block;\n\n svg {\n width: 24px;\n height: 24px;\n margin-left: 40px;\n margin-top: -20px;\n }\n\n a {\n margin-left: 20px;\n }\n }\n`;\n\nexport const MenuItem = styled.div`\n @media ${devices.mobileAndTablet} {\n a {\n margin-left: 20px;\n }\n }\n`;\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useState } from 'react';\nimport { TabsContainer, MenuContainer, ItemsContainer, MenuItem } from './Tabs.style';\nimport { ITabsProps } from '../../../types/types';\nimport ControlledDropdown from '../../atoms/ControlledDropdown';\nimport SvgIcon from '../../atoms/Icons/Icons';\n\nconst Tabs = ({ items = [], onChange, onShowMenu, showMenu = false, colorPrimary = 'primary' }: ITabsProps) => {\n const [openMenu, setOpenMenu] = useState(false);\n const [activeDropdown, setActiveDropdown] = useState(-1);\n const [hoverOverDropdown, setHoverOverDropdown] = useState(-1);\n\n const onClickHandler = (value: boolean) => {\n setOpenMenu(value);\n if (onShowMenu) {\n onShowMenu(value);\n }\n };\n\n const isActiveDropdown = (i: number) => {\n const isHoverOver = i === hoverOverDropdown;\n const noneIsHoverOver = hoverOverDropdown === -1;\n const isActive = i === activeDropdown;\n\n return isHoverOver || (noneIsHoverOver && isActive);\n };\n\n const onResetActive = () => {\n setActiveDropdown(-1);\n setHoverOverDropdown(-1);\n };\n\n const onChangeHandler = (link: string) => {\n if (onChange) {\n onChange(link);\n }\n onResetActive();\n };\n\n const onDropdownClick = (i: number, link?: string) => {\n const isActiveDropdownClicked = i === activeDropdown;\n const nextActive = isActiveDropdownClicked ? -1 : i;\n setActiveDropdown(nextActive);\n if (isActiveDropdownClicked) setHoverOverDropdown(-1);\n if (onChange && link) onChange(link);\n };\n\n const onDropdownMouseEnter = (i: number) => {\n if (!showMenu) {\n setHoverOverDropdown(i);\n }\n };\n\n const onDropdownMouseLeave = () => {\n if (!showMenu) {\n setHoverOverDropdown(-1);\n }\n };\n\n const onFocus = (i: number) => setActiveDropdown(i);\n const onBlur = (i: number) => {\n if (i === (items?.length ?? 0) - 1) {\n onResetActive();\n }\n };\n\n return (\n <TabsContainer>\n <ItemsContainer showMenu={showMenu}>\n {items.map((item, index) => (\n <ControlledDropdown\n key={`key-${item.title}`}\n text={item.title as string}\n options={item.options}\n onClick={() => onDropdownClick(index, item.titleLink)}\n onOptionClick={onChangeHandler}\n onMouseEnter={() => onDropdownMouseEnter(index)}\n onMouseLeave={() => onDropdownMouseLeave()}\n onFocus={() => onFocus(index)}\n onBlur={() => onBlur(index)}\n onReset={onResetActive}\n active={isActiveDropdown(index)}\n activeColor={colorPrimary}\n />\n ))}\n </ItemsContainer>\n {!showMenu && (\n <MenuContainer colorPrimary={colorPrimary}>\n {openMenu ? (\n <a\n onClick={(e) => {\n e.preventDefault();\n onClickHandler(false);\n }}\n >\n <SvgIcon className=\"close-img\" iconName=\"Close\" />\n </a>\n ) : (\n <MenuItem>\n <a\n onClick={(e) => {\n e.preventDefault();\n onClickHandler(true);\n }}\n >\n MENU\n </a>\n </MenuItem>\n )}\n </MenuContainer>\n )}\n </TabsContainer>\n );\n};\n\nexport default Tabs;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const SearchBarContainer = styled.div`\n display: flex;\n flex-direction: row;\n column-gap: 64px;\n justify-content: space-between;\n align-items: center;\n height: 100%;\n background-color: var(--base-color-transparent);\n\n @media ${devices.mobile} {\n column-gap: 12px;\n }\n`;\n\nexport const SvgContainerSearch = styled.div`\n svg {\n width: var(--navigation-xlarge-gap);\n height: var(--navigation-xlarge-gap);\n }\n`;\n\nexport const SvgContainerClose = styled.div`\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n\n :hover {\n cursor: pointer;\n && svg path {\n fill: var(--base-color-navigation);\n }\n }\n`;\n\nexport const SearchUnavailableContainer = styled.div`\n width: 100%;\n background-color: var(--base-color-transparent);\n font-size: var(--font-size-search);\n font-family: var(--font-family-search);\n color: var(--base-color-darkgrey);\n cursor: not-allowed;\n\n @media ${devices.mobileAndTablet} {\n font-size: var(--font-size-body-2);\n line-height: var(--line-height-body-2);\n padding-bottom: 12px;\n }\n`;\n\nexport const InputContainer = styled.div`\n background-color: blue;\n width: 100%;\n\n input {\n font-size: var(--font-size-search);\n font-family: var(--font-family-search);\n border: none;\n border-radius: 0;\n outline: none;\n outline-color: var(--base-color-white);\n height: 48px;\n box-sizing: border-box;\n width: 100%;\n -webkit-appearance: none;\n\n &.search-input {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n @media ${devices.mobile} {\n column-gap: 24px;\n }\n }\n`;\n\nexport const SearchLinkContainer = styled.div`\n @media ${devices.mobile} {\n display: none;\n }\n`;\n\nexport const SearchArrowContainer = styled.a`\n display: none;\n height: 24px;\n width: 24px;\n\n @media ${devices.mobile} {\n display: block;\n }\n`;\n","import React, { useEffect, useRef, useState } from 'react';\nimport {\n SearchBarContainer,\n SvgContainerClose,\n SvgContainerSearch,\n InputContainer,\n SearchLinkContainer,\n SearchArrowContainer,\n} from './SearchBar.style';\nimport { ISearchBarProps } from '../../../types/navigation';\nimport SvgIcon from '../../atoms/Icons/Icons';\nimport TextLink from '../../atoms/TextLink';\nimport { Colors } from '../../../types/types';\n\nconst SearchBar = ({ onClick, onClose }: ISearchBarProps) => {\n const [showSearchLink, setShowSearchLink] = useState(false);\n const [searchValue, setSearchValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n inputRef?.current?.focus();\n return () => inputRef?.current?.blur();\n }, [inputRef]);\n\n const onSearchHandler = (value: string) => {\n onClick(value);\n setSearchValue('');\n };\n\n const handleKeypress = (e: React.KeyboardEvent<HTMLInputElement | HTMLAnchorElement>, value: string) => {\n if (e.key === 'Enter' && showSearchLink) {\n onSearchHandler(value);\n }\n };\n\n const onCloseHandler = (e?: React.MouseEvent) => {\n if (onClose) {\n onClose(e);\n }\n setShowSearchLink(false);\n setSearchValue('');\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\n e.preventDefault();\n const { value } = e.target;\n if (value) {\n setShowSearchLink(true);\n setSearchValue(value);\n } else {\n setShowSearchLink(false);\n setSearchValue('');\n }\n };\n\n const onKeyboardCloseHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n onCloseHandler();\n }\n };\n\n return (\n <SearchBarContainer>\n <SvgContainerSearch>\n <SvgIcon iconName=\"Search\" />\n </SvgContainerSearch>\n <InputContainer>\n <input\n data-testid=\"input-html\"\n ref={inputRef}\n className=\"search-input\"\n placeholder=\"Search the website...\"\n type=\"text\"\n onChange={(e) => {\n onChangeHandler(e);\n }}\n onKeyPress={(e) => handleKeypress(e, searchValue)}\n value={searchValue}\n />\n </InputContainer>\n {showSearchLink && (\n <span>\n <SearchLinkContainer data-testid=\"search-button\">\n <TextLink\n color={Colors.Core}\n onClick={() => onSearchHandler(searchValue)}\n onKeyDown={(e) => handleKeypress(e, searchValue)}\n tabIndex={0}\n >\n SEARCH\n </TextLink>\n </SearchLinkContainer>\n <SearchArrowContainer data-testid=\"search-arrow-button\" onClick={() => onSearchHandler(searchValue)}>\n <SvgIcon iconName=\"Arrow\" color={Colors.Core} />\n </SearchArrowContainer>\n </span>\n )}\n <SvgContainerClose\n tabIndex={0}\n onClick={onCloseHandler}\n onKeyDown={onKeyboardCloseHandler}\n data-testid=\"close-icon\"\n >\n <SvgIcon iconName=\"Close\" />\n </SvgContainerClose>\n </SearchBarContainer>\n );\n};\n\nexport default SearchBar;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const FooterSection = styled.section`\n background-color: var(--base-color-black);\n color: var(--base-color-white);\n`;\n\nexport const FooterContainer = styled.div`\n height: var(--footer-height);\n padding-top: var(--footer-padding-top);\n padding-bottom: var(--footer-padding-bottom);\n display: grid;\n grid-template-rows:\n min-content var(--footer-vertical-spacing-lg) min-content var(--footer-vertical-spacing-lg) min-content var(\n --footer-vertical-spacing-sm\n )\n min-content;\n grid-template-areas:\n 'row1'\n '.'\n 'row2'\n '.'\n 'row3'\n '.'\n 'row4';\n`;\n\nexport const PolicyLinksRow = styled.div`\n grid-area: row1;\n justify-self: center;\n\n @media ${devices.mobile} {\n & {\n justify-self: start;\n grid-area: row2;\n }\n }\n`;\n\nexport const ContactNewsletterRow = styled.div`\n grid-area: row2;\n\n @media ${devices.mobile} {\n & {\n grid-area: row1;\n }\n }\n`;\n\nexport const ArtsLogoRow = styled.div`\n grid-area: row3;\n justify-self: center;\n\n @media ${devices.mobile} {\n justify-self: start;\n }\n`;\n\nexport const AdditionalInfo = styled.p`\n grid-area: row4;\n font-family: var(--font-family-body);\n font-size: var(--font-size-body-3);\n line-height: var(--line-height-body-3);\n text-align: center;\n margin: 0;\n padding: 0;\n\n @media ${devices.mobile} {\n text-align: left;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const PolicyLinksList = styled.ul`\n margin: 0 auto;\n padding: 0;\n list-style: none;\n display: flex;\n gap: var(--footer-items-gap);\n\n @media ${devices.mobile} {\n & {\n margin: 0;\n flex-direction: column;\n }\n }\n`;\n\nexport const PolicyLinkItem = styled.li`\n font-family: var(--font-family-overline);\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n line-height: var(--line-height-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n text-transform: var(--text-transform-overline);\n text-align: center;\n\n @media ${devices.mobile} {\n & {\n text-align: left;\n }\n }\n`;\n\nexport const PolicyLink = styled.a`\n width: fit-content;\n text-decoration: none;\n text-transform: uppercase;\n color: var(--base-color-white);\n cursor: pointer;\n`;\n","import React, { FunctionComponent } from 'react';\nimport { PolicyLinksList, PolicyLinkItem, PolicyLink } from './PolicyLinks.style';\nimport { IPolicyLinksProps } from '../../../types/footer';\n\nconst PolicyLinks: FunctionComponent<IPolicyLinksProps> = ({ items = [] }) => {\n return (\n <PolicyLinksList>\n {items.map((item) => (\n <PolicyLinkItem key={item.name}>\n <PolicyLink data-roh={item.dataRoh} href={item.href} title={item.title}>\n {item.title}\n </PolicyLink>\n </PolicyLinkItem>\n ))}\n </PolicyLinksList>\n );\n};\n\nexport default PolicyLinks;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const ContactNewsletterWrapper = styled.div`\n display: grid;\n grid-template-columns: calc(50% - 1px) 2px calc(50% - 1px);\n grid-template-rows: 100px;\n gap: 0;\n\n @media ${devices.mobile} {\n & {\n display: grid;\n grid-template-columns: 100%;\n grid-template-rows: min-content min-content;\n gap: var(--footer-vertical-spacing-lg);\n }\n }\n`;\n\nexport const ContactNewsletterSeparator = styled.div`\n grid-column: 2;\n justify-self: center;\n height: 100%;\n border: 1px solid var(--base-color-white);\n\n @media ${devices.mobile} {\n & {\n grid-column: auto;\n display: none;\n }\n }\n`;\n\nexport const SignUpWrapper = styled.div`\n grid-column: 1;\n padding-top: 9px;\n justify-self: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n @media ${devices.mobile} {\n & {\n grid-column: auto;\n align-items: start;\n justify-self: start;\n padding-top: 0;\n }\n }\n`;\n\nexport const SignUpText = styled.p`\n font-family: var(--font-family-body);\n font-size: var(--font-size-body-2);\n line-height: var(--line-height-body-2);\n width: 60%;\n margin: 0 auto;\n height: 60px;\n text-align: center;\n\n @media ${devices.mobile} {\n & {\n width: 100%;\n height: auto;\n text-align: left;\n font-size: 14px;\n margin-bottom: var(--footer-vertical-spacing-lg);\n }\n }\n`;\n\nexport const ContactWrapper = styled.div`\n grid-column: 3;\n justify-self: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 9px;\n\n @media ${devices.mobile} {\n & {\n grid-column: auto;\n align-items: start;\n justify-self: start;\n padding-top: 0;\n }\n }\n`;\n\nexport const MediaLinksWrapper = styled.div`\n display: flex;\n gap: var(--footer-media-gap);\n height: 60px;\n\n @media ${devices.mobile} {\n & {\n height: auto;\n margin-bottom: var(--footer-vertical-spacing-lg);\n }\n }\n`;\n\nexport const MediaIconWrapper = styled.a`\n height: var(--footer-media-icon-height);\n width: var(--footer-media-icon-width);\n`;\n\nexport const TextLinkWrapper = styled.div`\n &&& {\n font-family: var(--font-family-overline);\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n line-height: var(--line-height-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n text-transform: var(--text-transform-overline);\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport TextLink from '../../atoms/TextLink';\nimport { Icon } from '../../atoms/Icons';\nimport {\n ContactNewsletterWrapper,\n ContactNewsletterSeparator,\n SignUpWrapper,\n ContactWrapper,\n SignUpText,\n MediaLinksWrapper,\n MediaIconWrapper,\n TextLinkWrapper,\n} from './ContactNewsletter.style';\nimport { IContactNewsletterProps } from '../../../types/footer';\n\nconst ContactNewsletter: FunctionComponent<IContactNewsletterProps> = ({\n signUpText,\n signUpLink,\n socialMediaLinks,\n contact,\n}) => {\n return (\n <ContactNewsletterWrapper>\n <SignUpWrapper>\n <SignUpText>{signUpText}</SignUpText>\n <TextLinkWrapper>\n <TextLink href={signUpLink.href} title={signUpLink.title}>\n {signUpLink.title}\n </TextLink>\n </TextLinkWrapper>\n </SignUpWrapper>\n <ContactNewsletterSeparator />\n <ContactWrapper>\n <MediaLinksWrapper>\n {socialMediaLinks.map((mediaLink) => (\n <MediaIconWrapper key={mediaLink.name} href={mediaLink.href} title={mediaLink.name}>\n <Icon iconName={mediaLink.name} color=\"white\" />\n </MediaIconWrapper>\n ))}\n </MediaLinksWrapper>\n <TextLinkWrapper>\n <TextLink href={contact.href} title={contact.title}>\n {contact.title}\n </TextLink>\n </TextLinkWrapper>\n </ContactWrapper>\n </ContactNewsletterWrapper>\n );\n};\n\nexport default ContactNewsletter;\n","import styled from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\nimport { devices } from '../../../styles/viewports';\nimport { IAnchorTabArrowsBoxProps, IAnchorTabsListProps, IAnchorTabBarBorderProps } from '../../../types/navigation';\nimport zIndexes from '../../../styles/zIndexes';\n\nexport const LIST_ITEM_GAP = 32;\n\nexport const AnchorTabbarWrapper = styled.div<IAnchorTabBarBorderProps>`\n position: sticky;\n width: 100%;\n top: 0;\n border-bottom: ${({ bottomBorder }) => (bottomBorder ? '2px solid var(--base-color-light-grey)' : 'none')};\n background-color: var(--base-color-white);\n z-index: ${zIndexes.anchor};\n`;\n\nexport const TabsGrid = styled(Grid)`\n height: var(--anchor-tabs-height);\n`;\n\nexport const TabsWrapper = styled.div`\n display: flex;\n`;\n\nexport const TabsList = styled.ul<IAnchorTabsListProps>`\n width: ${({ tabsOverflow }) => (tabsOverflow ? 'calc(100% - 74px)' : '100%')};\n display: flex;\n gap: ${LIST_ITEM_GAP}px;\n justify-content: ${({ tabsOverflow }) => (tabsOverflow ? 'start' : 'center')};\n align-items: center;\n list-style: none;\n padding: 0;\n margin: 0;\n height: var(--anchor-tabs-height);\n white-space: nowrap;\n overflow: scroll;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n scroll-behavior: smooth;\n\n @media ${devices.mobileAndTablet} {\n background: linear-gradient(\n 135deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0.48) 85%,\n rgba(235, 235, 235, 0.4) 99%,\n rgba(255, 255, 255, 0.39) 100%\n );\n }\n\n @media ${devices.mobile} {\n & {\n width: ${({ tabsOverflow, hasTwoArrows }) => (tabsOverflow && hasTwoArrows ? 'calc(100% - 50px)' : '100%')};\n }\n }\n`;\n\nexport const ArrowsContainer = styled.div<IAnchorTabArrowsBoxProps>`\n width: ${({ fullWidth }) => (fullWidth ? '74px' : '46px')};\n height: var(--anchor-tabs-height);\n background-color: var(--base-color-white);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 10px;\n`;\n\nexport const ArrowWrapper = styled.div`\n width: 24px;\n height: 24px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: flex-center;\n\n :hover {\n && svg path {\n fill: var(--base-color-primary);\n }\n }\n`;\n","import styled from 'styled-components';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { PrimaryButton } from '../../atoms/Buttons';\nimport { ITitleCTAProps, ITitleCTAGridItemProps } from '../../../types/navigation';\nimport { devices } from '../../../styles/viewports';\nimport zIndexes from '../../../styles/zIndexes';\n\nexport const TitleCTAGridWrapper = styled.div<ITitleCTAProps>`\n position: ${({ sticky }) => (sticky ? 'sticky' : 'initial')};\n top: -1px;\n background-color: var(--base-color-white);\n z-index: ${zIndexes.anchor};\n`;\n\nexport const TitleCTAGrid = styled(Grid)`\n border-bottom: solid 2px var(--base-color-lightgrey);\n`;\n\nexport const TitleCTAGridItem = styled.div<ITitleCTAGridItemProps>`\n grid-column: 2 / span 15;\n display: flex;\n align-items: center;\n flex-direction: ${({ title }) => (title ? 'row' : 'row-reverse')};\n gap: 40px;\n justify-content: space-between;\n\n @media ${devices.tablet} {\n & {\n grid-column: 2 / span 13;\n gap: 20px;\n }\n }\n\n @media ${devices.mobile} {\n & {\n grid-column: 2 / span 12;\n }\n }\n`;\n\nexport const AnchorTitle = styled.div`\n display: flex;\n align-items: center;\n min-height: var(--button-height);\n\n h5 {\n padding: 0;\n margin: 0;\n }\n\n @media ${devices.mobile} {\n & {\n min-height: 50px;\n }\n }\n`;\n\nexport const GridItemTitleWrapper = styled(GridItem)`\n @media ${devices.tablet} {\n grid-column: 2 / span 9;\n }\n`;\n\nexport const ButtonsDesktopWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n @media ${devices.mobile} {\n display: none;\n }\n\n a {\n width: max-content;\n }\n`;\n\nexport const ButtonsMobileWrapper = styled.div`\n display: none;\n\n @media ${devices.mobile} {\n & {\n display: block;\n }\n }\n`;\n\nexport const PrimaryButtonReverse = styled(PrimaryButton)`\n && {\n background-color: ${({ theme }) => theme.colors.primaryButtonReverseBg};\n border-color: ${({ theme }) => theme.colors.primaryButtonReverseBg};\n color: ${({ theme }) => theme.colors.primaryButtonReverse};\n svg path {\n fill: ${({ theme }) => theme.colors.primaryButtonReverse};\n }\n }\n`;\n\nexport const MessageWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-right: var(--grid-outer-margin);\n height: var(--button-height);\n\n h6 {\n margin: 0;\n padding: 0;\n }\n\n @media ${devices.tablet} {\n & {\n margin-right: var(--grid-margin);\n }\n }\n\n @media ${devices.mobile} {\n & {\n display: none;\n }\n }\n`;\n\nexport const MessageWrapperMobile = styled.div`\n h6 {\n margin: 0;\n padding: 0;\n }\n display: none;\n\n @media ${devices.mobile} {\n & {\n display: flex;\n align-items: center;\n margin-left: var(--grid-margin);\n padding: 12px 0;\n }\n }\n`;\n","import styled from 'styled-components';\nimport { Colors } from '../../../types';\nimport { devices } from '../../../styles/viewports';\n\ntype WithColor = {\n theme: {\n color: Colors;\n };\n};\n\nexport const Wrapper = styled.div`\n background-color: var(--base-color-lightgrey);\n padding: 40px;\n\n display: block;\n position: relative;\n\n @media ${devices.tablet} {\n margin-top: 0;\n padding: 40px 20px;\n }\n`;\n\nexport const PromoLabelWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-self: flex-end;\n height: 15px;\n`;\n\nexport const PromoLabel = styled.div<WithColor>`\n background: ${({ theme }) => theme.colors.primary};\n color: ${Colors.White};\n padding: 6px 8px;\n width: fit-content;\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 20px;\n top: 0;\n width: auto;\n margin: auto;\n font-family: var(--font-family-header);\n font-feature-settings:\n 'tnum' on,\n 'lnum' on,\n 'liga' off,\n 'calt' off;\n font-size: var(--font-size-overline-2);\n line-height: 12px;\n text-align: center;\n letter-spacing: 1px;\n text-transform: uppercase;\n`;\n\nexport const ButtonContainer = styled.div`\n margin-top: 2em;\n width: fit-content;\n`;\n\nexport const TitleContainer = styled.div`\n & > * {\n margin-top: 0;\n margin-bottom: 0.5em;\n }\n`;\n\nexport const OfferTextWrapper = styled.div`\n & > * {\n margin-bottom: 0.5em;\n }\n margin-bottom: 1em;\n`;\n\nexport const PriceRow = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 6px 12px;\n padding: 5px 0 8px 0;\n`;\n\nexport const LineThrough = styled.div`\n text-decoration-line: line-through;\n color: var(--base-color-darkgrey);\n`;\n","/* eslint-disable react/no-danger */\nimport React from 'react';\nimport { OfferTextWrapper } from './UpsellCard.style';\nimport { BodyText, Overline } from '../../atoms/Typography';\nimport { IOfferTextProps } from '../../../types/upsell';\n\nexport const OfferText = ({ title, description }: IOfferTextProps) => {\n return (\n <OfferTextWrapper>\n <Overline semanticLevel={5} level={1}>\n {title}\n </Overline>\n <BodyText level={1}>\n <div dangerouslySetInnerHTML={{ __html: description ?? '' }} />\n </BodyText>\n </OfferTextWrapper>\n );\n};\n","// Set max. character length\nexport const setMaxCharLength = (value: string, maxLength: number) => {\n return value.slice(0, maxLength);\n};\n\n// Format price to contain £ if not already present\nexport const formatPrice = (value: string | undefined): string => {\n if (Number.isNaN(Number(value))) return value ?? '';\n return `£${Number(value).toFixed(2)}`;\n};\n","import React, { FunctionComponent } from 'react';\nimport PrimaryButton from '../../atoms/Buttons/Primary/PrimaryButton';\nimport {\n Wrapper,\n PromoLabel,\n ButtonContainer,\n TitleContainer,\n PriceRow,\n LineThrough,\n PromoLabelWrapper,\n} from './UpsellCard.style';\nimport { AltHeader, Overline, Subtitle } from '../../atoms/Typography';\nimport { IUpsellCardProps } from '../../../types/upsell';\nimport { OfferText } from './OfferText';\nimport { ThemeType } from '../../../types';\nimport { ThemeProvider } from '../..';\nimport { formatPrice, setMaxCharLength } from '../../../helpers/formatStrings';\n\nconst LENGTH_SMALL_TEXT = 19;\nconst OFFER_TEXTS_LIMIT = 3;\nconst FLAG_CHAR_LIMIT = 30;\n\nconst UpsellCard: FunctionComponent<IUpsellCardProps> = ({\n title = '',\n subTitle,\n price,\n promoPrice,\n flag,\n offerTexts,\n link,\n theme = ThemeType.Core,\n}) => {\n const truncate = (str: string, n: number) => (str.length >= n ? str.slice(0, n) : str);\n\n const reducedOfferTexts = offerTexts?.slice(0, OFFER_TEXTS_LIMIT);\n\n return (\n <ThemeProvider theme={theme}>\n <Wrapper>\n {flag && (\n <PromoLabelWrapper>\n <PromoLabel>{setMaxCharLength(flag, FLAG_CHAR_LIMIT)}</PromoLabel>\n </PromoLabelWrapper>\n )}\n\n <TitleContainer>\n <Subtitle semanticLevel={2} level={1}>\n {title}\n </Subtitle>\n {subTitle && (\n <Overline semanticLevel={3} level={1}>\n {subTitle}\n </Overline>\n )}\n {promoPrice ? (\n <PriceRow>\n <LineThrough>\n <AltHeader level={4}>{formatPrice(price)}</AltHeader>\n </LineThrough>\n <AltHeader level={4}>{formatPrice(promoPrice)}</AltHeader>\n </PriceRow>\n ) : (\n <PriceRow>\n <AltHeader level={4}>{formatPrice(price)}</AltHeader>\n </PriceRow>\n )}\n </TitleContainer>\n {reducedOfferTexts?.length &&\n reducedOfferTexts.map((offerText) => {\n return <OfferText key={offerText.title} title={offerText.title} description={offerText.description} />;\n })}\n {link && (\n <ButtonContainer>\n <PrimaryButton {...link}>{truncate(link.text, LENGTH_SMALL_TEXT)}</PrimaryButton>\n </ButtonContainer>\n )}\n </Wrapper>\n </ThemeProvider>\n );\n};\n\nexport default UpsellCard;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const Wrapper = styled.div`\n display: grid;\n gap: 60px 75px;\n grid-template-columns: repeat(2, 1fr);\n width: 100%;\n\n @media ${devices.tablet} {\n padding-left: 0;\n padding-right: 0;\n }\n\n @media ${devices.mobile} {\n width: 100%;\n padding-left: 0;\n padding-right: 0;\n grid-template-columns: 1fr;\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport UpsellCard from '../../molecules/UpsellCard';\nimport { Wrapper } from './UpsellCards.style';\nimport { IUpsellCardsProps } from '../../../types/upsell';\n\nconst UpsellCards: FunctionComponent<IUpsellCardsProps> = ({ upsellCards }) => (\n <Wrapper>\n {upsellCards?.map((card, index) => {\n return (\n <UpsellCard\n key={`upsell-card-${index}`}\n title={card.title}\n subTitle={card.subTitle}\n price={card.price}\n promoPrice={card.promoPrice}\n flag={card.flag}\n offerTexts={card.offerTexts}\n link={card.link}\n theme={card.theme}\n />\n );\n })}\n </Wrapper>\n);\n\nexport default UpsellCards;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const UpsellBorderBox = styled.div`\n border: solid 4px;\n border-color: ${({ theme }) => theme.colors.primary};\n padding: 80px;\n\n @media ${devices.mobile} {\n & {\n border-left: none;\n border-right: none;\n padding-top: 2.5em;\n padding-left: 0;\n padding-right: 0;\n padding-bottom: 2.5em;\n }\n }\n\n @media ${devices.tablet} {\n & {\n padding: 25px;\n padding-top: 2.5em;\n }\n }\n`;\n\nexport const TitleContainer = styled.div`\n margin: 0;\n @media ${devices.mobile} {\n margin-left: 1.5em;\n margin-right: 1.5em;\n }\n`;\n\nexport const TextContainer = styled.div`\n margin-bottom: 2.5em;\n div > :first-child {\n margin-top: 1.5em;\n }\n\n @media ${devices.tablet} {\n margin-top: 0;\n div > :first-child {\n margin-top: 0.5em;\n }\n }\n\n @media ${devices.mobile} {\n margin-left: 1.5em;\n margin-right: 1.5em;\n & {\n div > :first-child {\n margin-top: 1em;\n }\n }\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const AccordionContainer = styled.div`\n display: flex;\n flex-direction: column;\n div {\n overflow: hidden;\n }\n`;\n\nexport const LineContainer = styled.div`\n height: 2px;\n background-color: var(--base-color-lightgrey);\n width: 100%;\n`;\n\nexport const ChildrenContainer = styled.div<{ isVisible: boolean }>`\n margin: 0px 20px 28px 20px;\n\n visibility: ${({ isVisible }) => (isVisible ? 'visible' : 'hidden')};\n\n @media ${devices.mobile} {\n margin: 12px 0px 24px 0px;\n }\n \n @media print { \n visibility: visible;\n }\n}\n`;\n\nexport const TitleContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n\n && h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n div {\n margin: 21px 20px;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n @media ${devices.mobile} {\n margin: 12px 20px 12px 0px;\n }\n }\n\n && svg {\n width: var(--navigation-middle-gap);\n height: var(--navigation-middle-gap);\n margin-right: 20px;\n\n @media ${devices.mobile} {\n margin-right: 0px;\n }\n }\n\n :hover {\n cursor: pointer;\n }\n`;\n\nexport const ContentContainer = styled.div<{ textHeight?: string }>`\n overflow: auto;\n transition: max-height 0.2s ease;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n max-height: ${({ textHeight }) => textHeight};\n\n @media print {\n max-height: max-content;\n }\n\n & h1 {\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & h2 {\n font-size: var(--font-size-subtitle-1);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & em {\n font-family: var(--font-family-body-italics);\n }\n\n & u {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n }\n\n @media ${devices.mobile} {\n transition: 100% 0.2s ease;\n }\n`;\n\nexport const PrintHideWrapper = styled.div`\n @media print {\n display: none;\n }\n`;\n","/* eslint-disable react/no-unstable-nested-components */\nimport React, { FunctionComponent, useState, useRef, useEffect } from 'react';\nimport {\n AccordionContainer,\n TitleContainer,\n ContentContainer,\n ChildrenContainer,\n LineContainer,\n PrintHideWrapper,\n} from './Accordion.style';\nimport { IAccordionProps, INodeProps } from '../../../types/types';\nimport { Icon } from '../../atoms/Icons';\nimport { IconNameType } from '../../../types/iconTypes';\nimport { Header, Subtitle } from '../../atoms/Typography/Typography';\nimport { ISubtitleProps, TypographyLevel } from '../../../types/typography';\n\nconst Accordion: FunctionComponent<IAccordionProps> = ({\n title = '',\n showLine = true,\n children,\n visibleStandfirst,\n initOpen = false,\n contentType = 'subtitle', // 'header' or 'subtitle'\n semanticLevel = 4,\n displayLevel = 1,\n}) => {\n const [openAccordion, setOpenAccordion] = useState<boolean>(initOpen);\n const [textHeight, setTextHeight] = useState<string>('0px');\n const [iconName, setIconName] = useState<IconNameType>(initOpen ? 'Detract' : 'Expand');\n // Contents children visibility is set to prevent it from being keyboard tabbable when the accordion is closed\n const [childrenVisibility, setChildrenVisibility] = useState<boolean>(initOpen);\n const content: INodeProps = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (content?.current && initOpen) {\n setTextHeight(`${content.current.scrollHeight}px`);\n }\n }, [content, initOpen]);\n\n const toggleAccordion = () => {\n if (!children) return;\n setOpenAccordion(!openAccordion);\n setTextHeight(openAccordion ? '0px' : `${content.current.scrollHeight}px`);\n setIconName(openAccordion ? 'Expand' : 'Detract');\n setChildrenVisibility(!openAccordion);\n };\n\n const keyDown = (e: { key: string }) => {\n if (e.key === 'Enter' || e.key === 'Space') {\n toggleAccordion();\n }\n };\n\n const Standfirst = () =>\n visibleStandfirst ? (\n <ContentContainer>\n <ChildrenContainer isVisible={childrenVisibility}>{visibleStandfirst}</ChildrenContainer>\n </ContentContainer>\n ) : null;\n\n const contentContainerId = `${title}-accordion-content`;\n\n const AccordionTitle: FunctionComponent<{\n level: TypographyLevel;\n semanticLevel: TypographyLevel;\n }> = ({ level, semanticLevel: localSemanticLevel }) => {\n let subtitleLevel = level;\n if (contentType === 'header') {\n return (\n <Header semanticLevel={localSemanticLevel} level={level}>\n {title}\n </Header>\n );\n }\n if (contentType === 'subtitle') {\n if (contentType === 'subtitle') {\n if (![1, 2].includes(level)) {\n console.warn('Invalid Subtitle level:', level);\n subtitleLevel = level > 2 ? 2 : level;\n }\n }\n\n return (\n <Subtitle {...({ level: subtitleLevel, semanticLevel: localSemanticLevel } as ISubtitleProps)}>\n {title}\n </Subtitle>\n );\n }\n\n return null;\n };\n\n return (\n <AccordionContainer tabIndex={0} onKeyDown={keyDown}>\n <LineContainer />\n <TitleContainer\n onClick={toggleAccordion}\n tabIndex={-1}\n role=\"button\"\n aria-label={title}\n aria-expanded={openAccordion}\n aria-controls={contentContainerId}\n >\n <AccordionTitle level={displayLevel} semanticLevel={semanticLevel}>\n {title}\n </AccordionTitle>\n {children && (\n <PrintHideWrapper>\n <Icon iconName={iconName} />\n </PrintHideWrapper>\n )}\n </TitleContainer>\n {visibleStandfirst && <Standfirst />}\n <ContentContainer\n data-testid=\"richcontainer\"\n ref={content}\n textHeight={textHeight}\n id={contentContainerId}\n aria-live=\"polite\"\n >\n <ChildrenContainer isVisible={childrenVisibility}>{children}</ChildrenContainer>\n </ContentContainer>\n {showLine && <LineContainer />}\n </AccordionContainer>\n );\n};\n\nexport default Accordion;\n","import styled from 'styled-components';\n\nexport const AccordionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n","import React from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport { themes } from './themes';\nimport { IThemeProviderProps } from '../types/types';\n\nconst Theme = ({ children, theme }: IThemeProviderProps) => {\n const chosenTheme = themes[theme];\n return <ThemeProvider theme={chosenTheme}>{children}</ThemeProvider>;\n};\n\nexport default Theme;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const AnnouncementBannerWrapper = styled.div`\n padding: 28px 0;\n background-color: ${({ theme }) => theme.colors.primary};\n color: var(--base-color-white);\n\n @media ${devices.mobile} {\n padding: 20px 0;\n }\n`;\n\nexport const SvgContainer = styled.div`\n height: 100%;\n display: flex;\n align-items: center;\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n }\n\n @media ${devices.mobile} {\n align-items: flex-start;\n }\n`;\n\nexport const ContentContainer = styled.div`\n overflow: auto;\n transition: max-height 0.2s ease;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n color: var(--base-color-white);\n a {\n color: var(--base-color-white);\n text-decoration: underline;\n }\n`;\n","import styled from 'styled-components';\nimport Button from '../Button';\nimport { IAuxiliaryButtonProps } from '../../../../types';\n\nconst AuxiliaryButtonWrapper = styled(Button)<IAuxiliaryButtonProps>`\n background-color: ${({ bgColor, theme }) =>\n bgColor ? `var(--base-color-${bgColor})` : theme.colors.auxiliaryButton};\n height: 20px;\n border: none;\n padding: 0;\n font-family: var(--font-family-buttons);\n font-size: var(--button-font-size);\n font-weight: var(--button-font-weight);\n color: var(--base-color-${({ color }) => color});\n width: fit-content;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n cursor: pointer;\n text-decoration: none;\n box-sizing: border-box;\n\n .auxiliaryButtonIcon {\n width: 12px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n`;\n\nexport default AuxiliaryButtonWrapper;\n","import React, { FunctionComponent } from 'react';\nimport { Colors, IAuxiliaryButtonProps } from '../../../../types';\nimport AuxiliaryButtonWrapper from './AuxiliaryButton.style';\n\nconst AuxiliaryButton: FunctionComponent<IAuxiliaryButtonProps> = ({ children, ...props }) => {\n return (\n <AuxiliaryButtonWrapper {...props} color={props.color ?? Colors.Black} iconClassName=\"auxiliaryButtonIcon\">\n {children}\n </AuxiliaryButtonWrapper>\n );\n};\n\nexport default AuxiliaryButton;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { ICardButtonContainerProps, ICardContentContainerProps } from '../../../types/card';\nimport zIndexes from '../../../styles/zIndexes';\nimport { Colors } from '../../..';\n\nconst LENGTH_LARGE_TEXT = 28;\nconst LENGTH_SMALL_TEXT = 19;\nconst LENGTH_TEXT_TABLET = 10;\n\nexport const CardContainer = styled.div<{ onlyShowButtonsOnHover: boolean; isCardClickable: boolean }>`\n cursor: ${({ isCardClickable }) => (isCardClickable ? 'pointer' : 'default')};\n position: relative;\n ${({ onlyShowButtonsOnHover }) =>\n !onlyShowButtonsOnHover\n ? `height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between; \n `\n : ''}\n\n .targetLink {\n text-decoration: none;\n color: inherit;\n }\n`;\n\nexport const HoverContainer = styled.div<{ lineColor?: Colors }>`\n height: var(--editorial-spacing-hover);\n background-color: ${({ lineColor, theme }) => {\n if (lineColor === Colors.Cinema) return 'var(--base-color-white)';\n return lineColor ? `var(--base-color-${lineColor})` : theme.colors.primary;\n }};\n position: absolute;\n width: 100%;\n z-index: ${zIndexes.contentOverlay};\n`;\n\nexport const ProgressContainer = styled.div`\n margin-top: -10px;\n`;\n\nexport const ContentContainer = styled.div<ICardContentContainerProps>`\n display: flex;\n flex-direction: column;\n margin-top: var(--editorial-margin-between);\n\n @media ${devices.mobile} {\n margin-left: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n margin-right: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n }\n`;\n\nexport const TitleContainer = styled.div`\n margin: calc(-1 * var(--editorial-margin-between)) 0 calc(-1 * var(--editorial-margin-between)) 0;\n\n @media ${devices.mobileAndTablet} {\n display: none;\n }\n`;\n\nexport const TitleContainerMobile = styled.div`\n margin: calc(-1 * var(--editorial-margin-between)) 0 calc(-1 * var(--editorial-margin-between)) 0;\n display: none;\n\n @media ${devices.mobileAndTablet} {\n display: block;\n }\n`;\n\nexport const TextContainer = styled.div`\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin-top: var(--editorial-spacing-hover);\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n em {\n font-family: var(--font-family-body-italics);\n }\n`;\n\nexport const HighlightTextContainer = styled(TextContainer)`\n color: var(--base-color-primary);\n margin-top: 4px;\n`;\n\nexport const SubtitleContainer = styled.span`\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n display: block;\n overflow-wrap: break-word;\n`;\n\nexport const LabelContainer = styled.div<{ isVisible: boolean; isGridCard: boolean }>`\n visibility: ${({ isVisible }) => (isVisible ? `visible` : 'hidden')};\n width: fit-content;\n height: 30px;\n\n @media ${devices.mobile} {\n margin-left: ${({ isGridCard }) => (isGridCard ? '20px' : '0')};\n }\n`;\n\nexport const ExtraActionsContainer = styled.div<{ fullWidth?: boolean }>`\n margin-top: var(--editorial-margin-between);\n\n @media ${devices.mobile} {\n margin-left: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n margin-right: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n }\n`;\n\nexport const LabelElements = styled.div<{ bgColor?: Colors }>`\n display: flex;\n align-items: center;\n height: 30px;\n padding: 0 8px;\n background-color: ${({ bgColor, theme }) => (bgColor ? `var(--base-color-${bgColor})` : theme.colors.primary)};\n color: var(--base-color-white);\n`;\n\nexport const LabelIconWrapper = styled.div`\n margin-left: 10px;\n\n svg {\n height: 24px;\n width: 24px;\n }\n`;\n\nconst getButtonsOpacity = ({ onlyShowButtonsOnHover }: ICardButtonContainerProps) =>\n onlyShowButtonsOnHover ? 'opacity: 0;' : 'opacity: 1;';\n\nconst getButtonsMinHeight = ({ onlyShowButtonsOnHover }: ICardButtonContainerProps) =>\n onlyShowButtonsOnHover ? 'min-height: unset;' : 'min-height: 120px;';\n\nexport const ButtonsContainer = styled.div<ICardButtonContainerProps>`\n ${getButtonsOpacity};\n display: flex;\n gap: 16px;\n margin-top: var(--editorial-margin-between);\n\n ${({ size, primaryButtonTextLength, tertiaryButtonTextLength }) => {\n const isLinksLayoutColumn =\n size === 'small'\n ? primaryButtonTextLength >= LENGTH_SMALL_TEXT || tertiaryButtonTextLength >= LENGTH_SMALL_TEXT\n : primaryButtonTextLength >= LENGTH_LARGE_TEXT || tertiaryButtonTextLength >= LENGTH_LARGE_TEXT;\n\n if (isLinksLayoutColumn) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n\n @media ${devices.mobile} {\n ${getButtonsMinHeight};\n margin-left: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n margin-right: ${({ fullWidth }) => (fullWidth ? '0' : '20px')};\n opacity: 1 !important;\n gap: 24px;\n margin-top: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ${devices.tablet} {\n ${getButtonsMinHeight};\n opacity: 1 !important;\n gap: 24px;\n margin-top: 24px;\n align-items: flex-start;\n\n ${({ primaryButtonTextLength, tertiaryButtonTextLength }) => {\n const isLinksLayoutColumnTablet =\n primaryButtonTextLength >= LENGTH_TEXT_TABLET || tertiaryButtonTextLength >= LENGTH_TEXT_TABLET;\n\n if (isLinksLayoutColumnTablet) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n }\n`;\n","import React from 'react';\nimport { renderToString } from 'react-dom/server';\n\nexport const stripAllHtmlTags = (htmlString: string): string => htmlString.replace(/<[^>]*>/g, '');\n\nexport const truncateHtmlString = (htmlString: string, resultLength: number, addDots: boolean = false): string => {\n const textContent = stripAllHtmlTags(htmlString);\n\n if (textContent.length <= resultLength) {\n return htmlString;\n }\n\n let accumulatedText = '';\n const tagStack: string[] = [];\n let charCount = 0;\n\n const closeTags = (): void => {\n while (tagStack.length > 0) {\n accumulatedText += `</${tagStack.pop()}>`;\n }\n };\n\n for (let i = 0; i < htmlString.length; i++) {\n const char = htmlString[i];\n if (char === '<') {\n accumulatedText += char;\n if (htmlString[i + 1] !== '/') {\n const tagNameEnd = htmlString.indexOf('>', i);\n const tagName = htmlString.slice(i + 1, tagNameEnd).split(' ')[0];\n tagStack.push(tagName);\n accumulatedText += `${tagName}>`;\n i = tagNameEnd;\n }\n } else if (char === '>') {\n accumulatedText += char;\n } else if (charCount < resultLength) {\n accumulatedText += char;\n charCount++;\n }\n\n if (charCount >= resultLength) {\n if (addDots) {\n accumulatedText += '...';\n }\n break;\n }\n }\n\n closeTags();\n\n return accumulatedText;\n};\n\nexport const truncate = (str: string, n: number) => (str.length >= n ? str.substring(0, n) : str);\n\nexport const truncateReactNodeString = (\n node: React.ReactNode,\n resultLength: number,\n addDots: boolean = false\n): string => {\n const nodeString = renderToString(React.createElement(React.Fragment, null, node));\n return truncateHtmlString(nodeString, resultLength, addDots);\n};\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { useState, useRef, FunctionComponent } from 'react';\nimport { ButtonType, AspectRatio } from '../../../types';\nimport { IButtonProps } from '../../../types/buttonTypes';\nimport AuxiliaryButton from '../../atoms/Buttons/Auxiliary/AuxiliaryButton';\nimport {\n ContentContainer,\n TitleContainer,\n TitleContainerMobile,\n SubtitleContainer,\n ButtonsContainer,\n TextContainer,\n HoverContainer,\n CardContainer,\n ProgressContainer,\n LabelContainer,\n LabelIconWrapper,\n LabelElements,\n ExtraActionsContainer,\n HighlightTextContainer,\n} from './Card.style';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport { PrimaryButton, Header, SecondaryButton, TertiaryButton, Overline, Icon, BodyText } from '../../atoms';\nimport { ICardProps } from '../../../types/card';\nimport Progress from '../../atoms/Progress';\nimport TypeTags from '../../atoms/TypeTags';\nimport { Colors, INodeProps } from '../../../types/types';\nimport { truncateHtmlString } from '../../../helpers/htmlStrings';\n\nconst LENGTH_LARGE_TEXT = 28;\nconst LENGTH_SMALL_TEXT = 19;\n\nconst buttonTypeToButton = {\n [ButtonType.Primary]: PrimaryButton,\n [ButtonType.Secondary]: SecondaryButton,\n [ButtonType.Tertiary]: TertiaryButton,\n};\n\nconst Card: FunctionComponent<ICardProps> = ({\n progress = 0,\n title = '',\n subtitle,\n text = '',\n highlightText = '',\n links,\n tags = [],\n image,\n imageAltText = '',\n withContinueWatching = false,\n size = 'small',\n fullWidth = false,\n onlyShowButtonsOnHover = true,\n hoverLineColor,\n labelParams,\n isGridCard = false,\n auxiliaryCTA,\n}) => {\n const truncate = (str: string, n: number) => (str.length >= n ? str.substr(0, n) : str);\n\n const node: INodeProps = useRef();\n const [hovered, setHovered] = useState(false);\n\n const truncatedText = truncateHtmlString(text, 185, true);\n const firstButton = links?.[0];\n const { text: firstButtonText = '', ...restFirstButton } = firstButton || {};\n const primaryButtonTextTruncate =\n size === 'small' ? truncate(firstButtonText, LENGTH_SMALL_TEXT) : truncate(firstButtonText, LENGTH_LARGE_TEXT);\n\n const secondButton = links?.[1];\n const { text: secondButtonText = '', ...restSecondButton } = secondButton || {};\n const tertiaryButtonTextTruncate =\n size === 'small' ? truncate(secondButtonText, LENGTH_SMALL_TEXT) : truncate(secondButtonText, LENGTH_LARGE_TEXT);\n\n const hoverHandler = (value: boolean) => {\n if (value) {\n node.current.style.opacity = '1';\n node.current.style.transition = 'opacity 0.3s';\n } else {\n node.current.style.opacity = '0';\n node.current.style.transition = 'opacity 0.3s';\n }\n\n setHovered(value);\n };\n\n const FirstButtonComponent = firstButton?.buttonType\n ? (buttonTypeToButton[firstButton.buttonType] as FunctionComponent<IButtonProps>)\n : PrimaryButton;\n\n const SecondButtonComponent = secondButton?.buttonType\n ? (buttonTypeToButton[secondButton.buttonType] as typeof TertiaryButton)\n : TertiaryButton;\n\n return (\n <CardContainer\n onMouseOver={() => (onlyShowButtonsOnHover ? hoverHandler(true) : undefined)}\n onMouseLeave={() => (onlyShowButtonsOnHover ? hoverHandler(false) : undefined)}\n onlyShowButtonsOnHover={onlyShowButtonsOnHover}\n data-testid=\"cardcontainer\"\n isCardClickable={!!firstButton}\n >\n <a\n href={firstButton?.href}\n target={firstButton?.target}\n className=\"targetLink\"\n style={{\n flexGrow: onlyShowButtonsOnHover ? 'unset' : 1,\n }}\n >\n <LabelContainer isGridCard={isGridCard} isVisible={!!labelParams}>\n {labelParams && (\n <LabelElements bgColor={labelParams?.bgColor}>\n <Overline level={2}>{labelParams.text.substring(0, 25)}</Overline>\n {labelParams.iconName && (\n <LabelIconWrapper>\n <Icon\n iconName={labelParams.iconName}\n direction={labelParams.iconDirection}\n color={labelParams.color ?? Colors.White}\n />\n </LabelIconWrapper>\n )}\n </LabelElements>\n )}\n </LabelContainer>{' '}\n {hovered && <HoverContainer lineColor={hoverLineColor} data-testid=\"hovercontainer\" />}\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n <img src={image} alt={imageAltText} />\n </ImageAspectRatioWrapper>\n {withContinueWatching && (\n <ProgressContainer>\n <Progress progress={progress} height={10} />\n </ProgressContainer>\n )}\n <ContentContainer fullWidth={fullWidth}>\n {tags ? <TypeTags list={tags} /> : null}\n <TitleContainer>\n <Header level={size === 'small' ? 6 : 5}>{title}</Header>\n </TitleContainer>\n <TitleContainerMobile>\n <Header level={6}>{title}</Header>\n </TitleContainerMobile>\n {subtitle ? <SubtitleContainer>{subtitle}</SubtitleContainer> : null}\n <TextContainer dangerouslySetInnerHTML={{ __html: truncatedText }} />\n {highlightText && (\n <HighlightTextContainer>\n <BodyText level={1}>{highlightText}</BodyText>\n </HighlightTextContainer>\n )}\n </ContentContainer>\n </a>\n {auxiliaryCTA && (\n <ExtraActionsContainer fullWidth={fullWidth}>\n <AuxiliaryButton {...auxiliaryCTA}>{auxiliaryCTA.text}</AuxiliaryButton>\n </ExtraActionsContainer>\n )}\n {links && (\n <ButtonsContainer\n ref={node}\n data-testid=\"buttonscontainer\"\n className=\"cardButtonsContainer\"\n size={size}\n primaryButtonTextLength={firstButtonText.length}\n tertiaryButtonTextLength={secondButtonText.length}\n onlyShowButtonsOnHover={onlyShowButtonsOnHover}\n fullWidth={fullWidth}\n >\n {firstButton && <FirstButtonComponent {...restFirstButton}>{primaryButtonTextTruncate}</FirstButtonComponent>}\n {secondButton && (\n <SecondButtonComponent {...restSecondButton}>{tertiaryButtonTextTruncate}</SecondButtonComponent>\n )}\n </ButtonsContainer>\n )}\n </CardContainer>\n );\n};\n\nexport default Card;\n","import styled from 'styled-components';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { devices } from '../../../styles/viewports';\n\nexport const CardsContainer = styled(Grid)`\n gap: var(--line-height-people-listing-gap) var(--grid-column-gap);\n\n @media ${devices.mobile} {\n grid-row-gap: var(--cards-spacing-stack);\n }\n`;\n\nexport const GridItemContainer = styled(GridItem)`\n @media ${devices.mobile} {\n grid-column: 1 / span 14;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IContactCardWrapperProps } from '../../../types/contactCard';\n\nexport const ContentWrapper = styled.div`\n & > div {\n margin-bottom: 2px;\n\n &:first-child {\n margin-bottom: 4px;\n\n @media ${devices.mobile} {\n margin-bottom: 6px;\n }\n }\n }\n\n @media ${devices.mobileAndTablet} {\n grid-column: 2 / span 12;\n }\n`;\n\nexport const Wrapper = styled.div<IContactCardWrapperProps>`\n ${({ hideBottomBorder }) => `border-bottom: ${hideBottomBorder ? 'none' : '2px solid var(--base-color-midgrey)'};`}\n ${({ hideTopBorder }) => `border-top: ${hideTopBorder ? 'none' : '2px solid var(--base-color-midgrey)'};`}\n padding: 30px 0;\n\n @media ${devices.mobileAndTablet} {\n display: grid;\n grid-template-columns: var(--grid-template-columns);\n grid-template-rows: max-content;\n gap: var(--grid-column-gap);\n margin: 0;\n }\n`;\n\nexport const AddressWrapperDesktop = styled.div`\n @media ${devices.mobile} {\n display: none;\n }\n`;\n\nexport const AddressWrapperMobile = styled.div`\n display: none;\n\n & > div {\n margin-bottom: 2px;\n }\n\n @media ${devices.mobile} {\n display: block;\n }\n`;\n\nexport const DetailsWrapper = styled.div`\n display: flex;\n\n @media ${devices.mobile} {\n flex-direction: column;\n margin: 4px 0;\n }\n\n a {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n color: var(--base-color-black);\n text-decoration: underline;\n\n &:before {\n display: inline-block;\n content: '';\n background-color: var(--base-color-black);\n width: 1px;\n height: 18px;\n margin: 0 8px -4px;\n\n @media ${devices.mobile} {\n display: none;\n }\n }\n\n &:first-child:before {\n display: none;\n }\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { BodyText } from '../../atoms';\n\ninterface BodyTextProps {\n truncate?: number;\n}\n\ninterface ContentSummaryProps {\n showImage?: boolean;\n}\n\ninterface Clickable {\n clickable?: boolean;\n}\n\nexport const BodyTextRelative = styled(BodyText)`\n position: relative;\n`;\n\nexport const ContentSummaryWrapper = styled.article<Clickable>`\n display: flex;\n position: relative;\n justify-items: start;\n align-items: center;\n margin: 20px 0;\n gap: 24px;\n cursor: ${(props) => (props.clickable ? 'pointer' : 'default')};\n\n @media ${devices.mobile} {\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n`;\n\nexport const ContentSummaryImageWrapper = styled.div`\n flex: 0 0 33.3%;\n`;\n\nexport const ContentSummaryTextWrapper = styled.div<ContentSummaryProps>`\n grid-column: ${(props) => (props.showImage ? 2 : '1 / span 4')};\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n gap: 22px;\n\n & > * {\n margin-block-start: 0;\n margin-block-end: 0;\n }\n\n @media ${devices.mobile} {\n margin: 0 20px;\n gap: 12px;\n }\n\n & .content-summary-text-link {\n height: unset;\n }\n`;\n\nexport const ContentSummaryTitleWrapper = styled.div`\n & > * {\n margin: 0;\n }\n\n @media ${devices.mobile} {\n & > * {\n font-size: var(--font-size-header-5);\n font-weight: var(--font-weight-header-5);\n }\n }\n`;\n\nexport const BodyTextLimit = styled.div`\n display: block;\n position: relative;\n`;\n\nexport const ContentSummaryBodyTextWrapper = styled.div<BodyTextProps>`\n & p:not(:last-child):after {\n content: '\\\\A\\\\A';\n white-space: pre;\n }\n\n ${(props) =>\n !!props.truncate &&\n `\n overflow: hidden;\n position: relative;\n display: -webkit-box;\n -webkit-line-clamp: ${props.truncate};\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n min-height: 1em;\n max-height: 3em;\n `}\n`;\n","import styled from 'styled-components';\nimport { IEditorialGridProps } from '../../../types/editorial';\nimport { devices } from '../../../styles/viewports';\n\nexport const EditorialGrid = styled.div<IEditorialGridProps>`\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n gap: var(--grid-column-gap);\n grid-template-areas: ${({ imageToLeft }) =>\n imageToLeft\n ? `'left left left left left . right right right right right right'`\n : `'left left left left left left . right right right right right'`};\n\n @media ${devices.mobile} {\n & {\n display: grid;\n grid-template-columns: 100%;\n grid-template-rows: min-content 24px min-content;\n grid-template-areas:\n 'row1'\n '.'\n 'row2';\n }\n }\n`;\n\nexport const EditorialImageWrapper = styled.div<IEditorialGridProps>`\n align-self: center;\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'left' : 'right')};\n @media ${devices.mobile} {\n & {\n grid-area: row1;\n }\n`;\n\nexport const EditorialTextWrapper = styled.div<IEditorialGridProps>`\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'right' : 'left')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n grid-area: row2;\n align-self: start;\n }\n`;\n\nexport const EditorialSubtitle = styled.span`\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n margin-bottom: var(--editorial-subtitle-margin-bottom);\n display: block;\n overflow-wrap: break-word;\n`;\n\nexport const EditorialText = styled.div`\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n em {\n font-family: var(--font-family-body-italics);\n }\n`;\n","import styled from 'styled-components';\nimport { IInformationBackgroundColour, IInformationCtaVariant } from '../../../types/information';\nimport { Grid } from '../../atoms/Grid';\n\nexport const InfoContent = styled('div')`\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n -webkit-letter-spacing: var(--letter-spacing-altHeader-6);\n -moz-letter-spacing: var(--letter-spacing-altHeader-6);\n -ms-letter-spacing: var(--letter-spacing-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n word-break: var(--word-break-altHeader);\n`;\n\nexport const InfoTitle = styled('div')`\n * {\n margin-block: 0;\n }\n`;\n\nexport const InfoCTAWrapper = styled('div')<{ variant: IInformationCtaVariant; infoThemed: boolean }>`\n margin: 32px 0;\n\n ${(props) => {\n if (!props.infoThemed) {\n return '';\n }\n if (props.variant === IInformationCtaVariant.Primary || props.variant === IInformationCtaVariant.Secondary) {\n return `a {\n color: var(--base-color-black);\n background: var(--base-color-white);\n border-color: var(--base-color-transparent);\n }`;\n }\n return `a {\n color: var(--base-color-white);\n background: var(--base-color-transparent});\n }\n svg > path {\n fill: var(--base-color-white);\n stroke: var(--base-color-white);\n stroke-width: 1;\n }\n `;\n }}}\n`;\n\nexport const InfoWrapper = styled(Grid)<{ background: IInformationBackgroundColour }>`\n padding: 60px 0;\n color: ${(props) =>\n props.background !== IInformationBackgroundColour.White ? 'var(--base-color-white)' : 'var(--base-color-black)'};\n background: ${(props) => `var(--base-color-${props.background})`}\n }};\n`;\n\nexport const InfoBodyWrapper = styled('div')<{ background: IInformationBackgroundColour }>`\n a {\n text-decoration: underline;\n color: ${(props) =>\n props.background === IInformationBackgroundColour.White ? 'var(--base-color-black)' : 'var(--base-color-white)'};\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport { IInformationCTAProps, IInformationCtaVariant, IInformationCtaTheme } from '../../../types/information';\nimport { Colors, LinkTarget } from '../../../types/types';\nimport { PrimaryButton, SecondaryButton, TertiaryButton, TextLink } from '../../atoms';\nimport { InfoCTAWrapper } from './Information.style';\nimport { DirectionType, IconNameType } from '../../../types/iconTypes';\n\ntype RenderButtonProps = {\n variant: IInformationCtaVariant;\n theme: IInformationCtaTheme;\n link: string;\n text: string;\n iconName?: IconNameType;\n iconDirection?: DirectionType;\n target: LinkTarget;\n};\n\n// Helper function for rendering buttons based on the variant\nconst renderButton = ({ variant, theme, link, text, iconName, iconDirection, target }: RenderButtonProps) => {\n switch (variant) {\n case IInformationCtaVariant.Secondary:\n return (\n <SecondaryButton\n color={Colors[theme]}\n href={link}\n iconName={iconName}\n iconDirection={iconDirection}\n target={target}\n aria-label={text}\n >\n {text}\n </SecondaryButton>\n );\n case IInformationCtaVariant.Tertiary:\n return (\n <TertiaryButton\n color={Colors.Black}\n href={link}\n iconName={iconName}\n iconDirection={iconDirection}\n target={target}\n aria-label={text}\n >\n {text}\n </TertiaryButton>\n );\n case IInformationCtaVariant.TextLink:\n return (\n <TextLink\n color={Colors.Black}\n href={link}\n iconName={iconName}\n iconDirection={iconDirection}\n target={target}\n aria-label={text}\n >\n {text}\n </TextLink>\n );\n default:\n return (\n <PrimaryButton\n bgColor={Colors[theme]}\n href={link}\n iconName={iconName}\n iconDirection={iconDirection}\n target={target}\n aria-label={text}\n >\n {text}\n </PrimaryButton>\n );\n }\n};\n\nexport const InfoCta: FunctionComponent<IInformationCTAProps> = ({\n variant = IInformationCtaVariant.Primary,\n theme = IInformationCtaTheme.Core,\n link,\n text,\n iconName,\n iconDirection,\n infoThemed,\n target = LinkTarget.Self,\n}): React.ReactElement => {\n return (\n <InfoCTAWrapper variant={variant} infoThemed={infoThemed} theme={theme}>\n {renderButton({ variant, theme, link, text, iconName, iconDirection, target })}\n </InfoCTAWrapper>\n );\n};\n\nexport default InfoCta;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { Grid } from '../../atoms/Grid';\n\nexport interface IPageHeadingWrapperProps {\n isPageHeadingWithoutTitle?: boolean;\n}\n\nexport const PageHeadingWrapper = styled.div<IPageHeadingWrapperProps>`\n padding-bottom: 80px;\n background-color: ${({ theme }) => theme.colors.primary};\n color: var(--base-color-white);\n\n ${({ isPageHeadingWithoutTitle }) =>\n isPageHeadingWithoutTitle &&\n `\n padding-bottom: 42px;\n `};\n\n // remove spacing above/below for all semantic levels of the title\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0;\n padding: 0;\n }\n\n @media ${devices.mobile} {\n padding-bottom: 0;\n }\n`;\n\nexport const PageHeadingGrid = styled(Grid)`\n gap: 0 var(--grid-column-gap);\n grid-template-rows: min-content min-content;\n grid-template-areas:\n '. . title title title title title title title title title title . . logo .'\n '. . text text text text text text text text text button button button . .';\n\n @media ${devices.mobile} {\n & {\n grid-template-rows: 20px min-content min-content min-content 20px;\n grid-template-areas:\n '. . . . . . . . . . . . . .'\n '. title title title title title title title title title title logo logo .'\n '. text text text text text text text text text text text text .'\n '. button button button button button button button button button button button button .'\n '. . . . . . . . . . . . . .';\n }\n }\n\n @media ${devices.tablet} {\n & {\n grid-template-areas:\n '. title title title title title title title title title title logo logo .'\n '. text text text text text text text text text button button button .';\n }\n }\n`;\n\nexport const TitleWrapper = styled.div<IPageHeadingWrapperProps>`\n grid-area: title;\n margin-top: 80px;\n\n ${({ isPageHeadingWithoutTitle }) =>\n isPageHeadingWithoutTitle &&\n `\n margin-top: 42px;\n `};\n\n @media ${devices.mobile} {\n & {\n margin-top: 0;\n }\n }\n`;\n\nexport const ChildrenWrapper = styled.div<IPageHeadingWrapperProps>`\n margin-bottom: 20px;\n width: fit-content;\n height: 43px;\n\n ${({ isPageHeadingWithoutTitle }) =>\n isPageHeadingWithoutTitle &&\n `\n margin: 10px 0;\n `};\n\n @media ${devices.mobile} {\n & {\n height: 33px;\n margin-top: 10px;\n margin-bottom: 20px;\n }\n }\n`;\n\nexport const TextWrapper = styled.div`\n grid-area: text;\n align-self: end;\n margin-top: 12px;\n\n h6 {\n margin: 0;\n padding: 0;\n }\n`;\n\nexport const LogoWrapper = styled.div`\n grid-area: logo;\n justify-self: end;\n margin-top: 20px;\n position: relative;\n\n > div {\n position: absolute;\n top: 0;\n right: 0;\n }\n\n @media ${devices.mobile} {\n & {\n align-self: start;\n margin-top: 0;\n }\n }\n`;\n\nexport const ButtonWrapper = styled.div`\n grid-area: button;\n justify-self: end;\n align-self: end;\n\n @media ${devices.mobile} {\n & {\n justify-self: center;\n align-self: center;\n width: 100%;\n margin-top: 16px;\n }\n }\n`;\n\nexport const PageHeadingText = styled.div`\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-family: var(--font-family-altHeader);\n text-transform: var(--text-transform-altHeader);\n word-break: var(--word-break-altHeader);\n`;\n","import React, { FunctionComponent } from 'react';\nimport { IPageHeadingProps } from '../../../types/editorial';\nimport { Header } from '../../atoms/Typography';\nimport { PrimaryButton } from '../../atoms/Buttons';\nimport Sponsorship from '../../atoms/Sponsorship';\nimport {\n PageHeadingWrapper,\n PageHeadingGrid,\n TitleWrapper,\n TextWrapper,\n LogoWrapper,\n ButtonWrapper,\n ChildrenWrapper,\n PageHeadingText,\n} from './PageHeading.style';\n\nconst PageHeading: FunctionComponent<IPageHeadingProps> = ({\n title,\n text,\n link,\n sponsor = false,\n children,\n semanticLevel = 1,\n copyCharLimit = 250,\n titleCharLimit = 40,\n}) => {\n const { text: linkText, ...restLink } = link || {};\n const truncatedText = text?.substring(0, copyCharLimit);\n const truncatedTitle = title?.substring(0, titleCharLimit);\n const isTitleUnAvailable = !title;\n\n return (\n <PageHeadingWrapper data-testid=\"page-heading-wrapper\" isPageHeadingWithoutTitle={isTitleUnAvailable}>\n <PageHeadingGrid>\n <TitleWrapper data-testid=\"page-heading-title\" isPageHeadingWithoutTitle={isTitleUnAvailable}>\n {children ? (\n <ChildrenWrapper isPageHeadingWithoutTitle={isTitleUnAvailable}>{children}</ChildrenWrapper>\n ) : null}\n {!isTitleUnAvailable && (\n <Header level={2} semanticLevel={semanticLevel}>\n {truncatedTitle}\n </Header>\n )}\n </TitleWrapper>\n {text ? (\n <TextWrapper data-testid=\"page-heading-text\">\n <PageHeadingText dangerouslySetInnerHTML={{ __html: truncatedText as string }} />\n </TextWrapper>\n ) : null}\n {sponsor ? (\n <LogoWrapper data-testid=\"page-heading-sponsor\">\n <Sponsorship />\n </LogoWrapper>\n ) : null}\n {link ? (\n <ButtonWrapper data-testid=\"page-heading-link\">\n <PrimaryButton {...restLink}>{linkText}</PrimaryButton>\n </ButtonWrapper>\n ) : null}\n </PageHeadingGrid>\n </PageHeadingWrapper>\n );\n};\n\nexport default PageHeading;\n","import styled from 'styled-components';\nimport { devices } from '../../../../styles/viewports';\nimport { IImpactWrappersStyledProps } from '../../../../types/editorial';\nimport { Grid } from '../../../atoms/Grid';\nimport zIndexes from '../../../../styles/zIndexes';\n\nexport const ImpactWrapper = styled.div<IImpactWrappersStyledProps>`\n aspect-ratio: 16 / 9;\n @supports not (aspect-ratio: 16 / 9) {\n height: 56.25vw;\n }\n\n position: relative;\n display: flex;\n background: var(--base-color-black);\n\n @media ${devices.mobile} {\n aspect-ratio: 1 / 1;\n @supports not (aspect-ratio: 1 / 1) {\n height: 100vw;\n }\n }\n`;\n\nexport const ImpactHeaderImageWrapper = styled.div`\n width: 100%;\n overflow: hidden;\n aspect-ratio: 16 / 9;\n @supports not (aspect-ratio: 16 / 9) {\n height: 56.25vw;\n }\n\n img {\n width: 100%;\n filter: brightness(0.7);\n opacity: 0.95;\n }\n\n @media ${devices.mobile} {\n height: fit-content;\n aspect-ratio: 1 / 1;\n @supports not (aspect-ratio: 1 / 1) {\n height: 100vw;\n }\n\n img {\n height: 100%;\n object-fit: cover;\n }\n }\n`;\n\nexport const ImpactGrid = styled(Grid)`\n position: absolute;\n align-self: center;\n width: 100%;\n z-index: ${zIndexes.contentOverlay};\n gap: 0 var(--grid-column-gap);\n grid-template-rows: min-content min-content min-content;\n grid-template-areas:\n '. . . . . logo logo logo logo logo logo . . . . .'\n '. . . text text text text text text text text text text . . .'\n '. . . button button button button button button button button button button . . .';\n\n @media ${devices.mobile} {\n & {\n height: 100%;\n grid-template-rows: 1fr max-content 1fr;\n grid-template-areas:\n '. . . logo logo logo logo logo logo logo logo . . .'\n '. text text text text text text text text text text text text .'\n '. button button button button button button button button button button button button .';\n }\n }\n\n @media ${devices.tablet} {\n align-content: center;\n\n & {\n grid-template-areas:\n '. . . logo logo logo logo logo logo logo logo . . .'\n '. . text text text text text text text text text text . .'\n '. . button button button button button button button button button button . .';\n }\n }\n`;\n\nexport const SponsorWrapper = styled.div`\n position: absolute;\n top: 20px;\n right: var(--grid-outer-margin);\n width: fit-content;\n z-index: ${zIndexes.sponsorship};\n\n @media ${devices.mobileAndTablet} {\n & {\n right: var(--grid-margin);\n }\n }\n`;\n\nexport const LogoWrapper = styled.div`\n grid-area: logo;\n align-self: end;\n`;\n\nexport const TextWrapper = styled.div`\n grid-area: text;\n color: var(--base-color-white);\n text-align: center;\n margin-top: 40px;\n max-height: calc(2 * var(--line-height-header-3));\n overflow: hidden;\n\n h3 {\n margin: 0;\n padding: 0;\n }\n\n @media ${devices.tablet} {\n & {\n max-height: calc(4 * var(--line-height-header-3));\n }\n }\n\n @media ${devices.mobile} {\n & {\n margin-top: 12px;\n max-height: calc(4 * var(--line-height-header-3));\n }\n\n h3 {\n font-size: var(--font-size-header-3);\n letter-spacing: var(--letter-spacing-header-5);\n line-height: var(--line-height-header-5);\n }\n }\n`;\n\nexport const ButtonWrapper = styled.div`\n grid-area: button;\n align-self: end;\n display: flex;\n justify-content: center;\n margin-top: 40px;\n\n @media ${devices.mobile} {\n & {\n margin-top: 0px;\n margin-bottom: 20px;\n }\n }\n`;\n\nexport const ScrollDownWrapper = styled.div`\n position: absolute;\n bottom: 20px;\n left: var(--grid-outer-margin);\n width: fit-content;\n z-index: ${zIndexes.contentOverlay};\n\n @keyframes UpDown {\n 0%,\n 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(8px);\n }\n }\n\n a {\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n border: none;\n padding: 0;\n :hover {\n border: none;\n\n > span {\n animation: UpDown 1500ms linear infinite;\n }\n }\n }\n\n @media ${devices.mobile} {\n & {\n display: none;\n }\n }\n\n @media ${devices.tablet} {\n & {\n display: none;\n }\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../../styles/viewports';\nimport { Colors } from '../../../../types';\nimport { Grid } from '../../../atoms';\n\nexport const PanelGrid = styled(Grid)<{ color: string | undefined }>`\n gap: 0 var(--grid-column-gap);\n\n ${({ color }) => `\n background-color: ${color ? `var(--base-color-${color})` : 'var(--base-color-core)'};\n color: ${color === Colors.White ? 'var(--base-color-black)' : 'var(--base-color-white)'};\n `}\n\n @media ${devices.mobileAndTablet} {\n grid-template-rows: 48px max-content max-content;\n }\n`;\n\nexport const LeftPanel = styled.div<{ hasImage: boolean }>`\n grid-area: ${({ hasImage }) => (hasImage ? '1 / 1 / 3 / 7' : '1 / 1 / 3 / 12')};\n box-sizing: border-box;\n height: 100%;\n display: grid;\n grid-auto-rows: 90% 1fr;\n gap: 0px 36px;\n align-items: center;\n\n @media ${devices.mobileAndTablet} {\n grid-area: ${({ hasImage }) => (hasImage ? '3 / 1 / 4 / 15' : '1 / 1 / 3 / 15')};\n }\n`;\n\nexport const RightPanel = styled.div`\n grid-area: 1 / 7 / 3 / 17;\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--base-color-black);\n\n @media ${devices.mobileAndTablet} {\n grid-area: 2 / 1 / 3 / 15;\n }\n`;\n\nexport const InfoWrapper = styled.div`\n margin: 36px;\n max-height: 33vw;\n overflow: hidden;\n\n :first-child * {\n margin-block-start: 0;\n }\n\n @media ${devices.mobileAndTablet} {\n margin: 36px 20px;\n max-height: unset;\n }\n`;\n\nexport const ScrollDownWrapper = styled.div`\n padding: 0 0 25px 36px;\n\n @keyframes UpDown {\n 0%,\n 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(8px);\n }\n }\n\n a {\n font-size: var(--font-size-overline-1);\n font-weight: var(--font-weight-overline-1);\n letter-spacing: var(--letter-spacing-overline-1);\n border: none;\n padding: 0;\n\n :hover {\n border: none;\n\n > span {\n animation: UpDown 1500ms linear infinite;\n }\n }\n }\n\n @media ${devices.mobileAndTablet} {\n display: none;\n }\n`;\n","import styled from 'styled-components';\n\nexport const StreamWrapper = styled.div`\n h2::selection,\n div::selection {\n color: #1866dc;\n background-color: #fff;\n }\n`;\n","import styled, { css } from 'styled-components';\nimport { devices } from '../../../../styles/viewports';\nimport { Colors } from '../../../../types';\nimport { Grid } from '../../../atoms/Grid';\nimport { PrimaryButton } from '../../../atoms';\n\ntype WithInversion = {\n invert: boolean;\n theme: {\n colors: Colors;\n };\n};\n\nconst BrandingTextBlock = styled.div`\n font-size: var(--font-size-body-2);\n font-family: var(--font-family-header);\n text-transform: uppercase;\n margin: 0;\n white-space: nowrap;\n @media screen and (max-width: 920px) {\n white-space: normal;\n }\n @media ${devices.mobile} {\n white-space: nowrap;\n }\n`;\n\nconst BrandingTextBody = styled.div`\n font-family: var(--font-family-body);\n font-size: var(--font-size-heading-6);\n line-height: var(--line-height-heading-6);\n`;\n\nconst ComapctHeaderWrapper = styled.div`\n position: relative;\n display: block;\n`;\n\nconst ComapctHeaderGrid = styled(Grid)`\n gap: 0 var(--grid-column-gap);\n grid-template-rows: min-content min-content;\n`;\n\nconst CompactHeaderAssetWrapper = styled.div`\n height: 37.5vw;\n width: 100%;\n position: relative;\n overflow: hidden;\n background-color: #000;\n img {\n position: relative;\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n video {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n object-fit: contain;\n @media ${devices.mobile} {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n margin: auto;\n height: auto;\n max-height: 100vh;\n width: 100%;\n object-fit: contain;\n }\n }\n @media ${devices.mobile} {\n height: 85vw;\n max-height: 100vh;\n }\n`;\n\nconst CompactHeaderCopyWrapper = styled(Grid)<WithInversion>`\n position: relative;\n height: 160px;\n grid-template-rows: min-content min-content;\n grid-template-rows: min-content min-content;\n grid-template-columns: [logo] 1fr [title] 3fr [cta] 1fr;\n align-content: center;\n gap: 0;\n background-color: ${({ invert, theme }) => (invert ? theme.colors.white : theme.colors.primary)};\n color: ${({ invert, theme }) => (invert ? theme.colors.black : theme.colors.white)};\n\n svg {\n width: 210px;\n fill: ${({ invert, theme }) => (invert ? theme.colors.black : theme.colors.white)};\n }\n\n h1::selection,\n div::selection {\n ${({ theme }) =>\n theme.colors.primary === theme.colors.stream &&\n `\n color: ${theme.colors.stream};\n background-color: ${theme.colors.white};\n `};\n }\n\n @media ${devices.tablet} {\n svg {\n width: 145px;\n }\n }\n\n @media ${devices.mobile} {\n display: flex;\n flex-direction: column;\n height: auto;\n padding: 32px 20px;\n\n svg {\n width: 180px;\n }\n }\n`;\n\nconst CompactHeaderLogoWrapper = styled.div`\n display: flex;\n grid-area: logo;\n padding-left: 50px;\n justify-content: left;\n align-items: center;\n width: 100%;\n @media ${devices.mobile} {\n padding-left: 0px;\n justify-content: center;\n }\n @media ${devices.tablet} {\n width: fit-content;\n }\n`;\n\nconst CompactHeaderTitleWrapper = styled.div`\n display: flex;\n grid-area: title;\n align-items: center;\n justify-content: center;\n font-family: var(--font-family-header);\n text-transform: uppercase;\n text-align: center;\n padding: 0 2em;\n @media ${devices.mobile} {\n justify-content: center;\n }\n`;\n\nconst CompactHeaderCTAWrapper = styled.div`\n display: flex;\n grid-area: cta;\n justify-content: right;\n align-items: center;\n padding-right: 50px;\n @media ${devices.mobile} {\n padding-right: 0px;\n justify-content: center;\n }\n`;\n\nconst PrimaryButtonWithInversion = styled(PrimaryButton)<WithInversion>`\n background-color: ${({ invert, theme }) => (invert ? theme.colors.primary : theme.colors.white)};\n color: ${({ invert, theme }) => (invert ? theme.colors.white : theme.colors.black)};\n svg {\n fill: ${({ invert, theme }) => (invert ? theme.colors.white : theme.colors.black)};\n path {\n fill: ${({ invert, theme }) => (invert ? theme.colors.white : theme.colors.black)};\n }\n }\n min-width: 145px;\n`;\nconst PlayButton = styled.button`\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background-color: #fff;\n border: none;\n padding: 12px;\n`;\n\nconst VideoControlsWrapper = styled.div`\n position: absolute;\n left: 50px;\n bottom: 24px;\n display: flex;\n align-items: center;\n @media ${devices.mobile} {\n left: 20px;\n bottom: 12px;\n }\n`;\n\nconst VideoVolume = styled.input`\n width: 100px;\n margin-left: 24px;\n`;\n\nconst VideoMute = styled.button`\n width: 17px;\n height: 17px;\n background: none;\n border: none;\n padding: 0;\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\nconst thumbStyes = css`\n -webkit-appearance: none;\n appearance: none;\n border: none;\n height: 8px;\n width: 8px;\n border-radius: 50%;\n background: #ffffff;\n border: none;\n transform: translateY(-25%);\n`;\n\nconst trackStyles = css`\n width: 100%;\n cursor: pointer;\n height: 4px;\n cursor: pointer;\n background: rgb(241, 241, 241, 0.5);\n border-radius: 1.3px;\n border: none;\n`;\n\nconst VolumeControlsWrapper = styled.div`\n display: flex;\n margin: 12px 12px;\n padding: 0;\n background-color: rgb(26, 26, 26, 0.6);\n height: 36px;\n width: 100px;\n align-items: center;\n justify-content: center;\n\n /* Range slider overrides */\n input[type='range' i] {\n -webkit-appearance: none;\n appearance: none;\n width: 42px;\n margin: 0;\n margin-left: 7px;\n background: transparent; /* Otherwise white in Chrome */\n\n ::-webkit-slider-runnable-track {\n ${trackStyles}\n }\n ::-moz-range-track {\n ${trackStyles}\n }\n ::-ms-track {\n ${trackStyles}\n }\n ::-ms-fill-lower {\n ${trackStyles}\n }\n ::-ms-fill-upper {\n ${trackStyles}\n }\n\n ::-webkit-slider-thumb {\n ${thumbStyes}\n }\n ::-moz-range-thumb {\n ${thumbStyes}\n transform: translateY(0);\n }\n ::-ms-thumb {\n ${thumbStyes}\n }\n }\n`;\n\nexport {\n BrandingTextBlock,\n BrandingTextBody,\n ComapctHeaderWrapper,\n ComapctHeaderGrid,\n CompactHeaderAssetWrapper,\n CompactHeaderCopyWrapper,\n CompactHeaderLogoWrapper,\n CompactHeaderTitleWrapper,\n CompactHeaderCTAWrapper,\n PrimaryButtonWithInversion,\n PlayButton,\n VideoControlsWrapper,\n VideoVolume,\n VideoMute,\n VolumeControlsWrapper,\n};\n","import React, { FunctionComponent } from 'react';\nimport { BrandingTextBlock, BrandingTextBody, CompactHeaderLogoWrapper } from '../Compact.style';\nimport { TextLink, StreamBadge, CinemaBadge } from '../../../../atoms';\nimport { Colors } from '../../../../../types';\nimport { stripAllHtmlTags, truncate, truncateHtmlString } from '../../../../../helpers/htmlStrings';\nimport { BrandingStyle } from '../../../../../types/impactHeader';\nimport { useSameSiteUrl } from '../../../../../helpers/urls';\n\ninterface IBrandingProps {\n brandingStyle: BrandingStyle;\n brandingLink?: string;\n brandingText?: string;\n invert: boolean;\n}\n\nconst renderBranding = (\n brandingStyle: BrandingStyle,\n invert: boolean,\n brandingText?: string,\n brandingLink?: string\n) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const sameSiteUrl = brandingLink && useSameSiteUrl(brandingLink);\n const target = sameSiteUrl ? '_self' : '_blank';\n const color = invert ? Colors.Black : Colors.White;\n switch (brandingStyle) {\n case 'BlockText':\n return (\n brandingText?.trim() && <BrandingTextBlock>{truncate(stripAllHtmlTags(brandingText), 25)}</BrandingTextBlock>\n );\n case 'BodyText':\n return (\n brandingText?.trim() && (\n <BrandingTextBody dangerouslySetInnerHTML={{ __html: truncateHtmlString(brandingText, 65) }} />\n )\n );\n case 'TextLink':\n return (\n brandingText?.trim() &&\n brandingLink && (\n <TextLink target={target} href={brandingLink} color={color}>\n {truncate(stripAllHtmlTags(brandingText), 25)}\n </TextLink>\n )\n );\n case 'StreamLogo':\n return <StreamBadge invert={invert} />;\n case 'CinemaLogo':\n return <CinemaBadge invert={invert} />;\n default:\n return null;\n }\n};\n\nconst CompactHeaderBranding: FunctionComponent<IBrandingProps> = ({\n brandingStyle,\n invert = false,\n brandingText,\n brandingLink,\n}) => {\n return (\n <CompactHeaderLogoWrapper>\n {renderBranding(brandingStyle, invert, brandingText, brandingLink)}\n </CompactHeaderLogoWrapper>\n );\n};\n\nexport default CompactHeaderBranding;\n","import { useEffect, useState } from 'react';\n\n// Function to check if a URL is from the same site\n// NOTE: This function is not SSR compatible\nexport const isSameSiteUrl = (url: string) => {\n if (url[0] === '/') return true; // URL is relative (e.g. /about)\n if (!window?.location) return false; // window.location is not available (e.g. in SSR)\n const currentPageURL = window.location.href || '';\n const regexPattern = /^(https?:\\/\\/)?(www\\d?\\.)?([\\w.-]+)\\.\\w+.*$/;\n const match = url.match(regexPattern);\n if (match?.[3] && currentPageURL) {\n const urlDomain = match[3]; // Extract the domain from the third capture group\n const currentMatch = currentPageURL.match(regexPattern);\n if (currentMatch) {\n const currentDomain = currentMatch[3];\n return urlDomain === currentDomain;\n }\n }\n\n return false; // URL didn't match the pattern\n};\n\n// Hook to check if a URL is from the same site - use for SSR\nexport const useSameSiteUrl = (url: string) => {\n const [hasSameSiteUrl, setSameSiteUrl] = useState(false);\n useEffect(() => {\n setSameSiteUrl(isSameSiteUrl(url));\n }, [url]);\n return hasSameSiteUrl;\n};\n","import { useEffect, useState } from 'react';\nimport { breakpoints } from '../styles/viewports';\n\n// WARNING: Do not use this on server side rendering, it may throw an error.\nconst isIOS = (): boolean => {\n try {\n console.warn('Do not use this on server side rendering, it may throw an error.');\n if (typeof navigator === undefined) return false;\n return (\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document)\n );\n } catch (e) {\n console.warn('Error checking if device is iOS.', e);\n return false;\n }\n};\n\n// React hook version of isIOS (for server side rendering)\nexport const useIOS = (): boolean => {\n const [IOS, setIOS] = useState(false);\n useEffect(() => {\n if (typeof navigator === undefined) return;\n setIOS(isIOS());\n }, []);\n return IOS;\n};\n\n// Checks device size based on window width\nexport const isMobile = (): boolean => {\n try {\n console.warn('Do not use this on server side rendering, it may throw an error.');\n if (typeof window === undefined) return false;\n return window.innerWidth < breakpoints.sm;\n } catch (e) {\n console.warn('Error checking if device is mobile.', e);\n return false;\n }\n};\n\n// React hook version of isMobile (for server side rendering)\nexport const useMobile = (): boolean => {\n const [mobile, setMobile] = useState(false);\n useEffect(() => {\n if (typeof window === undefined) return;\n setMobile(isMobile());\n }, []);\n return mobile;\n};\n","import React, { FunctionComponent, useEffect, useState } from 'react';\nimport { devices } from '../../../../styles/viewports';\nimport { IPageHeadingCompactProps } from '../../../../types/impactHeader';\nimport { Sponsorship, VideoControls, Header } from '../../../atoms';\nimport { SponsorWrapper } from '../Impact/Impact.style';\nimport {\n ComapctHeaderWrapper,\n CompactHeaderAssetWrapper,\n CompactHeaderCopyWrapper,\n CompactHeaderTitleWrapper,\n CompactHeaderCTAWrapper,\n PrimaryButtonWithInversion,\n} from './Compact.style';\nimport CompactHeaderBranding from './components/CompactHeaderBranding';\nimport { truncate } from '../../../../helpers/htmlStrings';\nimport { useIOS, useMobile } from '../../../../helpers/devices';\n\ntype VideoPoster = {\n desktop?: string;\n mobile?: string;\n alt: string;\n};\n\ntype Video = {\n elementId: string;\n desktop?: string;\n mobile?: string;\n};\n\ninterface IVideoProps {\n video: Video;\n poster: VideoPoster;\n}\n\nconst useResponsiveVideo = (video: Video, poster: VideoPoster) => {\n const mobileVideo = video.mobile || video.desktop;\n const desktopVideo = video.desktop || video.mobile;\n const mobilePoster = poster.mobile || poster.desktop;\n const desktopPoster = poster.desktop || poster.mobile;\n const [posterUrl, setPoster] = useState(desktopPoster);\n const [videoUrl, setVideoUrl] = useState(desktopVideo);\n const isMobile = useMobile();\n\n useEffect(() => {\n setPoster(isMobile ? mobilePoster : desktopPoster);\n setVideoUrl(isMobile ? mobileVideo : desktopVideo);\n }, [isMobile]);\n\n return { posterUrl, videoUrl };\n};\n\nconst VideoWithControls: FunctionComponent<IVideoProps> = ({ video, poster }) => {\n const { posterUrl, videoUrl } = useResponsiveVideo(video, poster);\n const isIOS = useIOS();\n return (\n <>\n <video\n id={video.elementId}\n width=\"100%\"\n height=\"100%\"\n muted\n poster={posterUrl}\n src={videoUrl}\n data-testid=\"compact-video\"\n playsInline\n >\n <source src={videoUrl} />\n <img src={posterUrl} alt={poster.alt} data-testid=\"compact-image\" />\n </video>\n <VideoControls loop videoElementId={video.elementId} muted autoPlay={false} soundControl={!isIOS} />\n </>\n );\n};\n\nconst CompactHeaderImage: FunctionComponent<VideoPoster> = ({ mobile, desktop, alt }) => {\n return (\n <picture data-testid=\"compact-picture\">\n {mobile && <source srcSet={mobile} media={`${devices.mobile}`} data-testid=\"compact-mobile-image-source\" />}\n <source srcSet={desktop} media={`${devices.desktop}`} data-testid=\"compact-desktop-image-source\" />\n <img src={desktop} alt={alt} data-testid=\"compact-image\" />\n </picture>\n );\n};\n\nconst CompactHeaderVideo: FunctionComponent<IVideoProps> = ({ video, poster }) => {\n if (!video.desktop && !video.mobile) {\n return <CompactHeaderImage {...poster} />;\n }\n return <VideoWithControls video={video} poster={poster} />;\n};\n\nconst PageHeadingCompact: FunctionComponent<IPageHeadingCompactProps> = ({\n title,\n link,\n sponsor = true,\n customSponsorImage,\n bgUrlDesktop,\n bgUrlDevice,\n videoUrlDesktop,\n videoUrlMobile,\n bgImageAltText = '',\n invert = false,\n brandingStyle = 'BlockText',\n brandingText,\n brandingLink,\n showCopy = true,\n semanticLevel = 1,\n}) => {\n const { text: linkText, ...restLink } = link || {};\n const titleSize = title && title.length > 20 ? 4 : 3;\n const video = {\n elementId: 'compact-header-video',\n desktop: videoUrlDesktop,\n mobile: videoUrlMobile,\n };\n const poster = {\n desktop: bgUrlDesktop,\n mobile: bgUrlDevice,\n alt: bgImageAltText,\n };\n return (\n <ComapctHeaderWrapper>\n {sponsor ? (\n <SponsorWrapper data-testid=\"compact-sponsor\">\n {customSponsorImage ? (\n <Sponsorship data-testid=\"compact-custom-sponsor\" {...customSponsorImage} isCustomImage />\n ) : (\n <Sponsorship />\n )}\n </SponsorWrapper>\n ) : null}\n <CompactHeaderAssetWrapper>\n <CompactHeaderVideo video={video} poster={poster} />\n </CompactHeaderAssetWrapper>\n {showCopy && (\n <CompactHeaderCopyWrapper className=\"page-heading-compact__background\" invert={invert}>\n <CompactHeaderBranding\n brandingStyle={brandingStyle}\n brandingText={brandingText}\n brandingLink={brandingLink}\n invert={invert}\n />\n <CompactHeaderTitleWrapper>\n <Header level={titleSize} semanticLevel={semanticLevel}>\n {title && truncate(title, 40)}\n </Header>\n </CompactHeaderTitleWrapper>\n {link && (\n <CompactHeaderCTAWrapper>\n <PrimaryButtonWithInversion {...restLink} invert={invert} className=\"page-heading-compact__button\">\n {linkText}\n </PrimaryButtonWithInversion>\n </CompactHeaderCTAWrapper>\n )}\n </CompactHeaderCopyWrapper>\n )}\n </ComapctHeaderWrapper>\n );\n};\n\nexport default PageHeadingCompact;\n","import styled from 'styled-components';\n\nexport const MorePages = styled.span`\n cursor: not-allowed;\n pointer-events: none;\n`;\n\nexport const PageNumberWrapper = styled.ol`\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 40px;\n margin-bottom: 40px;\n flex-wrap: nowrap;\n flex-direction: row;\n list-style: none;\n padding: 0;\n max-width: fit-content;\n margin: auto;\n li {\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n margin-left: 16px;\n color: var(--base-color-dark-grey);\n display: flex;\n align-items: center;\n border-bottom: 1px solid rgba(0, 0, 0, 0);\n }\n`;\n\n// PageNumber extends bodyText but uses subtitle-1 font size\nexport const PageNumber = styled.a<{ active?: string }>`\n color: inherit;\n margin: 0;\n border-bottom: 1px solid transparent;\n line-height: var(--base-line-height);\n text-decoration: none;\n font-family: var(--font-family-body-1);\n :hover {\n color: var(--base-color-core);\n border-bottom: 1px solid var(--base-color-core);\n svg > path {\n fill: var(--base-color-core);\n }\n }\n /* active state - string used because react returns error for bool */\n ${({ active }) =>\n active === 'true' &&\n ` \n color: var(--base-color-core);\n `}\n`;\n\nexport const NextPage = styled(PageNumber)`\n display: inline-flex;\n width: 25px;\n align-items: center;\n justify-content: center;\n margin-left: 0;\n span {\n height: 1.5em;\n svg > path {\n fill: var(--base-color-dark-grey);\n }\n }\n`;\n","import React from 'react';\nimport { MorePages, NextPage, PageNumber, PageNumberWrapper } from './Pagination.style';\nimport { Icon } from '../../atoms';\n\nexport interface PageData {\n currentPage: number;\n pageCount: number;\n baseUrl: string;\n}\n\nexport const reducePages = (pages: number[], currentPage: number): number[] => {\n // If there are less than 6 pages, return all pages\n if (pages.length < 6) {\n return pages;\n }\n\n // If current page is more than 3 pages from the end, show last 6 pages\n if (currentPage + 3 > pages.length) {\n return pages.slice(pages.length - 6, pages.length);\n }\n\n // If current page is less than 3 pages from the start, show first 6 pages\n if (currentPage < 3) {\n return pages.slice(0, 6);\n }\n\n // Otherwise, show 3 pages before and 2 pages after\n return pages.slice(currentPage - 2, currentPage + 4);\n};\n\nconst Pagination = ({ pageCount, currentPage, baseUrl }: PageData): React.ReactElement => {\n // Array of page numbers starting at 1\n const pageNumbers = Array.from(Array(pageCount + 1).keys()).slice(1);\n const reducedPageNumbers = reducePages(pageNumbers, currentPage);\n return (\n <PageNumberWrapper>\n {\n // {/* Left arrow only appears after page 1 */\n currentPage > 1 && (\n <li key=\"previous-page\" data-testid=\"left-arrow\">\n <NextPage href={`${baseUrl}${currentPage - 1}`}>\n <Icon iconName=\"DropdownArrow\" direction=\"down\" />\n </NextPage>\n </li>\n )\n }\n {/* Dots for less appear beyond page 3 */}\n {currentPage > 3 && (\n <li key=\"more-before\" data-testid=\"elipsis\">\n <MorePages theme=\"core\">...</MorePages>\n </li>\n )}\n {reducedPageNumbers.map((page) => (\n <li key={page}>\n <PageNumber\n theme=\"core\"\n key={page}\n active={`${page === currentPage}`}\n href={`${baseUrl}${page}`}\n data-testid=\"page-number\"\n >\n {page}\n </PageNumber>\n </li>\n ))}\n {/* Dots for more appear if more than 3 pages ahead */}\n {currentPage + 4 < pageCount && (\n <li key=\"more-after\" data-testid=\"elipsis\">\n <MorePages theme=\"core\">...</MorePages>\n </li>\n )}\n {/* Right arrow appears if there are more pages */}\n {currentPage < pageCount && (\n <li key=\"next-page\" data-testid=\"right-arrow\">\n <NextPage href={`${baseUrl}${currentPage + 1}`}>\n <Icon iconName=\"DropdownArrow\" direction=\"up\" />\n </NextPage>\n </li>\n )}\n </PageNumberWrapper>\n );\n};\nexport default Pagination;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { Grid } from '../../atoms/Grid';\n\nexport const PeopleListingGrid = styled(Grid)`\n gap: var(--line-height-people-listing-gap) var(--grid-column-gap);\n\n p {\n margin: 0;\n }\n\n grid-template-columns: 1fr 1fr 1fr;\n\n @media ${devices.mobile} {\n grid-template-columns: 1fr;\n }\n\n @media ${devices.tablet} {\n grid-template-columns: 1fr 1fr;\n }\n\n @media ${devices.largeDesktop} {\n grid-template-columns: 1fr 1fr 1fr 1fr;\n }\n`;\n\nexport const PersonWrapper = styled.div`\n display: grid;\n grid-template-columns: 60px 1fr;\n grid-template-areas: 'headshot role-person';\n grid-column-gap: 10px;\n`;\n\nexport const HeadshotWrapper = styled.div`\n display: flex;\n grid-area: headshot;\n img {\n width: 60px;\n height: 60px;\n }\n`;\n\nexport const RoleWrapper = styled.div`\n color: var(--base-color-darkgrey);\n overflow-wrap: break-word;\n margin-bottom: 4px;\n`;\n\nexport const TextWrapper = styled.div`\n grid-area: role-person;\n break-inside: avoid;\n`;\n\nexport const PersonLink = styled.a`\n color: var(--base-color-black);\n text-decoration: underline;\n\n :hover {\n color: var(--base-color-primary);\n :after {\n color: var(--base-color-black);\n }\n }\n\n :visited {\n color: var(--base-color-black);\n }\n`;\n\nexport const ReplacementWrapper = styled.span`\n color: var(--base-color-darkgrey);\n`;\n","import React, { FunctionComponent } from 'react';\nimport { ListingPerson } from '../../../types/types';\nimport { PersonLink, ReplacementWrapper } from './PeopleListing.style';\nimport { BodyText } from '../../atoms';\n\nconst Person: FunctionComponent<{ person: ListingPerson; withSeparator: boolean }> = ({ person, withSeparator }) => {\n const { link, name, replacement, separator = ', ' } = person;\n const personSeparator = withSeparator ? separator : '';\n\n if (link) {\n return (\n <>\n <PersonLink href={link}>{name}</PersonLink>\n {personSeparator ? <span>{separator}</span> : null}\n </>\n );\n }\n\n return (\n <span>\n {name}\n\n {replacement && (\n <>\n {' '}\n <ReplacementWrapper>\n <BodyText level={1} tag=\"span\">\n {replacement}\n </BodyText>\n </ReplacementWrapper>\n </>\n )}\n\n {personSeparator}\n </span>\n );\n};\n\nexport default Person;\n","/* eslint-disable no-extra-boolean-cast */\nimport React from 'react';\nimport { IPeopleListing, ListingRole } from '../../../types/types';\nimport { GridItem } from '../../atoms/Grid';\nimport { Overline, BodyText } from '../../atoms/Typography';\nimport { HeadshotWrapper, PeopleListingGrid, PersonWrapper, RoleWrapper, TextWrapper } from './PeopleListing.style';\nimport Person from './Person';\n\nfunction hasHeadshot(role: ListingRole): number {\n return +(!!role.people[0].headshot && role.people[0].useHeadshot);\n}\n\nfunction textSection(role: ListingRole): JSX.Element {\n return (\n <TextWrapper>\n <RoleWrapper title=\"role\" data-roh={role.dataROH}>\n <Overline level={1}>{role.name}</Overline>\n </RoleWrapper>\n <BodyText level={1} tag=\"p\">\n {role.people.map((person, personIndex) => (\n <Person\n key={`${person.name}${personIndex}`}\n person={person}\n withSeparator={role.people.length !== personIndex + 1}\n />\n ))}\n </BodyText>\n </TextWrapper>\n );\n}\nconst PeopleListing = ({ roles }: IPeopleListing) => {\n return (\n <PeopleListingGrid>\n {roles\n .sort((a, b) => hasHeadshot(b) - hasHeadshot(a))\n .map((role, index) => {\n return (\n <GridItem key={`${role.name}-${index}`}>\n {!!hasHeadshot(role) ? (\n <PersonWrapper>\n <HeadshotWrapper>\n <img src={role.people[0].headshot} alt={role.people[0].name} />\n </HeadshotWrapper>\n {textSection(role)}\n </PersonWrapper>\n ) : (\n textSection(role)\n )}\n </GridItem>\n );\n })}\n </PeopleListingGrid>\n );\n};\n\nexport default PeopleListing;\n","import styled from 'styled-components';\nimport { PeopleListingGrid } from '../PeopleListing.style';\nimport { devices } from '../../../../styles/viewports';\n\nexport const ReplacementWrapper = styled.div`\n color: var(--base-color-darkgrey);\n`;\n\nexport const CreditListingWrapper = styled(PeopleListingGrid)<{ columnCount: number }>`\n p {\n line-height: 1.5;\n }\n\n grid-template-columns: ${({ columnCount }) => `repeat(${columnCount}, 1fr)`};\n\n @media ${devices.mobile} {\n grid-template-columns: 1fr;\n }\n\n @media ${devices.tablet} {\n grid-template-columns: repeat(2, 1fr);\n }\n`;\n\nexport const DescriptionWrapper = styled.div`\n color: var(--base-color-darkgrey);\n p {\n line-height: 25px;\n margin-bottom: 3px;\n }\n`;\n\nexport const RoleWrapper = styled.div`\n color: var(--base-color-darkgrey);\n overflow-wrap: break-word;\n min-height: 1.5em;\n`;\n\nexport const CreditWrapper = styled.div`\n display: grid;\n grid-template-columns: 0px 1fr;\n grid-template-areas: 'headshot role-person';\n grid-column-gap: 10px;\n`;\n","import styled, { css } from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\nimport { IEditorialGridProps } from '../../../types/editorial';\nimport { IPromoWithTagsStyledProps } from '../../../types/promoWithTags';\nimport { devices } from '../../../styles/viewports';\nimport TypeTags from '../../atoms/TypeTags/TypeTags';\nimport { Header, TextLink } from '../../atoms';\n\nconst LENGTH_TEXT = 28;\nconst LENGTH_TEXT_TABLET = 12;\n\nconst GridTemplateImageToLeft = `'left left left left left left left left . right right right right right . .'`;\nconst GridTemplateImageToRight = `'. . left left left left left . right right right right right right right right'`;\nconst GridTemplateAsCard = `'. . left left left left left right right right right right right right . . '`;\nconst GridTemplateAsCardTablet = `'. . left left left left left left left right right right right right . . '`;\n\nexport const PromoWithTagsGrid = styled(Grid)<IEditorialGridProps>`\n grid-template-areas: ${({ imageToLeft }) => (imageToLeft ? GridTemplateImageToLeft : GridTemplateImageToRight)};\n\n @media ${devices.tablet} {\n & {\n grid-template-areas: ${({ imageToLeft }) =>\n imageToLeft\n ? `'left left left left left left left right right right right right right .'`\n : `'. left left left left left left right right right right right right right'`};\n }\n }\n\n @media ${devices.mobile} {\n & {\n grid-template-columns: var(--grid-margin) minmax(0, 1fr) var(--grid-margin);\n grid-template-rows: min-content 24px min-content;\n gap: 0;\n grid-template-areas:\n 'row1 row1 row1'\n '. . .'\n '. row2 .';\n }\n }\n\n /* Overwrite template for card */\n ${({ asCard }) =>\n asCard\n ? `\n grid-template-areas: ${GridTemplateAsCard};\n @media ${devices.tablet} {\n grid-template-areas: ${GridTemplateAsCardTablet};\n }\n `\n : ``}\n`;\n\nexport const PromoWithTagsSubtitle = styled.span`\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n margin-bottom: var(--editorial-subtitle-margin-bottom);\n display: block;\n overflow-wrap: break-word;\n`;\n\nexport const PromoWithTagsText = styled.div`\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n h5,\n h6 {\n margin: 0 0 4px 0;\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n overflow-wrap: break-word;\n }\n\n em {\n font-family: var(--font-family-body-italics);\n }\n\n a {\n text-decoration: underline;\n cursor: pointer;\n\n &[href^='tel:'] {\n text-decoration: none;\n }\n\n &:link {\n color: ${({ theme }) => theme.colors.black};\n }\n\n &:visited {\n color: ${({ theme }) => theme.colors.darkgrey};\n }\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n }\n }\n`;\n\nexport const ButtonsContainer = styled.div<IEditorialGridProps>`\n display: flex;\n gap: 16px;\n margin-top: 24px;\n\n ${({ hasTextLinks }) => `margin-top: ${hasTextLinks ? '0' : '24px'};`};\n\n ${({ primaryButtonTextLength = 0, tertiaryButtonTextLength = 0 }) => {\n const isLinksLayoutColumn = primaryButtonTextLength >= LENGTH_TEXT || tertiaryButtonTextLength >= LENGTH_TEXT;\n\n if (isLinksLayoutColumn) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n\n @media ${devices.mobile} {\n gap: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ${devices.tablet} {\n gap: 24px;\n align-items: flex-start;\n\n ${({ primaryButtonTextLength = 0, tertiaryButtonTextLength = 0 }) => {\n const isLinksLayoutColumnTablet =\n primaryButtonTextLength >= LENGTH_TEXT_TABLET || tertiaryButtonTextLength >= LENGTH_TEXT_TABLET;\n\n if (isLinksLayoutColumnTablet) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n }\n`;\n\nexport const PromoWithTagsTagWrapper = styled.div<IPromoWithTagsStyledProps>`\n margin-bottom: ${({ marginBottom }) => `${marginBottom}px`};\n`;\n\nexport const PromoWithTagsAdditionalText = styled(PromoWithTagsText)`\n margin: 24px 0;\n`;\n\nexport const TextLinksContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n margin: 24px 0 4px 0;\n`;\n\nexport const TextLinkWrapper = styled.div`\n margin-right: 24px;\n margin-bottom: 20px;\n\n &:last-child {\n margin-right: 0;\n }\n`;\n\nexport const ExtraContentWrapper = styled.div`\n position: relative;\n padding-right: 68px;\n\n iframe {\n height: 800px;\n }\n\n @media ${devices.tablet} {\n padding: 30px 0 0;\n }\n\n @media ${devices.mobile} {\n padding: 0;\n position: initial;\n }\n`;\n\nexport const IconWrapper = styled.div`\n cursor: pointer;\n position: absolute;\n top: 25px;\n right: 35px;\n width: 24px;\n height: 24px;\n\n @media ${devices.tablet} {\n top: 30px;\n right: 30px;\n }\n\n @media ${devices.mobile} {\n top: 3px;\n right: 20px;\n }\n`;\n\nexport const PrimaryButtonWrapper = styled.div`\n height: var(--button-height);\n\n @media ${devices.mobile} {\n width: 100%;\n }\n`;\n\nexport const MobileTitleWrapper = styled.div`\n display: none;\n margin: 0 50px 0 20px;\n\n h2,\n h3 {\n margin: 0;\n }\n\n @media ${devices.mobile} {\n display: block;\n }\n`;\n\nexport const PromoWithTagsTypeTags = styled(TypeTags)``;\nexport const PromoWithTagsHeader = styled(Header)``;\nexport const PromoWithTagsTextLink = styled(TextLink)``;\nconst asCardOverrides = css`\n ${PromoWithTagsSubtitle} {\n font-size: var(--font-size-subtitle-2);\n }\n\n ${PromoWithTagsTypeTags} {\n font-size: var(--font-size-overline-1);\n }\n\n ${ButtonsContainer} {\n flex-direction: row;\n @media ${devices.tablet} {\n flex-direction: row;\n }\n }\n\n ${PromoWithTagsTextLink} {\n font-size: var(--font-size-overline-2);\n font-weight: var(--font-weight-overline-2);\n line-height: var(--line-height-overline-2);\n letter-spacing: var(--letter-spacing-overline-2);\n }\n`;\n\nexport const PromoWithTagsExtraContentWrapper = styled.div<IEditorialGridProps>`\n position: relative;\n grid-area: left;\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'left' : 'right')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n grid-area: row1;\n }\n }\n`;\n\nexport const PromoWithTagsContentWrapper = styled.div<IEditorialGridProps>`\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'right' : 'left')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n display: ${({ hideSection }) => (hideSection ? 'none' : 'block')};\n grid-area: row2;\n align-self: start;\n }\n }\n\n ${({ asCard }) => asCard && asCardOverrides}\n`;\n\nexport const PromoWithTagsContainer = styled.div`\n h2,\n h3 {\n margin: 0 0 16px;\n }\n`;\n\nexport const TimerWrapper = styled.div`\n margin-bottom: 32px;\n`;\n\nexport const EndDateText = styled.div`\n border-bottom: 1px solid var(--base-color-black);\n padding-bottom: 32px;\n margin-bottom: 32px;\n\n @media ${devices.mobile} {\n padding-bottom: 20px;\n margin-bottom: 20px;\n }\n`;\n","import React, { FunctionComponent, useState, MouseEvent, ReactElement } from 'react';\nimport {\n PromoWithTagsGrid,\n PromoWithTagsExtraContentWrapper,\n PromoWithTagsContentWrapper,\n PromoWithTagsSubtitle,\n PromoWithTagsText,\n PromoWithTagsContainer,\n ButtonsContainer,\n PromoWithTagsTagWrapper,\n PromoWithTagsAdditionalText,\n TextLinksContainer,\n TextLinkWrapper,\n ExtraContentWrapper,\n IconWrapper,\n PrimaryButtonWrapper,\n MobileTitleWrapper,\n PromoWithTagsTypeTags,\n PromoWithTagsHeader,\n PromoWithTagsTextLink,\n TimerWrapper,\n EndDateText,\n} from './PromoWithTags.style';\nimport { AltHeader, Icon, PrimaryButton, SecondaryButton, TertiaryButton } from '../../atoms';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport { AspectRatio } from '../../../types/image';\nimport { IPromoWithTagsProps } from '../../../types/promoWithTags';\nimport { EditorialLink } from '../../../types/editorial';\nimport { ButtonType, Colors } from '../../../types';\nimport { devices } from '../../../styles/viewports';\nimport { TypographyLevel } from '../../../types/typography';\nimport { truncate } from '../../../helpers/htmlStrings';\nimport Timer from '../../atoms/Timer';\nimport { IButtonProps } from '../../../types/buttonTypes';\n\nconst LENGTH_TEXT = 28;\nconst LENGTH_TEXT_PARAGRAPH = 130;\n\nconst buttonTypeToButton = {\n [ButtonType.Primary]: PrimaryButton,\n [ButtonType.Secondary]: SecondaryButton,\n [ButtonType.Tertiary]: TertiaryButton,\n};\n\nconst PromoWithTags: FunctionComponent<IPromoWithTagsProps> = ({\n imagePosition = 'left',\n title = '',\n titleSize = 'large',\n subtitle,\n text,\n textLinks,\n links,\n children,\n aboveTitleTags,\n belowTitleTags,\n middleText,\n bottomText,\n image,\n asCard = false,\n disableCTA = false,\n disabledCTACopy = 'Sold Out',\n timerParams,\n}) => {\n const [showExtraContent, setShowExtraContent] = useState(false);\n const [isTimerActive, setIsTimerActive] = useState(true);\n\n const getTitleLevel = (size: string, isCard: boolean): TypographyLevel => {\n if (isCard) {\n return 5;\n }\n if (size === 'large') {\n return 2;\n }\n return 3;\n };\n\n const imageToLeft = imagePosition === 'left';\n const titleLevel = getTitleLevel(titleSize, asCard);\n const isExtraContentPresent = !!children;\n const anchorLink = `${title.replace(' ', '-').toLocaleLowerCase()}-content`;\n\n const handleExtraContent = (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n setShowExtraContent(true);\n if (window.matchMedia?.(devices.mobile).matches) {\n window.location.href = `#${anchorLink}`;\n }\n };\n const defaultOnClickHandler = isExtraContentPresent ? handleExtraContent : undefined;\n\n const firstButton = links?.[0];\n const { text: firstButtonText = '', ...restFirstButton } = firstButton || {};\n const primaryButtonTextTruncate = truncate(firstButtonText, LENGTH_TEXT);\n\n const secondButton = links?.[1];\n const { text: secondButtonText = '', ...restSecondButton } = secondButton || {};\n const secondButtonTextTruncate = truncate(secondButtonText, LENGTH_TEXT);\n const textTruncate = asCard ? truncate(text || '', LENGTH_TEXT_PARAGRAPH) : text;\n\n const FirstButtonComponent = firstButton?.buttonType\n ? (buttonTypeToButton[firstButton.buttonType] as FunctionComponent<IButtonProps>)\n : PrimaryButton;\n\n const SecondButtonComponent = secondButton?.buttonType\n ? (buttonTypeToButton[secondButton.buttonType] as typeof TertiaryButton)\n : TertiaryButton;\n\n const textLinkItems = textLinks\n ? textLinks.map((link: EditorialLink, index) => {\n const { text: textLinkText = '', ...restTextLink } = link;\n return (\n <TextLinkWrapper key={index}>\n <PromoWithTagsTextLink {...restTextLink}>{textLinkText}</PromoWithTagsTextLink>\n </TextLinkWrapper>\n );\n })\n : null;\n\n const renderTimerBlock = (): ReactElement | null => {\n if (!timerParams) return null;\n\n if (!isTimerActive && timerParams.endDateText) {\n return (\n <EndDateText data-testid=\"promo-with-tags-timer-end-date-text\">\n <AltHeader level={5}>{timerParams.endDateText}</AltHeader>\n </EndDateText>\n );\n }\n\n return (\n <TimerWrapper data-testid=\"promo-with-tags-timer-wrapper\">\n <Timer endDateHandler={() => setIsTimerActive(false)} endDate={timerParams.endDate} title={timerParams.title} />\n </TimerWrapper>\n );\n };\n\n return (\n <PromoWithTagsGrid id={anchorLink} data-testid=\"grid-wrapper\" imageToLeft={imageToLeft} asCard={asCard}>\n <PromoWithTagsContentWrapper\n data-testid=\"content-wrapper\"\n imageToLeft={imageToLeft}\n hideSection={showExtraContent}\n asCard={asCard}\n >\n {renderTimerBlock()}\n <PromoWithTagsContainer>\n {!!aboveTitleTags?.length && (\n <PromoWithTagsTagWrapper marginBottom={16}>\n <PromoWithTagsTypeTags list={aboveTitleTags} />\n </PromoWithTagsTagWrapper>\n )}\n <PromoWithTagsHeader semanticLevel={2} level={titleLevel}>\n {title}\n </PromoWithTagsHeader>\n </PromoWithTagsContainer>\n {subtitle && <PromoWithTagsSubtitle>{subtitle}</PromoWithTagsSubtitle>}\n {!!belowTitleTags?.length && (\n <PromoWithTagsTagWrapper marginBottom={8}>\n <PromoWithTagsTypeTags list={belowTitleTags} />\n </PromoWithTagsTagWrapper>\n )}\n <PromoWithTagsText dangerouslySetInnerHTML={{ __html: textTruncate as string }} />\n {middleText && <PromoWithTagsAdditionalText dangerouslySetInnerHTML={{ __html: middleText as string }} />}\n {bottomText && <PromoWithTagsAdditionalText dangerouslySetInnerHTML={{ __html: bottomText as string }} />}\n {!!textLinks?.length && <TextLinksContainer>{textLinkItems}</TextLinksContainer>}\n {links && (\n <ButtonsContainer\n hasTextLinks={!!textLinks?.length}\n data-testid=\"buttons-wrapper\"\n primaryButtonTextLength={firstButtonText.length}\n tertiaryButtonTextLength={secondButtonText.length}\n >\n {firstButton && (\n <PrimaryButtonWrapper>\n {disableCTA ? (\n <FirstButtonComponent bgColor={Colors.MidGrey} onClick={() => null} data-testid=\"diabled-link\">\n {disabledCTACopy || primaryButtonTextTruncate}\n </FirstButtonComponent>\n ) : (\n !showExtraContent && (\n <FirstButtonComponent onClick={defaultOnClickHandler} {...restFirstButton}>\n {primaryButtonTextTruncate}\n </FirstButtonComponent>\n )\n )}\n </PrimaryButtonWrapper>\n )}\n {secondButton && (\n <SecondButtonComponent {...restSecondButton}>{secondButtonTextTruncate}</SecondButtonComponent>\n )}\n </ButtonsContainer>\n )}\n </PromoWithTagsContentWrapper>\n <PromoWithTagsExtraContentWrapper data-testid=\"extra-content-wrapper\" imageToLeft={imageToLeft}>\n {showExtraContent && (\n <MobileTitleWrapper>\n <PromoWithTagsHeader semanticLevel={2} level={titleLevel}>\n {title}\n </PromoWithTagsHeader>\n </MobileTitleWrapper>\n )}\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n {isExtraContentPresent && showExtraContent ? (\n <ExtraContentWrapper>\n {children}\n <IconWrapper\n data-testid=\"extra-content-close-button\"\n onClick={() => setShowExtraContent(false)}\n tabIndex={0}\n onKeyPress={(e) => {\n if (e.key === 'Enter') {\n setShowExtraContent(false);\n }\n }}\n >\n <Icon iconName=\"Close\" color={Colors.Black} />\n </IconWrapper>\n </ExtraContentWrapper>\n ) : (\n image && <img data-testid=\"promo-with-tags-image\" src={image.src} alt={image.alt} />\n )}\n </ImageAspectRatioWrapper>\n </PromoWithTagsExtraContentWrapper>\n </PromoWithTagsGrid>\n );\n};\n\nexport default PromoWithTags;\n","import styled from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\nimport { IEditorialGridProps } from '../../../types/editorial';\nimport { devices } from '../../../styles/viewports';\n\nconst LENGTH_TEXT = 28;\nconst LENGTH_TEXT_TABLET = 10;\n\nexport const PromoWithTitleGrid = styled(Grid)<IEditorialGridProps>`\n grid-template-areas: ${({ imageToLeft }) =>\n imageToLeft\n ? `'left left left left left left left left . right right right right right . .'`\n : `'. . left left left left left . right right right right right right right right'`};\n\n @media ${devices.tablet} {\n & {\n grid-template-areas: ${({ imageToLeft }) =>\n imageToLeft\n ? `'left left left left left left left right right right right right right .'`\n : `'. left left left left left left right right right right right right right'`};\n }\n }\n\n @media ${devices.mobile} {\n & {\n grid-template-columns: var(--grid-margin) minmax(0, 1fr) var(--grid-margin);\n grid-template-rows: min-content 24px min-content;\n gap: 0;\n grid-template-areas:\n 'row1 row1 row1'\n '. . .'\n '. row2 .';\n }\n }\n`;\n\nexport const PromoWithTitleImageWrapper = styled.div<IEditorialGridProps>`\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'left' : 'right')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n grid-area: row1;\n }\n }\n`;\n\nexport const PromoWithTitleContentWrapper = styled.div<IEditorialGridProps>`\n grid-area: ${({ imageToLeft }) => (imageToLeft ? 'right' : 'left')};\n align-self: center;\n @media ${devices.mobile} {\n & {\n grid-area: row2;\n align-self: start;\n }\n }\n`;\n\nexport const PromoWithTitleContainer = styled.div`\n h2,\n h3 {\n margin: 0 0 32px;\n\n @media ${devices.mobile} {\n & {\n margin: 0 0 24px;\n }\n }\n }\n`;\n\nexport const PromoWithTitleSubtitle = styled.span`\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n margin-bottom: var(--editorial-subtitle-margin-bottom);\n display: block;\n overflow-wrap: break-word;\n`;\n\nexport const PromoWithTitleText = styled.div`\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n h5,\n h6 {\n margin: 0 0 4px 0;\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n overflow-wrap: break-word;\n }\n\n em {\n font-family: var(--font-family-body-italics);\n }\n\n a {\n text-decoration: underline;\n cursor: pointer;\n\n &[href^='tel:'] {\n text-decoration: none;\n }\n\n &:link {\n color: ${({ theme }) => theme.colors.black};\n }\n\n &:visited {\n color: ${({ theme }) => theme.colors.darkgrey};\n }\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n }\n }\n`;\n\nexport const ButtonsContainer = styled.div<IEditorialGridProps>`\n display: flex;\n gap: 16px;\n margin-top: 32px;\n\n ${({ primaryButtonTextLength = 0, tertiaryButtonTextLength = 0 }) => {\n const isLinksLayoutColumn = primaryButtonTextLength >= LENGTH_TEXT || tertiaryButtonTextLength >= LENGTH_TEXT;\n\n if (isLinksLayoutColumn) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n\n @media ${devices.mobile} {\n gap: 24px;\n margin-top: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ${devices.tablet} {\n gap: 24px;\n margin-top: 24px;\n align-items: flex-start;\n\n ${({ primaryButtonTextLength = 0, tertiaryButtonTextLength = 0 }) => {\n const isLinksLayoutColumnTablet =\n primaryButtonTextLength >= LENGTH_TEXT_TABLET || tertiaryButtonTextLength >= LENGTH_TEXT_TABLET;\n\n if (isLinksLayoutColumnTablet) {\n return `\n flex-direction: column;\n `;\n }\n return '';\n }}\n }\n`;\n","import styled from 'styled-components';\nimport { AspectRatio } from '../../../types';\nimport { AspectRatioLegacy, IImageAspectRatioWrapperProps as IVideoContainerProps } from '../../../types/image';\n\nexport const VideoContainer = styled.div<IVideoContainerProps>`\n position: relative;\n aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio};\n\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n width: 100%;\n padding-top: ${({ aspectRatio = AspectRatio['1:1'] }) => AspectRatioLegacy[aspectRatio]}%;\n }\n\n video {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n position: absolute;\n top: 0;\n left: 0;\n }\n }\n`;\n","import React, { FunctionComponent, cloneElement, useMemo, useRef, useState } from 'react';\nimport { IVideoWithControlsProps } from '../../../types/types';\nimport { AspectRatio } from '../../../types';\nimport { VideoControls } from '../../atoms';\nimport { VideoContainer } from './VideoWithControls.style';\nimport { getAspectRatioFromVideo } from '../../../helpers/aspectRatio';\nimport { generateDomElementId } from '../../../helpers/generateDomElementId';\n\nconst VideoWithControls: FunctionComponent<IVideoWithControlsProps> = ({ video, settings }) => {\n const videoRef = useRef<HTMLVideoElement>(null);\n const [aspectRatio, setAspectRatio] = useState(AspectRatio['16:9']);\n const [isVideoReady, setIsVideoReady] = React.useState<boolean>(false);\n const { muted, autoPlay } = settings;\n\n React.useEffect(() => {\n const changeVideoReadiness = () => {\n setIsVideoReady(true);\n };\n if (videoRef.current) {\n videoRef.current.addEventListener('canplay', changeVideoReadiness);\n return () => videoRef.current?.removeEventListener('canplay', changeVideoReadiness);\n }\n return undefined;\n }, []);\n\n const handleMetadataLoaded = () => {\n if (videoRef.current) {\n const newAspectRatio = getAspectRatioFromVideo(videoRef.current);\n setAspectRatio(newAspectRatio);\n }\n };\n\n const videoElementId = useMemo(() => `video-id-${generateDomElementId()}`, []);\n\n const clonedVideo = cloneElement(video, {\n playsInline: true,\n ...(muted ? { muted: true } : {}),\n ...(autoPlay && muted ? { autoPlay: true } : {}),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...({ height: '100%', width: '100%', onLoadedMetadata: handleMetadataLoaded, id: videoElementId } as any),\n poster: autoPlay && isVideoReady ? undefined : video.props.poster,\n ref: videoRef,\n });\n\n const videoContainerId = `video-container-for-${videoElementId}`;\n const videoControlsProps = { ...settings, videoElementId, videoContainerId };\n const showVideoControls = autoPlay ? isVideoReady : true;\n\n return (\n <VideoContainer\n className=\"video-with-controls-container\"\n aspectRatio={aspectRatio}\n id={videoContainerId}\n data-testid=\"video-container\"\n >\n {clonedVideo}\n {showVideoControls && <VideoControls {...videoControlsProps} />}\n </VideoContainer>\n );\n};\n\nexport default VideoWithControls;\n","/**\n * Generates a random string in the format XXX-XXX.\n * Does not meet UUID standards.\n * To be used where only a small number of unique IDs are required, e.g. DOM element IDs.\n *\n * @return {string} A random string in the format XXX-XXX.\n */\nexport const generateDomElementId = (): string => {\n const randomPart = Math.floor(100 + Math.random() * 900).toString();\n const datePart = Date.now().toString().slice(-3);\n return `${randomPart}-${datePart}`;\n};\n","import { AspectRatio } from '../types';\n\nexport const getAspectRatioFromVideo = (video: HTMLVideoElement): AspectRatio => {\n const { videoWidth, videoHeight } = video;\n\n // Finds the greatest common divisor (GCD) using the Euclidean algorithm\n const gcd = (a: number, b: number): number => (b === 0 ? a : gcd(b, a % b));\n\n if (!videoWidth || !videoHeight) return AspectRatio['16:9'];\n\n const divisor = gcd(videoWidth, videoHeight);\n const aspectRatioKey = `${videoWidth / divisor}:${videoHeight / divisor}` as keyof typeof AspectRatio;\n return AspectRatio[aspectRatioKey] || AspectRatio['16:9'];\n};\n","import React, { FunctionComponent, ReactElement } from 'react';\nimport { AspectRatio } from '../../../types';\nimport { PromoWithTitleImageWrapper } from './PromoWithTitle.style';\nimport { ImageAspectRatioWrapper } from '../../atoms';\nimport VideoWithControls from '../VideoWithControls/VideoWithControls';\nimport { IVideoWithControlsSettings } from '../../../types/types';\n\ninterface IPromoChildProps {\n children: ReactElement<HTMLImageElement | HTMLVideoElement>;\n videoSettings: IVideoWithControlsSettings;\n imageToLeft: boolean;\n}\n\nconst PromoChild: FunctionComponent<IPromoChildProps> = ({ children, videoSettings, imageToLeft }) => {\n const isImage = React.Children.only(children).type === 'img';\n const isVideo = React.Children.only(children).type === 'video';\n\n return (\n <PromoWithTitleImageWrapper data-testid=\"image-wrapper\" imageToLeft={imageToLeft}>\n {isImage && (\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']} data-testid=\"AspectRatioWrapper\">\n {children}\n </ImageAspectRatioWrapper>\n )}\n {isVideo && <VideoWithControls video={children as ReactElement<HTMLVideoElement>} settings={videoSettings} />}\n </PromoWithTitleImageWrapper>\n );\n};\n\nexport default PromoChild;\n","import styled from 'styled-components';\n\nexport const RadioGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 30px;\n`;\n","import styled from 'styled-components';\nimport { IRadioGroup2Props } from '../../../types/formTypes';\n\nexport const Container = styled.div``;\n\nexport const RadioGroup = styled.div<Pick<IRadioGroup2Props, 'horizontalMode' | 'gap'>>`\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: ${({ horizontalMode }) => {\n if (horizontalMode) return 'row';\n return 'column';\n }};\n gap: ${({ gap }) => `${gap}px`};\n`;\n\nexport const ErrorLabel = styled.div<Pick<IRadioGroup2Props, 'darkMode'>>`\n margin-top: 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return 'var(--base-color-white)';\n return 'var(--base-color-errorstate)';\n }};\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const StatusBannerWrapper = styled.div`\n padding: 26px 150px;\n display: flex;\n justify-content: space-between;\n background-color: var(--base-color-lightgrey);\n transition: transform 0.3s ease;\n transform-origin: top;\n\n @media ${devices.mobile} {\n padding: 20px 20px;\n }\n\n @media ${devices.tablet} {\n padding: 20px 50px;\n }\n\n &.closing {\n transform: scaleY(0);\n }\n`;\n\nexport const ContentContainer = styled.div`\n overflow: auto;\n transition: max-height 0.3s ease-in-out;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n`;\n\nexport const SvgContainer = styled.div`\n height: 100%;\n display: flex;\n align-items: end;\n\n svg {\n width: var(--navigation-large-gap);\n height: var(--navigation-large-gap);\n padding-left: 50px;\n }\n\n cursor: pointer;\n\n @media ${devices.mobile} {\n padding-left: 20px;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nconst SectionTitleWrapper = styled.div`\n margin: 30px 0;\n\n & > div {\n row-gap: 0;\n }\n\n & h1,\n & h2 {\n margin: 16px 0;\n white-space: pre-wrap;\n }\n\n @media ${devices.mobile} {\n & h1,\n & h2 {\n margin: 12px 0;\n }\n }\n\n & div {\n font-size: var(--font-size-title-description);\n line-height: var(--line-height-title-description);\n margin-block-start: 0;\n }\n`;\n\nexport default SectionTitleWrapper;\n","import styled, { css } from 'styled-components';\nimport zIndexes from '../../../styles/zIndexes';\nimport { Theme } from '../../../types/utility';\nimport { Icon } from '../../atoms';\nimport { ISelectProps } from '../../../types/formTypes';\n\nconst stateStyles = css`\n &:focus,\n &.focus {\n outline: ${({ theme }) => `3px solid ${(theme as Theme).colors.lapisLazuli}`};\n }\n\n &.disabled {\n background-color: ${({ theme }) => (theme as Theme).colors.lightgrey};\n color: ${({ theme }) => (theme as Theme).colors.lightgrey};\n pointer-events: none;\n cursor: none;\n }\n`;\n\nconst borderStyles = css`\n border-radius: 0;\n outline: 1px solid ${({ theme }) => (theme as Theme).colors.darkgrey};\n`;\n\nconst noMarginAndPaddingStyles = css`\n margin: 0;\n padding: 0;\n`;\n\nconst listItemStyles = css`\n list-style: none;\n user-select: none;\n`;\n\nexport const ArrowIcon = styled(Icon).attrs(({ theme }) => ({\n iconName: 'DropdownArrow',\n color: (theme as Theme).colors.black,\n title: 'Select Arrow',\n}))`\n pointer-events: none;\n\n max-width: 24px;\n max-height: 24px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n`;\n\nexport const Wrapper = styled.div`\n ${noMarginAndPaddingStyles}\n height: initial;\n\n display: flex;\n flex-direction: column;\n gap: 20px;\n`;\n\nexport const SelectWrapper = styled.div`\n ${noMarginAndPaddingStyles}\n height: inherit;\n`;\n\nexport const Options = styled.div`\n z-index: 1;\n\n ${noMarginAndPaddingStyles}\n ${borderStyles}\n`;\n\nexport const Option = styled.li<{ hover: boolean }>`\n ${noMarginAndPaddingStyles}\n ${listItemStyles}\n\n ${({ theme, hover }) => {\n const { lightgrey, midgrey } = (theme as Theme).colors;\n if (hover) return `background-color: ${midgrey}`;\n return `\n background-color: ${lightgrey};\n &:hover { background-color: ${midgrey} }\n `;\n }}\n`;\n\nconst selectStyles = (width: string, height: string) => css`\n position: relative;\n z-index: ${zIndexes[3]};\n\n width: ${width};\n height: ${height};\n\n * {\n width: ${width};\n }\n\n ${Options} {\n position: absolute;\n top: ${height};\n }\n ${Option} {\n height: ${height};\n }\n p {\n height: ${height};\n padding-inline: 20px;\n\n display: flex;\n align-items: center;\n }\n`;\nexport const SelectList = styled.ul<Pick<Required<ISelectProps>, 'width' | 'height'>>`\n ${({ width, height }) =>\n selectStyles(width === 'default' ? `354px` : `${width}px`, height === 'default' ? `48px` : `${height}px`)}\n\n ${stateStyles}\n ${noMarginAndPaddingStyles}\n ${listItemStyles}\n ${borderStyles}\n\n & ${ArrowIcon} {\n position: absolute;\n\n top: 13px;\n right: 16px;\n }\n`;\n","import styled from 'styled-components';\nimport { ISelect2Props } from '../../../types/formTypes';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const SelectWrapper = styled.div<Pick<ISelect2Props, 'width' | 'darkMode' | 'error'>>`\n position: relative;\n width: auto;\n max-width: ${({ width }) => {\n if (!width) return 'none';\n return `${width}px`;\n }};\n\n .harmonic-select__control {\n min-height: 48px;\n border-radius: 0;\n transition: none;\n border: ${({ error }) => {\n if (error !== undefined) return `1px solid var(--base-color-errorstate)`;\n return `1px solid var(--base-color-darkgrey)`;\n }};\n &:hover {\n border-color: ${({ error }) => {\n if (error !== undefined) return `var(--base-color-errorstate)`;\n return `var(--base-color-darkgrey)`;\n }};\n }\n }\n .harmonic-select__control--is-focused {\n border-color: var(--base-color-darkgrey);\n box-shadow: ${({ darkMode }) => {\n if (darkMode) return `0 0 0 4px var(--base-color-lemonchiffon)`;\n return `0 0 0 3px var(--base-color-lapislazuli)`;\n }};\n }\n .harmonic-select__control--menu-is-open {\n .harmonic-select__indicator {\n svg {\n transform: rotate(180deg);\n }\n }\n }\n .harmonic-select__indicator {\n font-size: 25px;\n padding: 0;\n margin-right: 12px;\n color: var(--base-color-black);\n svg {\n height: 1em;\n width: 1em;\n color: inherit;\n path {\n fill: currentColor;\n color: inherit;\n }\n }\n }\n .harmonic-select__single-value,\n .harmonic-select__placeholder {\n margin-left: 0;\n margin-right: 0;\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n text-transform: var(--text-transform-altHeader);\n }\n .harmonic-select__placeholder {\n color: var(--base-color-darkgrey);\n }\n .harmonic-select__single-value {\n color: var(--base-color-black);\n }\n .harmonic-select__value-container {\n padding-left: 20px;\n padding-right: 20px;\n padding-top: 1px;\n padding-bottom: 0px;\n }\n .harmonic-select--is-disabled {\n .harmonic-select__control {\n border: 1px solid var(--base-color-lightgrey);\n background: var(--base-color-lightgrey);\n }\n .harmonic-select__indicator,\n .harmonic-select__single-value {\n color: var(--base-color-darkgrey);\n }\n }\n .harmonic-select__menu {\n margin-top: -1px;\n box-shadow: none;\n border-radius: 0;\n border: 1px solid var(--base-color-darkgrey);\n background: var(--base-color-lightgrey);\n }\n .harmonic-select__menu-list {\n padding-top: 0;\n padding-bottom: 0;\n }\n .harmonic-select__option {\n padding: 10px 20px;\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n text-transform: var(--text-transform-altHeader);\n color: var(--base-color-black);\n &:active,\n &.harmonic-select__option--is-focused {\n background: var(--base-color-midgrey);\n }\n }\n .harmonic-select__option--is-selected {\n color: var(--base-color-black);\n background: none;\n }\n .harmonic-select__input-container {\n margin: 0;\n padding-top: 0;\n padding-bottom: 0;\n font-family: var(--font-family-altHeader);\n font-feature-settings: var(--font-feature-settings-altHeader);\n font-size: var(--font-size-altHeader-6);\n font-weight: var(--font-weight-altHeader-6);\n letter-spacing: var(--letter-spacing-altHeader-6);\n line-height: var(--line-height-altHeader-6);\n text-transform: var(--text-transform-altHeader);\n color: var(--base-color-black);\n }\n .harmonic-select__menu-notice {\n padding: 20px 20px;\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n color: var(--base-color-black);\n text-align: left;\n }\n .harmonic-select__menu-notice--loading {\n font-style: italic;\n }\n`;\n\nexport const TextLabel = styled.div<Pick<ISelect2Props, 'darkMode'>>`\n margin: 0 0 20px;\n color: ${({ darkMode }) => {\n if (darkMode) return `var(--base-color-white)`;\n return `var(--base-color-black)`;\n }};\n`;\n\nexport const ErrorLabel = styled.div<Pick<ISelect2Props, 'darkMode'>>`\n margin: 20px 0 0;\n color: ${({ darkMode }) => {\n if (darkMode) return `var(--base-color-white)`;\n return `var(--base-color-errorstate)`;\n }};\n`;\n","/* eslint-disable no-shadow */\n/* eslint-disable jsx-a11y/label-has-for */\n/* eslint-disable jsx-a11y/label-has-associated-control */\nimport React, { FunctionComponent } from 'react';\nimport Select, { components, DropdownIndicatorProps } from 'react-select';\n\nimport { ISelect2Props } from '../../../types/formTypes';\nimport { Container, TextLabel, ErrorLabel, SelectWrapper } from './Select2.style';\nimport { AltHeader, Icon } from '../../atoms';\n\nexport const DropdownIndicator = (props: DropdownIndicatorProps) => {\n return (\n <components.DropdownIndicator {...props}>\n <Icon iconName=\"DropdownArrow\" />\n </components.DropdownIndicator>\n );\n};\n\ninterface IWrapperProps extends Pick<ISelect2Props, 'label' | 'error' | 'width' | 'darkMode'> {\n children: React.ReactNode;\n}\n\nexport const WrapperComponent: FunctionComponent<IWrapperProps> = ({ label, error, width, darkMode, children }) => {\n return (\n <Container>\n <label>\n {!!label && (\n <TextLabel darkMode={darkMode} data-testid=\"select2-text-label\">\n <AltHeader level={6}>{label}</AltHeader>\n </TextLabel>\n )}\n <SelectWrapper width={width} error={error} darkMode={darkMode}>\n {children}\n </SelectWrapper>\n </label>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"select2-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\n/**\n * A Select2 component wraps react-select with Harmonic styling and additional elements like\n * text and error labels. This should be used just as usual react-select component.\n * Note: using some advanced opportunities of react-select may require additional styling.\n *\n * # Error state\n * An error label will be shown below the select if the `error` prop exists.\n * Also select will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n */\nconst SelectComponent: FunctionComponent<ISelect2Props> = ({\n label,\n error,\n width,\n darkMode = false,\n isSearchable = false,\n components,\n ...selectProps\n}) => {\n return (\n <WrapperComponent label={label} error={error} width={width} darkMode={darkMode}>\n <Select\n {...selectProps}\n components={{\n DropdownIndicator,\n LoadingIndicator: undefined,\n IndicatorSeparator: undefined,\n ...components,\n }}\n className=\"harmonic-select-container\"\n classNamePrefix=\"harmonic-select\"\n isSearchable={isSearchable}\n />\n </WrapperComponent>\n );\n};\n\nexport default SelectComponent;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const TextContainer = styled.div`\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n\n & h1,\n h2,\n h3,\n h4 {\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n white-space: break-spaces;\n overflow-wrap: break-word;\n margin: 80px 0 16px;\n\n @media ${devices.mobileAndTablet} {\n margin-top: 60px;\n }\n\n + p {\n margin-top: 0px;\n }\n }\n\n & h5,\n h6 {\n font-size: var(--font-size-subtitle-1);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n white-space: break-spaces;\n overflow-wrap: break-word;\n margin: 80px 0 16px;\n\n @media ${devices.mobileAndTablet} {\n margin-top: 60px;\n }\n\n + p {\n margin-top: 10px;\n }\n }\n\n & a {\n color: ${({ theme }) => theme.colors.primary};\n text-decoration: underline;\n cursor: pointer;\n }\n\n p {\n margin: 30px 0;\n }\n\n & em {\n font-family: var(--font-family-body-italics);\n }\n\n & strong {\n font-weight: bold;\n }\n\n & u {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n }\n\n & ul {\n padding: 0;\n list-style: none;\n margin: 0 0 0 30px;\n\n li {\n text-indent: -20px;\n line-height: var(--line-height-listing);\n }\n }\n\n & ol {\n padding: 0;\n margin: 0 0 0 20px;\n\n li {\n line-height: var(--line-height-listing);\n }\n }\n\n & ul > li:before {\n display: inline-block;\n content: '—';\n width: 0px;\n margin-left: 12px;\n margin-right: 8px;\n }\n`;\n","import React, { FunctionComponent } from 'react';\nimport { TextContainer } from './TextOnly.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { ITextOnlyProps } from '../../../types/types';\n\nconst TextOnly: FunctionComponent<ITextOnlyProps> = ({\n text = '',\n columnStartDesktop = 3,\n columnSpanDesktop = 8,\n columnStartDevice = 2,\n columnSpanDevice = 12,\n}) => {\n return (\n <Grid>\n <GridItem\n columnStartDesktop={columnStartDesktop}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={columnStartDevice}\n columnSpanDevice={columnSpanDevice}\n >\n <TextContainer dangerouslySetInnerHTML={{ __html: text }} />\n </GridItem>\n </Grid>\n );\n};\n\nexport default TextOnly;\n","import styled from 'styled-components';\nimport { AspectRatio, AspectRatioWidth, IImageWithCaptionWrapperProps } from '../../../types/image';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\n\nexport const Wrapper = styled.div<IImageWithCaptionWrapperProps>`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: fit-content;\n\n ${ImageAspectRatioWrapper} {\n height: calc(100% - 12px - var(--line-height-body-2));\n @supports not (aspect-ratio: ${({ aspectRatio = AspectRatio['1:1'] }) => aspectRatio}) {\n width: ${({ aspectRatio = AspectRatio['1:1'], height }) =>\n `calc(calc(${height}px - 12px - var(--line-height-body-2)) * ${AspectRatioWidth[aspectRatio]})`};\n }\n }\n`;\n\nexport const CaptionWrapper = styled.div`\n margin-top: 12px;\n height: var(--line-height-body-2);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-2);\n font-weight: var(--font-weight-body-2);\n letter-spacing: var(--letter-spacing-body-2);\n line-height: var(--line-height-body-2);\n text-transform: var(--text-transform-body-2);\n word-break: var(--word-break-body-2);\n font-style: italic;\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport { IQuoteAttributionBlockProps } from '../../../types/quote';\n\nexport const TextWrapper = styled.div`\n h4 {\n margin: 0;\n }\n`;\n\nexport const AttributionWrapper = styled.div<IQuoteAttributionBlockProps>`\n ${({ displayAttribution }) => `display: ${displayAttribution ? 'block' : 'none'};`}\n`;\n\nexport const Line = styled.div`\n background-color: var(--base-color-black);\n height: 2px;\n width: 62px;\n margin: 32px 0;\n\n @media ${devices.mobile} {\n height: 1px;\n width: 46px;\n margin: 24px 0;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\n\nexport const CardContainer = styled.div`\n cursor: pointer;\n width: 100%;\n display: grid;\n grid-template-columns: repeat(7, minmax(0, 1fr));\n gap: 15px;\n min-height: 50px;\n`;\n\nexport const ContentContainer = styled.div`\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n`;\n\nexport const StyledImage = styled.img`\n border: 1px solid var(--base-color-white);\n`;\n\nexport const ImageWrapper = styled.div`\n position: relative;\n`;\n\nexport const IconWrapper = styled.div`\n background: rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n span {\n width: 40px;\n height: 40px;\n @media ${devices.tablet} {\n width: 24px;\n height: 24px;\n }\n @media ${devices.mobile} {\n width: 18px;\n height: 18px;\n }\n }\n`;\n\nexport const TitleWrapper = styled.div`\n margin-top: 8px;\n div {\n @media ${devices.mobile} {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const ReadMoreContainer = styled.div`\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0px 0px 12px 0px !important;\n }\n width: 100%;\n`;\n\nexport const LinkContainer = styled.div`\n padding-top: 24px;\n gap: 8px;\n\n :hover {\n cursor: pointer;\n }\n\n @media print {\n visibility: hidden;\n }\n`;\n\nexport const FullTextContainer = styled.div<{ isVisible?: boolean }>`\n visibility: ${({ isVisible }) => (isVisible ? 'visible' : 'hidden')};\n\n @media print {\n visibility: visible;\n }\n`;\n\nexport const IntroTextContainer = styled.div<{ isVisible?: boolean }>`\n visibility: ${({ isVisible }) => (isVisible ? 'visible' : 'hidden')};\n\n @media print {\n visibility: hidden;\n }\n`;\n\nexport const ContentContainer = styled.div`\n overflow: auto;\n transition: max-height 0.4s ease;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n\n & h1 {\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & h2 {\n font-size: var(--font-size-subtitle-1);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & em {\n font-family: var(--font-family-body-italics);\n }\n\n & u {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n }\n @media print {\n visibility: visible;\n max-height: 900px !important;\n }\n`;\n","import styled from 'styled-components';\nimport { Colors } from '../../../types';\n\nexport const MenuContainer = styled.nav`\n position: relative;\n padding: 0;\n margin: 0;\n`;\n\nexport const MenuList = styled.ul`\n padding: 0;\n margin: 0;\n list-style: none;\n border-right: 1px solid var(--base-color-${Colors.LightGrey});\n li {\n margin-left: -5px;\n }\n`;\n\nexport const MobileButton = styled.button`\n line-height: var(--line-height-navigation);\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-${Colors.Black});\n text-transform: uppercase;\n margin: 0;\n padding: 16px 46px 14px 20px;\n background: var(--base-color-${Colors.White});\n border: 1px solid var(--base-color-${Colors.DarkGrey});\n border-radius: 0;\n display: block;\n width: 100%;\n text-align: left;\n cursor: pointer;\n position: relative;\n span {\n width: 25px;\n height: 25px;\n position: absolute;\n top: 50%;\n margin-top: -12px;\n right: 10px;\n }\n`;\n\nexport const MenuItem = styled.a<{ isActive: boolean }>`\n line-height: var(--line-height-navigation);\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n font-weight: var(--font-weight-navigation);\n letter-spacing: var(--letter-spacing-navigation);\n color: var(--base-color-${Colors.Black});\n text-transform: uppercase;\n text-decoration: none;\n margin: 0;\n padding: 16px 20px 15px 5px;\n display: block;\n background: ${({ isActive }) => (isActive ? `var(--base-color-${Colors.MidGrey})` : 'none')};\n cursor: pointer;\n &:hover {\n background: var(--base-color-${Colors.MidGrey});\n }\n`;\n\nexport const MobileMenuList = styled.ul<{ isOpen: boolean }>`\n padding: 0;\n margin: 0;\n list-style: none;\n display: ${({ isOpen }) => (isOpen ? 'block' : 'none')};\n background: var(--base-color-${Colors.White});\n border: 1px solid var(--base-color-${Colors.DarkGrey});\n border-top: 0;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n ${MenuItem} {\n padding: 16px 20px 15px 20px;\n }\n`;\n","import React, { FunctionComponent, useState, useRef, useEffect } from 'react';\n\nimport { MenuContainer, MenuList, MenuItem, MobileButton, MobileMenuList } from './AuxiliaryNav.styles';\nimport { IAuxiliaryNavProps, INavProps, IItemProps } from '../../../types/auxiliaryNav';\nimport { Icon } from '../../atoms/Icons';\n\nconst NavItem: FunctionComponent<IItemProps> = ({ text, href, onClick, isActive, isMobile }) => {\n const linkRef = useRef<HTMLAnchorElement | null>(null);\n\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (onClick) onClick(e);\n };\n\n const linkElement = linkRef.current;\n if (linkElement) {\n linkElement.addEventListener('click', handleClick);\n }\n\n return () => {\n if (linkElement) {\n linkElement.removeEventListener('click', handleClick);\n }\n };\n }, [onClick]);\n\n const ariaCurrent = isMobile ? undefined : isActive;\n const ariaSelected = isMobile ? isActive : undefined;\n const role = isMobile ? 'option' : undefined;\n\n return (\n <li aria-current={ariaCurrent} aria-selected={ariaSelected} role={role}>\n <MenuItem ref={linkRef} href={href} isActive={isActive} data-testid={`nav-menu-item${isActive ? '-active' : ''}`}>\n {text}\n </MenuItem>\n </li>\n );\n};\n\nconst DesktopNav: FunctionComponent<INavProps> = ({ items, activeItem, ariaLabel }) => {\n return (\n <MenuContainer data-testid=\"nav-menu-container-desktop\" aria-label={ariaLabel}>\n <MenuList data-testid=\"nav-menu-list\">\n {items.map(({ text, href, onClick }, idx) => (\n <NavItem key={`${text}-${idx}`} text={text} href={href} onClick={onClick} isActive={text === activeItem} />\n ))}\n </MenuList>\n </MenuContainer>\n );\n};\n\nconst MobileNav: FunctionComponent<INavProps> = ({ items, activeItem, ariaLabel }) => {\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLElement>(null);\n\n const buttonClickHandler = () => {\n setIsOpen((prev) => !prev);\n };\n\n const outsideClickHandler = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as HTMLElement)) {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('mousedown', outsideClickHandler);\n\n return () => {\n document.removeEventListener('mousedown', outsideClickHandler);\n };\n }, [containerRef]);\n\n return (\n <MenuContainer ref={containerRef} data-testid=\"nav-menu-container-mobile\" aria-label={ariaLabel}>\n <MobileButton\n onClick={buttonClickHandler}\n data-testid=\"nav-menu-mobile-button\"\n aria-expanded={isOpen}\n aria-controls=\"auxiliary-nav-list\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n >\n {activeItem}\n <Icon iconName=\"DropdownArrow\" direction={isOpen ? 'left' : 'right'} />\n </MobileButton>\n <MobileMenuList\n id=\"auxiliary-nav-list\"\n data-testid=\"nav-menu-list\"\n isOpen={isOpen}\n aria-hidden={!isOpen}\n role=\"listbox\"\n >\n {items.map(({ text, href, onClick }, idx) => (\n <NavItem\n key={`${text}-${idx}`}\n text={text}\n href={href}\n onClick={onClick}\n isActive={text === activeItem}\n isMobile\n />\n ))}\n </MobileMenuList>\n </MenuContainer>\n );\n};\n\n/**\n * Vertical menu component uses for navigation\n * inside website chapter. It looks like a vertical\n * list with clickable items on desktop and dropdown\n * list on mobile.\n *\n * ## Menu items\n * Menu items should be passed as `items` prop. This\n * should be an array of objects. Each object should\n * have `text` (text displayed as a menu item) and\n * `onClick` (click handler function)\n *\n * ## Active menu item\n * Active menu item should be passed as component `activeItem`\n * prop. This indicates on which menu item should be highlighted\n * as active one. Should be equal to `text` prop from one of the `items`\n */\nconst AuxiliaryNav: FunctionComponent<IAuxiliaryNavProps> = ({ items, activeItem, isMobile, ariaLabel }) => {\n if (isMobile) {\n return <MobileNav items={items} activeItem={activeItem} ariaLabel={ariaLabel} />;\n }\n\n return <DesktopNav items={items} activeItem={activeItem} ariaLabel={ariaLabel} />;\n};\n\nexport default AuxiliaryNav;\n","import styled from 'styled-components';\nimport { Colors } from '../../../types/types';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const Sections = styled.div`\n display: flex;\n flex-direction: row;\n gap: 8px;\n`;\n\nexport const Section = styled.div<{ color: Colors }>`\n flex: 1;\n height: 2px;\n background-color: ${({ color }) => `var(--base-color-${color})`};\n`;\n\nexport const BottomLine = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 20px;\n`;\n\nexport const Text = styled.div<{ color: Colors }>`\n color: ${({ color }) => `var(--base-color-${color})`};\n`;\n\nexport const LabelText = styled.div<{ color: Colors }>`\n margin-top: 1px;\n white-space: nowrap;\n color: ${({ color }) => `var(--base-color-${color})`};\n`;\n","import styled from 'styled-components';\nimport { Colors } from '../../../types/types';\nimport { devices } from '../../../styles/viewports';\n\nexport const TableContainer = styled.table`\n border-collapse: collapse;\n`;\n\nexport const Container = styled.div`\n overflow-x: auto;\n`;\n\nexport const Wrapper = styled.div`\n width: 100%;\n`;\n\nexport const TableHeader = styled.th<{ columns: number; lineColor: Colors }>`\n font-size: var(--font-size-subtitle-2);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n padding: 30px 30px 30px 0;\n text-align: left;\n text-transform: uppercase;\n border-bottom: 1px solid;\n border-top: 1px solid;\n border-color: ${(props) => `var(--base-color-${props.lineColor})`};\n\n &:last-child {\n white-space: nowrap;\n width: auto;\n }\n\n &:not(:last-child) {\n width: ${(props) => `calc(100% / ${props.columns - 1})`};\n }\n\n @media ${devices.tablet} {\n &:last-child {\n white-space: nowrap;\n }\n }\n\n @media ${devices.mobile} {\n padding: 20px 20px 20px 0;\n\n &:last-child {\n white-space: normal;\n }\n }\n`;\n\nexport const TableCell = styled.td<{ columns: number; lineColor: Colors }>`\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n padding: 30px 30px 30px 0;\n text-align: left;\n vertical-align: top;\n border-bottom: 1px solid;\n border-color: ${(props) => `var(--base-color-${props.lineColor})`};\n\n &:last-child {\n width: auto;\n }\n\n &:not(:last-child) {\n width: ${(props) => `calc(100% / ${props.columns - 1})`};\n }\n\n > span > svg {\n width: 24px;\n height: 24px;\n }\n\n @media ${devices.mobile} {\n padding: 20px 20px 20px 0;\n }\n`;\n\nexport const Pagination = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px 0;\n flex-wrap: nowrap;\n flex-direction: row;\n list-style: none;\n max-width: fit-content;\n margin: auto;\n li {\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n margin-left: 16px;\n color: var(--base-color-dark-grey);\n display: flex;\n align-items: center;\n border-bottom: none;\n }\n`;\n\nexport const PageNumber = styled.button<{ active?: string }>`\n background: none;\n border: none;\n padding: 0;\n font-size: inherit;\n color: inherit;\n cursor: pointer;\n display: inline-block;\n margin: 0;\n border-bottom: 1px solid var(--base-color-transparent);\n line-height: var(--base-line-height);\n text-decoration: none;\n font-family: var(--font-family-body-1);\n\n :hover {\n outline: none;\n color: var(--base-color-core);\n border-bottom: 1px solid var(--base-color-core);\n svg > path {\n fill: var(--base-color-core);\n }\n }\n\n /* Active state */\n ${({ active }) =>\n active === 'true' &&\n `\n color: var(--base-color-core);\n border-bottom: 1px solid var(--base-color-core);\n `}\n`;\n\nexport const Next = styled.span`\n display: inline-flex;\n width: 25px;\n align-items: center;\n justify-content: center;\n margin-left: 0;\n span {\n height: 1.5em;\n svg > path {\n fill: var(--base-color-dark-grey);\n }\n }\n`;\n\nexport const ScrollButtons = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 0 0 24px 0;\n\n div:hover {\n background-color: var(--base-color-light-grey);\n }\n\n > div > div {\n background-color: var(--base-color-light-grey);\n }\n\n svg path {\n fill: var(--base-color-black) !important;\n }\n`;\n\nexport const AriaDescription = styled.span`\n position: absolute;\n left: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n`;\n","/* eslint-disable react/no-danger */\n/* eslint-disable react/jsx-no-useless-fragment */\nimport React, { FunctionComponent } from 'react';\nimport { ContentProps } from '../../../../types/tableTypes';\n\nexport const Content: FunctionComponent<ContentProps> = ({ content }) => {\n return typeof content === 'string' ? <div dangerouslySetInnerHTML={{ __html: content }} /> : <>{content}</>;\n};\n\nexport const scrollTable = (tableRef: React.RefObject<HTMLTableElement>, direction: 'left' | 'right') => {\n if (tableRef.current) {\n const currentScroll = tableRef.current.scrollLeft;\n const scrollAmount = direction === 'left' ? -300 : 300;\n tableRef.current.scrollTo({ left: currentScroll + scrollAmount, behavior: 'smooth' });\n }\n};\n","import React, { FunctionComponent } from 'react';\nimport { TableCell } from '../Table.style';\nimport { CellProps } from '../../../../types/tableTypes';\nimport { Content } from './TableHelpers';\n\nexport const Cell: FunctionComponent<CellProps> = ({ cell, cellIndex, columns, lineColor }) => (\n <TableCell key={cellIndex} columns={columns} role=\"gridcell\" lineColor={lineColor}>\n <Content content={cell} />\n </TableCell>\n);\n","import React, { FunctionComponent } from 'react';\nimport { RowProps } from '../../../../types/tableTypes';\nimport { Cell } from './TableCell';\n\nexport const Row: FunctionComponent<RowProps> = ({ row, rowIndex, columns, lineColor }) => (\n <React.Fragment key={rowIndex}>\n <tr>\n {row.map((cell, index) => (\n <Cell key={index} cell={cell} cellIndex={index} columns={columns} lineColor={lineColor} />\n ))}\n </tr>\n </React.Fragment>\n);\n","import * as React from 'react';\nimport { core, fontFamilies } from '../../../styles/themes';\n\n// Below data retrieved from royaloperahouse.mytalkdesk.com\nconst SCRIPT_SRC = 'https://talkdeskchatsdk.talkdeskapp.com/talkdeskchatsdk.js?t=';\nconst DATA_BIND = '5ea4b1ad-1a17-11ec-af32-06f09e0065e0';\nconst DATA_ORG = '';\nconst DIV_ID = 'tdWebchat';\nconst THEME_ICON = 'https://static.roh.org.uk/logos/crest.svg';\nconst THEME_FONT_BODY = fontFamilies.sansSerifFallback;\nconst THEME_COLOR = core.colors.core;\nconst THEME_COLOR_LIGHT = `${core.colors.core}80`;\nconst THEME_COLOR_BLACK = core.colors.black;\nconst THEME_COLOR_LIGHTGREY = core.colors.lightgrey;\nconst THEME_COLOR_WHITE = core.colors.white;\nconst THEME_COLOR_MIDGREY = core.colors.midgrey;\nconst SCRIPT_CONTENT = `var webchat;\n((window, document, node, props, configs) => {\n if (window.TalkdeskChatSDK) {\n console.error(\"TalkdeskChatSDK already included\");\n return;\n }\n var divContainer = document.createElement(\"div\");\n divContainer.id = node;\n document.body.appendChild(divContainer);\n var currentDate = new Date().getTime();\n var src = \"${SCRIPT_SRC}\" + currentDate;\n var script = document.createElement(\"script\");\n var firstScriptTag = document.getElementsByTagName(\"script\")[0];\n script.type = \"text/javascript\";\n script.charset = \"UTF-8\";\n script.id = \"tdwebchatscript\";\n script.src = src;\n script.async = true;\n firstScriptTag.parentNode.insertBefore(script, firstScriptTag);\n script.onload = () => {\n webchat = TalkdeskChatSDK(node, props);\n webchat.init(configs);\n };\n})(\n window,\n document,\n \"${DIV_ID}\",\n { flowId: \"cd19d348b5fb4a0ab0d3277686f28d1e\", accountId: \"\", region: \"td-us-1\" },\n { enableEmoji: true, enableUserInput: true, styles :{\n \"botIcon\": \"${THEME_ICON}\",\n \"botBackgroundColor\":\"${THEME_COLOR_LIGHTGREY}\",\n \"botTextColor\": \"${THEME_COLOR_BLACK}\",\n \"chatTitle\": \"Royal Opera House\",\n \"chatThemeColor\": \"${THEME_COLOR}\",\n \"chatTitleIcon\": \"${THEME_ICON}\",\n \"customButtonBackgroundColor\": \"${THEME_COLOR}\",\n \"customButtonBorderColor\": \"${THEME_COLOR}\",\n \"customButtonColor\": \"${THEME_COLOR_WHITE}\",\n \"userBackgroundColor\":\"${THEME_COLOR_LIGHTGREY}\",\n \"userTextColor\": \"${THEME_COLOR_BLACK}\",\n \"userBackgroundColor\":\"${THEME_COLOR_MIDGREY}\",\n \"userTextColor\": \"${THEME_COLOR_BLACK}\",\n \"welcomeMessageBackgroundColor\": \"${THEME_COLOR_LIGHT}\",\n \"welcomeMessageContentFontSize\": \"18px\",\n \"welcomeMessageTitleFontFamily\": \"${THEME_FONT_BODY}\",\n \"welcomeMessageContentFontFamily\": \"${THEME_FONT_BODY}\",\n \"customMessageFontFamily\": \"${THEME_FONT_BODY}\",\n \"customMessageNoBubbleFontFamily\": \"${THEME_FONT_BODY}\",\n \"customButtonFontFamily\": \"${THEME_FONT_BODY}\",\n \"customFieldLabelFontFamily\": \"${THEME_FONT_BODY}\",\n \"customFieldInputFontFamily\": \"${THEME_FONT_BODY}\",\n \"customDropdownLabelFontFamily\": \"${THEME_FONT_BODY}\",\n \"customDropdownInputFontFamily\": \"${THEME_FONT_BODY}\",\n \"startChatButtonBackgroundColor\": \"${THEME_COLOR}\",\n \"startChatButtonBorderColor\": \"${THEME_COLOR}\",\n \"startChatButtonTextColor\": \"${THEME_COLOR_WHITE}\",\n \"startChatButtonHoverBackgroundColor\": \"${THEME_COLOR}\",\n \"startChatButtonHoverBorderColor\": \"${THEME_COLOR}\",\n \"startChatButtonHoverTextColor\": \"${THEME_COLOR_WHITE}\",\n \"startChatButtonFontFamily\": \"${THEME_FONT_BODY}\",\n }}\n);`;\n\nconst loadLiveChatScript = (callback: () => void): void => {\n const existingScript = document.getElementById(DIV_ID);\n if (!existingScript) {\n const liveChatDiv = document.createElement('div');\n\n liveChatDiv.id = DIV_ID;\n liveChatDiv.setAttribute('data-bind', DATA_BIND);\n liveChatDiv.setAttribute('data-org', DATA_ORG);\n\n const script = document.createElement('script');\n const scriptBody = document.createTextNode(SCRIPT_CONTENT);\n\n script.appendChild(scriptBody);\n\n document.body.appendChild(liveChatDiv);\n document.body.appendChild(script);\n script.onload = () => {\n if (callback) callback();\n };\n }\n if (existingScript && callback) callback();\n};\n\nconst LiveChat = (): React.ReactElement => {\n // eslint-disable-next-line\n const [loaded, setLoaded] = React.useState(false);\n\n React.useEffect(() => {\n loadLiveChatScript(() => {\n setLoaded(true);\n });\n });\n\n return <span data-loaded={loaded} />;\n};\n\nexport default LiveChat;\n","import styled from 'styled-components';\nimport { Grid } from '../../atoms/Grid';\nimport zIndexes from '../../../styles/zIndexes';\nimport { devices } from '../../../styles/viewports';\n\ninterface IStickyBarGridProps {\n hideBottomBorder: boolean;\n}\n\nexport const StickyBarWrapper = styled.div`\n top: 0;\n position: sticky;\n z-index: ${zIndexes.anchor};\n background-color: var(--base-color-white);\n`;\n\nexport const StickyBarGrid = styled(Grid)<IStickyBarGridProps>`\n ${({ hideBottomBorder }) => !hideBottomBorder && 'border-bottom: 2px solid var(--base-color-lightgrey);'}\n padding: 28px 0 26px;\n\n @media ${devices.mobileAndTablet} {\n padding: 24px 0 28px;\n }\n\n @media ${devices.mobile} {\n border-bottom: none;\n }\n`;\n","import styled from 'styled-components';\nimport { devices } from '../../../styles/viewports';\nimport zIndexes from '../../../styles/zIndexes';\nimport { Grid } from '../../atoms';\n\nexport const InnerModal = styled.div`\n padding: 62px;\n background-color: var(--base-color-white);\n z-index: ${zIndexes.popup};\n position: relative;\n\n @media ${devices.smallMobile}, ${devices.mobile} {\n height: 100vh;\n padding: 62px 0 0;\n }\n`;\n\nexport const CloseButton = styled.button`\n position: absolute;\n top: 0;\n right: 0;\n margin: 15px;\n height: 26px;\n width: 26px;\n padding: 0;\n background-color: transparent;\n border: none;\n cursor: pointer;\n @media ${devices.tablet} {\n margin: 25px;\n }\n @media ${devices.desktop}, ${devices.largeDesktop} {\n margin: 30px;\n }\n`;\n\nexport const ContentWrapper = styled.div``;\n\nexport const Overlay = styled(Grid)`\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n align-content: center;\n background-color: rgba(0, 0, 0, 0.4);\n`;\n","import React, { FunctionComponent } from 'react';\nimport Modal from 'react-modal';\nimport ScrollLock from 'react-scrolllock';\nimport { useMobile } from '../../../helpers/devices';\nimport zIndexes from '../../../styles/zIndexes';\nimport { GridItem, Icon } from '../../atoms';\nimport { CloseButton, ContentWrapper, InnerModal, Overlay } from './ModalWindow.style';\nimport { ModalWindowProps } from '../../../types';\n\nconst MAX_Z_INDEX = 9999999999;\n\nif (Modal.defaultStyles.content) {\n Modal.defaultStyles.content.position = 'static';\n}\n\n/**\n * A ModalWindow component, leveraging React Modal for rendering modals with enhanced accessibility\n * and styling customization. This component is designed to be flexible for various use cases, with\n * support for mobile responsiveness, custom z-indexes, and a close button.\n *\n * # Usage\n * This component is intended to be used in React applications where modal functionality is required.\n * It supports a range of props for customization, including isOpen, setIsOpen, children, appElementId,\n * and accepts all additional props supported by React Modal for further configuration.\n *\n * ## Basic Example\n * ```tsx\n * import React, { useState } from 'react';\n * import ModalWindow from './ModalWindow';\n *\n * const App = () => {\n * const [isOpen, setIsOpen] = useState(false);\n *\n * const toggleModal = () => setIsOpen(!isOpen);\n *\n * return (\n * <>\n * <button onClick={toggleModal}>Open Modal</button>\n * <ModalWindow\n * isOpen={isOpen}\n * setIsOpen={setIsOpen}\n * appElementId=\"root\"\n * >\n * <div>Modal Content Here</div>\n * </ModalWindow>\n * </>\n * );\n * }\n * ```\n *\n * ## Advanced Usage\n * You can further customize the modal by directly passing props supported by React Modal.\n * This component adapts its z-index based on the device type (mobile or desktop) and allows for an\n * accessible close functionality.\n *\n * ```tsx\n * <ModalWindow\n * isOpen={isOpen}\n * setIsOpen={setIsOpen}\n * appElementId=\"root\"\n * shouldCloseOnOverlayClick={true}\n * >\n * <YourCustomComponent />\n * </ModalWindow>\n * ```\n *\n * # Props\n * - `isOpen`: Boolean indicating if the modal is open.\n * - `setIsOpen`: Function to set the open state of the modal.\n * - `children`: Content to be displayed within the modal.\n * - `appElementId`: ID of the app element to assist with accessibility.\n * - All other props are passed directly to the underlying React Modal component, allowing for extensive customization.\n *\n * # Design and Accessibility\n * This component automatically applies a `ScrollLock` when the modal is open to prevent background\n * scrolling and sets appropriate z-index values to ensure the modal is layered correctly on the page.\n * It also configures the modal for accessibility, including support for closing on ESC and setting\n * `aria-modal` to true.\n */\nconst ModalWindow: FunctionComponent<ModalWindowProps> = ({\n isOpen,\n setIsOpen,\n children,\n appElementId,\n ...modalProps\n}): React.ReactElement => {\n const isMobile = useMobile();\n\n const customStyles: Modal.Styles = {\n overlay: {\n zIndex: isMobile ? MAX_Z_INDEX : zIndexes.overlay,\n },\n content: {\n zIndex: isMobile ? MAX_Z_INDEX : zIndexes.popup,\n background: 'none',\n border: 'none',\n },\n };\n\n const appElement =\n typeof window !== 'undefined' && typeof document.getElementById === 'function'\n ? document.getElementById(appElementId || 'app') || undefined\n : undefined;\n\n const closeModalHandler = (): void => {\n setIsOpen(false);\n };\n\n return (\n <Modal\n isOpen={isOpen}\n style={customStyles}\n appElement={appElement}\n shouldCloseOnEsc\n onRequestClose={closeModalHandler}\n aria-modal=\"true\"\n {...modalProps}\n >\n <Overlay>\n <GridItem\n columnStartDesktop={6}\n columnSpanDesktop={6}\n columnStartDevice={3}\n columnSpanDevice={10}\n columnStartSmallDevice={1}\n columnSpanSmallDevice={14}\n >\n <InnerModal>\n <CloseButton onClick={closeModalHandler} aria-label=\"Close modal window\" tabIndex={0}>\n <Icon iconName=\"Close\" />\n </CloseButton>\n <ContentWrapper>{children}</ContentWrapper>\n </InnerModal>\n </GridItem>\n <ScrollLock />\n </Overlay>\n </Modal>\n );\n};\n\nexport default ModalWindow;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createGlobalStyle, GlobalStyleComponent } from 'styled-components';\nimport { devices } from './viewports';\n\nconst GlobalStyles: GlobalStyleComponent<any, any> = createGlobalStyle`\n html {\n --base-color-primary: ${({ theme }) => theme.colors.primary};\n --base-color-core: ${({ theme }) => theme.colors.core};\n --base-color-stream: ${({ theme }) => theme.colors.stream};\n --base-color-cinema: ${({ theme }) => theme.colors.cinema};\n --base-color-white: ${({ theme }) => theme.colors.white};\n --base-color-black: ${({ theme }) => theme.colors.black};\n --base-color-dark-grey: ${({ theme }) => theme.colors.darkgrey};\n --base-color-mid-grey: ${({ theme }) => theme.colors.midgrey};\n --base-color-light-grey: ${({ theme }) => theme.colors.lightgrey};\n --error-color-state: ${({ theme }) => theme.colors.error};\n --medium-color-state: ${({ theme }) => theme.colors.medium};\n --good-color-state: ${({ theme }) => theme.colors.good};\n --base-color-darkgrey: ${({ theme }) => theme.colors.darkgrey};\n --base-color-midgrey: ${({ theme }) => theme.colors.midgrey};\n --base-color-lightgrey: ${({ theme }) => theme.colors.lightgrey};\n --base-color-transparent: transparent;\n --base-color-errorstate: ${({ theme }) => theme.colors.error};\n --base-color-mediumstate: ${({ theme }) => theme.colors.medium};\n --base-color-goodstate: ${({ theme }) => theme.colors.good};\n --base-color-progress: ${({ theme }) => theme.colors.progress};\n --base-color-navigation: ${({ theme }) => theme.colors.navigation};\n --base-color-lapislazuli: ${({ theme }) => theme.colors.lapisLazuli};\n --base-color-lemonchiffon: ${({ theme }) => theme.colors.lemonChiffon};\n\n --button-height: ${({ theme }) => theme.spacing[12]};\n --button-line-height: ${({ theme }) => theme.fonts.desktop.lineHeights.buttons};\n --button-padding-x: ${({ theme }) => theme.buttons.paddingX};\n --button-padding-y: ${({ theme }) => theme.buttons.paddingY};\n --button-padding-y-icon: ${({ theme }) => theme.buttons.paddingYIcon};\n --button-icon-margin: ${({ theme }) => theme.buttons.iconMargin};\n --button-icon-width: ${({ theme }) => theme.buttons.iconWidth};\n --button-icon-height: ${({ theme }) => theme.buttons.iconHeight};\n --button-font-size: ${({ theme }) => theme.fonts.desktop.sizes.buttons};\n --button-font-weight: ${({ theme }) => theme.fonts.desktop.weights.buttons};\n\n --font-size-header-1: ${({ theme }) => theme.fonts.desktop.sizes.headers[1]};\n --font-weight-header-1: ${({ theme }) => theme.fonts.desktop.weights.headers[1]};\n --letter-spacing-header-1: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[1]};\n --line-height-header-1: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[1]};\n --margin-header-1: ${({ theme }) => theme.fonts.desktop.margins.headers[1]};\n\n --font-size-header-2: ${({ theme }) => theme.fonts.desktop.sizes.headers[2]};\n --font-weight-header-2: ${({ theme }) => theme.fonts.desktop.weights.headers[2]};\n --letter-spacing-header-2: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[2]};\n --line-height-header-2: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[2]};\n --margin-header-2: ${({ theme }) => theme.fonts.desktop.margins.headers[2]};\n\n --font-size-header-3: ${({ theme }) => theme.fonts.desktop.sizes.headers[3]};\n --font-weight-header-3: ${({ theme }) => theme.fonts.desktop.weights.headers[3]};\n --letter-spacing-header-3: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[3]};\n --line-height-header-3: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[3]};\n --margin-header-3: ${({ theme }) => theme.fonts.desktop.margins.headers[3]};\n\n --font-size-header-4: ${({ theme }) => theme.fonts.desktop.sizes.headers[4]};\n --font-weight-header-4: ${({ theme }) => theme.fonts.desktop.weights.headers[4]};\n --letter-spacing-header-4: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[4]};\n --line-height-header-4: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[4]};\n --margin-header-4: ${({ theme }) => theme.fonts.desktop.margins.headers[4]};\n\n --font-size-header-5: ${({ theme }) => theme.fonts.desktop.sizes.headers[5]};\n --font-weight-header-5: ${({ theme }) => theme.fonts.desktop.weights.headers[5]};\n --letter-spacing-header-5: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[5]};\n --line-height-header-5: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[5]};\n --margin-header-5: ${({ theme }) => theme.fonts.desktop.margins.headers[5]};\n\n --font-size-header-6: ${({ theme }) => theme.fonts.desktop.sizes.headers[6]};\n --font-weight-header-6: ${({ theme }) => theme.fonts.desktop.weights.headers[6]};\n --letter-spacing-header-6: ${({ theme }) => theme.fonts.desktop.letterSpacing.headers[6]};\n --line-height-header-6: ${({ theme }) => theme.fonts.desktop.lineHeights.headers[6]};\n --margin-header-6: ${({ theme }) => theme.fonts.desktop.margins.headers[6]};\n\n --font-size-altHeader-3: ${({ theme }) => theme.fonts.desktop.sizes.altHeaders[3]};\n --font-weight-altHeader-3: ${({ theme }) => theme.fonts.desktop.weights.altHeaders[3]};\n --letter-spacing-altHeader-3: ${({ theme }) => theme.fonts.desktop.letterSpacing.altHeaders[3]};\n --line-height-altHeader-3: ${({ theme }) => theme.fonts.desktop.lineHeights.altHeaders[3]};\n\n --font-size-altHeader-4: ${({ theme }) => theme.fonts.desktop.sizes.altHeaders[4]};\n --font-weight-altHeader-4: ${({ theme }) => theme.fonts.desktop.weights.altHeaders[4]};\n --letter-spacing-altHeader-4: ${({ theme }) => theme.fonts.desktop.letterSpacing.altHeaders[4]};\n --line-height-altHeader-4: ${({ theme }) => theme.fonts.desktop.lineHeights.altHeaders[4]};\n\n --font-size-altHeader-5: ${({ theme }) => theme.fonts.desktop.sizes.altHeaders[5]};\n --font-weight-altHeader-5: ${({ theme }) => theme.fonts.desktop.weights.altHeaders[5]};\n --letter-spacing-altHeader-5: ${({ theme }) => theme.fonts.desktop.letterSpacing.altHeaders[5]};\n --line-height-altHeader-5: ${({ theme }) => theme.fonts.desktop.lineHeights.altHeaders[5]};\n\n --font-size-altHeader-6: ${({ theme }) => theme.fonts.desktop.sizes.altHeaders[6]};\n --font-weight-altHeader-6: ${({ theme }) => theme.fonts.desktop.weights.altHeaders[6]};\n --letter-spacing-altHeader-6: ${({ theme }) => theme.fonts.desktop.letterSpacing.altHeaders[6]};\n --line-height-altHeader-6: ${({ theme }) => theme.fonts.desktop.lineHeights.altHeaders[6]};\n\n --font-size-overline-1: ${({ theme }) => theme.fonts.desktop.sizes.overline[1]};\n --font-weight-overline-1: ${({ theme }) => theme.fonts.desktop.weights.overline[1]};\n --letter-spacing-overline-1: ${({ theme }) => theme.fonts.desktop.letterSpacing.overline[1]};\n --line-height-overline-1: ${({ theme }) => theme.fonts.desktop.lineHeights.overline[1]};\n\n --font-size-overline-2: ${({ theme }) => theme.fonts.desktop.sizes.overline[2]};\n --font-weight-overline-2: ${({ theme }) => theme.fonts.desktop.weights.overline[2]};\n --letter-spacing-overline-2: ${({ theme }) => theme.fonts.desktop.letterSpacing.overline[2]};\n --line-height-overline-2: ${({ theme }) => theme.fonts.desktop.lineHeights.overline[2]};\n\n --font-size-overline-3: ${({ theme }) => theme.fonts.desktop.sizes.overline[3]};\n --font-weight-overline-3: ${({ theme }) => theme.fonts.desktop.weights.overline[3]};\n --letter-spacing-overline-3: ${({ theme }) => theme.fonts.desktop.letterSpacing.overline[3]};\n --line-height-overline-3: ${({ theme }) => theme.fonts.desktop.lineHeights.overline[3]}; \n\n --font-size-overline-4: ${({ theme }) => theme.fonts.desktop.sizes.overline[4]};\n --font-weight-overline-4: ${({ theme }) => theme.fonts.desktop.weights.overline[4]};\n --letter-spacing-overline-4: ${({ theme }) => theme.fonts.desktop.letterSpacing.overline[4]};\n --line-height-overline-4: ${({ theme }) => theme.fonts.desktop.lineHeights.overline[4]};\n\n --font-size-body-1: ${({ theme }) => theme.fonts.desktop.sizes.body[1]};\n --font-weight-body-1: ${({ theme }) => theme.fonts.desktop.weights.body[1]};\n --letter-spacing-body-1: ${({ theme }) => theme.fonts.desktop.letterSpacing.body[1]};\n --line-height-body-1: ${({ theme }) => theme.fonts.desktop.lineHeights.body[1]};\n\n --font-size-body-2: ${({ theme }) => theme.fonts.desktop.sizes.body[2]};\n --font-weight-body-2: ${({ theme }) => theme.fonts.desktop.weights.body[2]};\n --letter-spacing-body-2: ${({ theme }) => theme.fonts.desktop.letterSpacing.body[2]};\n --line-height-body-2: ${({ theme }) => theme.fonts.desktop.lineHeights.body[2]};\n\n --font-size-body-3: ${({ theme }) => theme.fonts.desktop.sizes.body[3]};\n --font-weight-body-3: ${({ theme }) => theme.fonts.desktop.weights.body[3]};\n --letter-spacing-body-3: ${({ theme }) => theme.fonts.desktop.letterSpacing.body[3]};\n --line-height-body-3: ${({ theme }) => theme.fonts.desktop.lineHeights.body[3]};\n\n --font-size-subtitle-1: ${({ theme }) => theme.fonts.desktop.sizes.subtitles[1]};\n --font-weight-subtitle-1: ${({ theme }) => theme.fonts.desktop.weights.subtitles[1]};\n --letter-spacing-subtitle-1: ${({ theme }) => theme.fonts.desktop.letterSpacing.subtitles[1]};\n --line-height-subtitle-1: ${({ theme }) => theme.fonts.desktop.lineHeights.subtitles[1]};\n \n --font-size-subtitle-2: ${({ theme }) => theme.fonts.desktop.sizes.subtitles[2]};\n --font-weight-subtitle-2: ${({ theme }) => theme.fonts.desktop.weights.subtitles[2]};\n --letter-spacing-subtitle-2: ${({ theme }) => theme.fonts.desktop.letterSpacing.subtitles[2]};\n --line-height-subtitle-2: ${({ theme }) => theme.fonts.desktop.lineHeights.subtitles[2]};\n\n --font-size-title-description: ${({ theme }) => theme.fonts.desktop.sizes.titleDescription};\n --line-height-title-description: ${({ theme }) => theme.fonts.desktop.lineHeights.titleDescription};\n --line-height-listing: ${({ theme }) => theme.fonts.desktop.lineHeights.listing};\n --font-size-individual-listing-name: ${({ theme }) => theme.fonts.desktop.sizes.listing};\n --line-height-individual-listing-name: ${({ theme }) => theme.fonts.desktop.lineHeights.peopleListing};\n --line-height-people-listing-gap: ${({ theme }) => theme.spacing[6]};\n\n --font-family-header: ${({ theme }) => theme.fonts.desktop.families.headers};\n --font-family-altHeader: ${({ theme }) => theme.fonts.desktop.families.altHeaders};\n --font-family-body: ${({ theme }) => theme.fonts.desktop.families.body};\n --font-family-body-italics: ${({ theme }) => theme.fonts.desktop.families.bodyItalics};\n --font-family-buttons: ${({ theme }) => theme.fonts.desktop.families.buttons};\n --font-family-overline: ${({ theme }) => theme.fonts.desktop.families.overline};\n --font-family-subtitle: ${({ theme }) => theme.fonts.desktop.families.subtitles};\n --font-family-people-listing-role: ${({ theme }) => theme.fonts.desktop.families.peopleListingRole};\n --font-family-people-listing-name: ${({ theme }) => theme.fonts.desktop.families.body};\n\n --font-feature-settings-header: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.headers};\n --font-feature-settings-altHeader: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.altHeaders};\n --font-feature-settings-overline: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.overline};\n --font-feature-settings-subtitle: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.subtitles};\n --font-feature-settings-body: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.body};\n --font-feature-settings-navigation: ${({ theme }) => theme.fonts.desktop.fontFeatureSettings.navigation};\n\n --text-transform-header: ${({ theme }) => theme.fonts.desktop.transforms.headers};\n --text-transform-altHeader: ${({ theme }) => theme.fonts.desktop.transforms.altHeaders};\n --text-transform-body: ${({ theme }) => theme.fonts.desktop.transforms.body};\n --text-transform-overline: ${({ theme }) => theme.fonts.desktop.transforms.overline};\n --text-transform-subtitle: ${({ theme }) => theme.fonts.desktop.transforms.subtitles};\n\n --word-break-header: ${({ theme }) => theme.fonts.desktop.wordBreak.headers};\n --word-break-altHeader: ${({ theme }) => theme.fonts.desktop.wordBreak.altHeaders};\n --word-break-body: ${({ theme }) => theme.fonts.desktop.wordBreak.body};\n --word-break-overline: ${({ theme }) => theme.fonts.desktop.wordBreak.overline};\n --word-break-subtitle: ${({ theme }) => theme.fonts.desktop.wordBreak.subtitles};\n\n --font-family-navigation: ${({ theme }) => theme.fonts.desktop.families.navigation};\n --font-size-navigation: ${({ theme }) => theme.fonts.desktop.sizes.navigation};\n --font-weight-navigation: ${({ theme }) => theme.fonts.desktop.weights.navigation};\n --line-height-navigation: ${({ theme }) => theme.fonts.desktop.lineHeights.navigation};\n --text-transform-navigation: ${({ theme }) => theme.fonts.desktop.transforms.navigation};\n --letter-spacing-navigation: ${({ theme }) => theme.fonts.desktop.letterSpacing.navigation};\n\n --navigation-small-gap: ${({ theme }) => theme.spacing[4]};\n --navigation-middle-gap: ${({ theme }) => theme.spacing[5]};\n --navigation-large-gap: ${({ theme }) => theme.spacing[6]};\n --navigation-xlarge-gap: ${({ theme }) => theme.spacing[9]};\n --navigation-large-margin: ${({ theme }) => theme.spacing[15]};\n\n --rotator-button-width: ${({ theme }) => theme.spacing[15]};\n --rotator-button-icon-width: ${({ theme }) => theme.spacing[9]};\n\n --font-size-search: ${({ theme }) => theme.fonts.desktop.sizes.search};\n --font-family-search: ${({ theme }) => theme.fonts.desktop.families.search};\n\n --grid-margin: ${({ theme }) => theme.grid.desktop.margin};\n --grid-outer-margin: ${({ theme }) => theme.grid.desktop.outerMargin};\n --grid-template-columns: calc(${({ theme }) => theme.grid.desktop.outerMargin} - ${({ theme }) =>\n theme.grid.desktop.gap}) calc(${({ theme }) => theme.grid.desktop.margin} - ${({ theme }) =>\n theme.grid.desktop.outerMargin} - ${({ theme }) => theme.grid.desktop.gap}) repeat(12, minmax(0,1fr)) calc(${({\n theme,\n }) => theme.grid.desktop.margin} - ${({ theme }) => theme.grid.desktop.outerMargin} - ${({ theme }) =>\n theme.grid.desktop.gap}) calc(${({ theme }) => theme.grid.desktop.outerMargin} - ${({ theme }) =>\n theme.grid.desktop.gap});\n --grid-column-gap: ${({ theme }) => theme.grid.desktop.gap};\n --grid-margin: 0;\n\n --footer-height: ${({ theme }) => theme.footer.desktop.height};\n --footer-padding-top: ${({ theme }) => theme.footer.desktop.paddingTop};\n --footer-padding-bottom: ${({ theme }) => theme.footer.desktop.paddingBottom};\n --footer-items-gap: ${({ theme }) => theme.footer.desktop.itemsGap};\n --footer-media-gap: ${({ theme }) => theme.footer.desktop.mediaGap};\n --footer-media-icon-width: ${({ theme }) => theme.footer.desktop.mediaIconWidth};\n --footer-media-icon-height: ${({ theme }) => theme.footer.desktop.mediaIconHeight};\n --footer-vertical-spacing-lg: ${({ theme }) => theme.footer.desktop.verticalSpacingLarge};\n --footer-vertical-spacing-sm: ${({ theme }) => theme.footer.desktop.verticalSpacingSmall};\n\n --text-link-underline-offset: ${({ theme }) => theme.spacing[2]};\n\n --cards-spacing-stack: ${({ theme }) => theme.spacing[10]};\n\n --editorial-subtitle-margin-bottom: ${({ theme }) => theme.spacing[4]};\n --editorial-margin-between: ${({ theme }) => theme.spacing[6]};\n --editorial-spacing-hover: ${({ theme }) => theme.spacing[1]};\n --anchor-tabs-height: 70px;\n \n --harmonic-font-family-sans: 'Grey LL Bold', 'Roboto', sans-serif;\n --harmonic-font-family-serif: 'Victor Serif Medium', 'Inria Serif Regular', serif;\n\n @media ${devices.mobile} {\n\n --font-size-header-1: ${({ theme }) => theme.fonts.mobile.sizes.headers[1]};\n --font-weight-header-1: ${({ theme }) => theme.fonts.mobile.weights.headers[1]};\n --letter-spacing-header-1: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[1]};\n --line-height-header-1: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[1]};\n \n --font-size-header-2: ${({ theme }) => theme.fonts.mobile.sizes.headers[2]};\n --font-weight-header-2: ${({ theme }) => theme.fonts.mobile.weights.headers[2]};\n --letter-spacing-header-2: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[2]};\n --line-height-header-2: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[2]};\n \n --font-size-header-3: ${({ theme }) => theme.fonts.mobile.sizes.headers[3]};\n --font-weight-header-3: ${({ theme }) => theme.fonts.mobile.weights.headers[3]};\n --letter-spacing-header-3: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[3]};\n --line-height-header-3: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[3]};\n \n --font-size-header-4: ${({ theme }) => theme.fonts.mobile.sizes.headers[4]};\n --font-weight-header-4: ${({ theme }) => theme.fonts.mobile.weights.headers[4]};\n --letter-spacing-header-4: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[4]};\n --line-height-header-4: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[4]};\n \n --font-size-header-5: ${({ theme }) => theme.fonts.mobile.sizes.headers[5]};\n --font-weight-header-5: ${({ theme }) => theme.fonts.mobile.weights.headers[5]};\n --letter-spacing-header-5: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[5]};\n --line-height-header-5: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[5]};\n \n --font-size-header-6: ${({ theme }) => theme.fonts.mobile.sizes.headers[6]};\n --font-weight-header-6: ${({ theme }) => theme.fonts.mobile.weights.headers[6]};\n --letter-spacing-header-6: ${({ theme }) => theme.fonts.mobile.letterSpacing.headers[6]};\n --line-height-header-6: ${({ theme }) => theme.fonts.mobile.lineHeights.headers[6]};\n \n --font-size-altHeader-3: ${({ theme }) => theme.fonts.mobile.sizes.altHeaders[3]};\n --font-weight-altHeader-3: ${({ theme }) => theme.fonts.mobile.weights.altHeaders[3]};\n --letter-spacing-altHeader-3: ${({ theme }) => theme.fonts.mobile.letterSpacing.altHeaders[3]};\n --line-height-altHeader-3: ${({ theme }) => theme.fonts.mobile.lineHeights.altHeaders[3]};\n \n --font-size-altHeader-4: ${({ theme }) => theme.fonts.mobile.sizes.altHeaders[4]};\n --font-weight-altHeader-4: ${({ theme }) => theme.fonts.mobile.weights.altHeaders[4]};\n --letter-spacing-altHeader-4: ${({ theme }) => theme.fonts.mobile.letterSpacing.altHeaders[4]};\n --line-height-altHeader-4: ${({ theme }) => theme.fonts.mobile.lineHeights.altHeaders[4]};\n \n --font-size-altHeader-5: ${({ theme }) => theme.fonts.mobile.sizes.altHeaders[5]};\n --font-weight-altHeader-5: ${({ theme }) => theme.fonts.mobile.weights.altHeaders[5]};\n --letter-spacing-altHeader-5: ${({ theme }) => theme.fonts.mobile.letterSpacing.altHeaders[5]};\n --line-height-altHeader-5: ${({ theme }) => theme.fonts.mobile.lineHeights.altHeaders[5]};\n \n --font-size-altHeader-6: ${({ theme }) => theme.fonts.mobile.sizes.altHeaders[6]};\n --font-weight-altHeader-6: ${({ theme }) => theme.fonts.mobile.weights.altHeaders[6]};\n --letter-spacing-altHeader-6: ${({ theme }) => theme.fonts.mobile.letterSpacing.altHeaders[6]};\n --line-height-altHeader-6: ${({ theme }) => theme.fonts.mobile.lineHeights.altHeaders[6]};\n \n --font-size-overline-1: ${({ theme }) => theme.fonts.mobile.sizes.overline[1]};\n --font-weight-overline-1: ${({ theme }) => theme.fonts.mobile.weights.overline[1]};\n --letter-spacing-overline-1: ${({ theme }) => theme.fonts.mobile.letterSpacing.overline[1]};\n --line-height-overline-1: ${({ theme }) => theme.fonts.mobile.lineHeights.overline[1]};\n \n --font-size-overline-2: ${({ theme }) => theme.fonts.mobile.sizes.overline[2]};\n --font-weight-overline-2: ${({ theme }) => theme.fonts.mobile.weights.overline[2]};\n --letter-spacing-overline-2: ${({ theme }) => theme.fonts.mobile.letterSpacing.overline[2]};\n --line-height-overline-2: ${({ theme }) => theme.fonts.mobile.lineHeights.overline[2]};\n \n --font-size-body-1: ${({ theme }) => theme.fonts.mobile.sizes.body[1]};\n --font-weight-body-1: ${({ theme }) => theme.fonts.mobile.weights.body[1]};\n --letter-spacing-body-1: ${({ theme }) => theme.fonts.mobile.letterSpacing.body[1]};\n --line-height-body-1: ${({ theme }) => theme.fonts.mobile.lineHeights.body[1]};\n \n --font-size-body-2: ${({ theme }) => theme.fonts.mobile.sizes.body[2]};\n --font-weight-body-2: ${({ theme }) => theme.fonts.mobile.weights.body[2]};\n --letter-spacing-body-2: ${({ theme }) => theme.fonts.mobile.letterSpacing.body[2]};\n --line-height-body-2: ${({ theme }) => theme.fonts.mobile.lineHeights.body[2]};\n \n --font-size-body-3: ${({ theme }) => theme.fonts.mobile.sizes.body[3]};\n --font-weight-body-3: ${({ theme }) => theme.fonts.mobile.weights.body[3]};\n --letter-spacing-body-3: ${({ theme }) => theme.fonts.mobile.letterSpacing.body[3]};\n --line-height-body-3: ${({ theme }) => theme.fonts.mobile.lineHeights.body[3]};\n \n --font-size-subtitle-1: ${({ theme }) => theme.fonts.mobile.sizes.subtitles[1]};\n --font-weight-subtitle-1: ${({ theme }) => theme.fonts.mobile.weights.subtitles[1]};\n --letter-spacing-subtitle-1: ${({ theme }) => theme.fonts.mobile.letterSpacing.subtitles[1]};\n --line-height-subtitle-1: ${({ theme }) => theme.fonts.mobile.lineHeights.subtitles[1]};\n \n --font-size-subtitle-2: ${({ theme }) => theme.fonts.mobile.sizes.subtitles[2]};\n --font-weight-subtitle-2: ${({ theme }) => theme.fonts.mobile.weights.subtitles[2]};\n --letter-spacing-subtitle-2: ${({ theme }) => theme.fonts.mobile.letterSpacing.subtitles[2]};\n --line-height-subtitle-2: ${({ theme }) => theme.fonts.mobile.lineHeights.subtitles[2]};\n\n --font-size-title-description: ${({ theme }) => theme.fonts.mobile.sizes.titleDescription};\n --line-height-title-description: ${({ theme }) => theme.fonts.mobile.lineHeights.titleDescription};\n --line-height-people-listing-gap: ${({ theme }) => theme.spacing[4]};\n\n --font-size-search: ${({ theme }) => theme.fonts.mobile.sizes.search};\n --font-family-search: ${({ theme }) => theme.fonts.mobile.families.search};\n\n --font-family-header: ${({ theme }) => theme.fonts.mobile.families.headers};\n --font-family-altHeader: ${({ theme }) => theme.fonts.mobile.families.altHeaders};\n --font-family-body: ${({ theme }) => theme.fonts.mobile.families.body};\n --font-family-body-italics: ${({ theme }) => theme.fonts.mobile.families.bodyItalics};\n --font-family-buttons: ${({ theme }) => theme.fonts.mobile.families.buttons};\n --font-family-overline: ${({ theme }) => theme.fonts.mobile.families.overline};\n --font-family-subtitle: ${({ theme }) => theme.fonts.mobile.families.subtitles};\n --font-family-people-listing-role: ${({ theme }) => theme.fonts.mobile.families.peopleListingRole};\n --font-family-people-listing-name: ${({ theme }) => theme.fonts.mobile.families.body};\n \n --font-feature-settings-header: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.headers};\n --font-feature-settings-altHeader: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.altHeaders};\n --font-feature-settings-overline: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.overline};\n --font-feature-settings-subtitle: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.subtitles};\n --font-feature-settings-body: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.body};\n --font-feature-settings-navigation: ${({ theme }) => theme.fonts.mobile.fontFeatureSettings.navigation};\n \n --text-transform-header: ${({ theme }) => theme.fonts.mobile.transforms.headers};\n --text-transform-altHeader: ${({ theme }) => theme.fonts.mobile.transforms.altHeaders};\n --text-transform-body: ${({ theme }) => theme.fonts.mobile.transforms.body};\n --text-transform-overline: ${({ theme }) => theme.fonts.mobile.transforms.overline};\n --text-transform-subtitle: ${({ theme }) => theme.fonts.mobile.transforms.subtitles};\n \n --word-break-header: ${({ theme }) => theme.fonts.mobile.wordBreak.headers};\n --word-break-altHeader: ${({ theme }) => theme.fonts.mobile.wordBreak.altHeaders};\n --word-break-body: ${({ theme }) => theme.fonts.mobile.wordBreak.body};\n --word-break-overline: ${({ theme }) => theme.fonts.mobile.wordBreak.overline};\n --word-break-subtitle: ${({ theme }) => theme.fonts.mobile.wordBreak.subtitles};\n \n --grid-template-columns: calc(${({ theme }) => theme.grid.mobile.margin} - ${({ theme }) =>\n theme.grid.mobile.gap}) repeat(12, minmax(0, 1fr)) calc(${({ theme }) => theme.grid.mobile.margin} - ${({\n theme,\n }) => theme.grid.mobile.gap});\n --grid-column-gap: ${({ theme }) => theme.grid.mobile.gap};\n --grid-margin: ${({ theme }) => theme.grid.mobile.margin};\n\n --footer-height: ${({ theme }) => theme.footer.mobile.height};\n --footer-padding-top: ${({ theme }) => theme.footer.mobile.paddingTop};\n --footer-padding-bottom: ${({ theme }) => theme.footer.mobile.paddingBottom};\n --footer-items-gap: ${({ theme }) => theme.footer.mobile.itemsGap};\n --footer-media-gap: ${({ theme }) => theme.footer.mobile.mediaGap};\n --footer-media-icon-width: ${({ theme }) => theme.footer.mobile.mediaIconWidth};\n --footer-media-icon-height: ${({ theme }) => theme.footer.mobile.mediaIconHeight};\n --footer-vertical-spacing-lg: ${({ theme }) => theme.footer.mobile.verticalSpacingLarge};\n --footer-vertical-spacing-sm: ${({ theme }) => theme.footer.mobile.verticalSpacingSmall};\n\n --anchor-tabs-height: 60px;\n --rotator-button-width: ${({ theme }) => theme.spacing[10]};\n --rotator-button-icon-width: ${({ theme }) => theme.spacing[6]};\n }\n\n @media ${devices.tablet} {\n --grid-template-columns: calc(${({ theme }) => theme.grid.tablet.margin} - ${({ theme }) =>\n theme.grid.tablet.gap}) repeat(12, minmax(0, 1fr)) calc(${({ theme }) => theme.grid.tablet.margin} - ${({\n theme,\n }) => theme.grid.tablet.gap});\n --grid-column-gap: ${({ theme }) => theme.grid.tablet.gap};\n --grid-margin: ${({ theme }) => theme.grid.tablet.margin};\n --rotator-button-width: ${({ theme }) => theme.spacing[10]};\n --rotator-button-icon-width: ${({ theme }) => theme.spacing[6]};\n\n --font-size-header-6: ${({ theme }) => theme.fonts.tablet.sizes.headers[6]};\n\n --font-size-altHeader-4: ${({ theme }) => theme.fonts.tablet.sizes.altHeaders[4]};\n\n --font-size-body-1: ${({ theme }) => theme.fonts.tablet.sizes.body[1]};\n }\n\n @media ${devices.desktop} {\n \n }\n\n @media ${devices.largeDesktop} {\n \n }\n }\n`;\n\nexport default GlobalStyles;\n","import React, { FunctionComponent } from 'react';\nimport { AccordionsContainer } from './Accordions.style';\nimport { IAccordionsProps, IAccordionProps } from '../../../types/types';\nimport Accordion from '../Accordion';\n\nconst Accordions: FunctionComponent<IAccordionsProps> = ({ items = [] }) => {\n const isLastAccordion = (index: number) => items.length - 1 === index;\n\n return (\n <AccordionsContainer>\n {items.map((accordion: IAccordionProps, index: number) => {\n return (\n <Accordion\n key={`${accordion.title}-${index}`}\n title={accordion.title}\n showLine={isLastAccordion(index)}\n visibleStandfirst={accordion.visibleStandfirst}\n contentType={accordion.contentType}\n displayLevel={accordion.displayLevel}\n semanticLevel={accordion.semanticLevel}\n >\n {accordion.children}\n </Accordion>\n );\n })}\n </AccordionsContainer>\n );\n};\n\nexport default Accordions;\n","/* eslint-disable no-unsafe-optional-chaining */\nimport React, { FunctionComponent, useEffect, useRef, useState, MouseEvent } from 'react';\nimport { AnchorBarTab, IAnchorBarAbsolutePositionParams, IAnchorBarProps } from '../../../types/navigation';\nimport { GridItem } from '../../atoms/Grid';\nimport { Icon } from '../../atoms/Icons';\nimport TabLink from '../../atoms/TabLink';\nimport {\n AnchorTabbarWrapper,\n TabsGrid,\n TabsList,\n TabsWrapper,\n ArrowsContainer,\n ArrowWrapper,\n LIST_ITEM_GAP,\n} from './AnchorTabBar.style';\n\nconst AnchorTabBar: FunctionComponent<IAnchorBarProps> = ({\n tabs,\n onTabClick,\n activeTab,\n absolutePositionParams,\n bottomBorder = false,\n}) => {\n const tabListRef = useRef<HTMLUListElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [selectedItem, setSelectedItem] = useState<string>(activeTab || '');\n const [tabsOverflow, setTabsOverflow] = useState<boolean>(false);\n const [canScrollToLeft, setCanScrollToLeft] = useState<boolean>(false);\n const [canScrollToRight, setCanScrollToRight] = useState<boolean>(tabsOverflow);\n let timer: NodeJS.Timeout | null = null;\n\n const hasTwoArrows = canScrollToRight && canScrollToLeft;\n const isSelectedItem = (id: string) => id === selectedItem;\n const onClicktab = (e: MouseEvent, id: string) => {\n if (onTabClick) {\n onTabClick(e, id);\n }\n setSelectedItem(id);\n };\n\n const getScrollWidth = () => {\n let width = 0;\n const selectedItemIndex = tabs.findIndex((el) => el.id === selectedItem);\n const tabLinks = document.getElementsByClassName('anchor-tab-bar-tablink');\n for (let i = 0; i < selectedItemIndex; ++i) {\n width += tabLinks[i].scrollWidth + LIST_ITEM_GAP;\n }\n return width;\n };\n\n // eslint-disable-next-line default-param-last\n const changeWrapperVisibility = (showWrapper: boolean = false, topOffset?: number) => {\n const wrapperEl = wrapperRef.current as HTMLDivElement;\n wrapperEl.style.position = 'absolute';\n wrapperEl.style.visibility = showWrapper && topOffset !== undefined ? 'visible' : 'hidden';\n if (showWrapper && topOffset !== undefined) wrapperEl.style.top = `${topOffset}px`;\n };\n\n const handleScrollForAbsolutePosition = () => {\n const { navigationHeight = 0, topOffset = 0 } = absolutePositionParams as IAnchorBarAbsolutePositionParams;\n if (wrapperRef.current && window.pageYOffset > topOffset + navigationHeight) {\n changeWrapperVisibility();\n } else if (wrapperRef.current && window.pageYOffset < topOffset + navigationHeight) {\n changeWrapperVisibility(true, topOffset);\n }\n\n if (timer !== null) clearTimeout(timer);\n\n timer = setTimeout(() => {\n if (window.pageYOffset > topOffset + navigationHeight && wrapperRef.current) {\n changeWrapperVisibility(true, window.pageYOffset - navigationHeight);\n }\n }, 300);\n };\n\n // We use this behavior only on iOS devices because there is a known issue that\n // sticky elements lose their stickiness when a keyboard appears on the screen\n useEffect(() => {\n if (absolutePositionParams) {\n changeWrapperVisibility(true, absolutePositionParams.topOffset);\n document.addEventListener('scroll', handleScrollForAbsolutePosition);\n\n return () => {\n document.removeEventListener('scroll', handleScrollForAbsolutePosition);\n };\n }\n return undefined;\n }, []);\n\n useEffect(() => {\n setTimeout(() => {\n if (tabListRef.current) tabListRef.current.scrollLeft += getScrollWidth();\n }, 500);\n }, []);\n\n useEffect(() => {\n const tabsIsOverflowed = (tabListRef.current?.scrollWidth || 0) > (tabListRef.current?.clientWidth || 0);\n setTabsOverflow(tabsIsOverflowed);\n setCanScrollToRight(tabsIsOverflowed);\n }, [tabListRef]);\n\n useEffect(() => {\n const scrollTriggerCheck = () => {\n const elementGap = 100;\n const reachedItem = tabs?.find((item: AnchorBarTab) => {\n const targetSectionElement = document.getElementById(item.id);\n if (!targetSectionElement) return false;\n const topDiff = targetSectionElement?.getBoundingClientRect().top - elementGap;\n return selectedItem !== item.id && topDiff > 0 && topDiff < elementGap;\n });\n if (window.scrollY === 0) {\n setSelectedItem(onTabClick ? selectedItem : '');\n } else if (reachedItem) {\n const { scrollLeft = 0, clientWidth = 0 } = tabListRef?.current || {};\n const tabLinkElement = document.getElementById(`tablink-${reachedItem.id}`) || {\n offsetLeft: 0,\n offsetWidth: 0,\n };\n const { offsetLeft, offsetWidth } = tabLinkElement;\n const isInView = offsetLeft >= scrollLeft && offsetLeft + offsetWidth < scrollLeft + clientWidth;\n if (!isInView && tabListRef?.current) {\n tabListRef.current.scrollLeft = offsetLeft;\n }\n setSelectedItem(reachedItem.id);\n }\n };\n document.addEventListener('scroll', scrollTriggerCheck);\n\n return () => document.removeEventListener('scroll', scrollTriggerCheck);\n }, [tabs, selectedItem, tabListRef]);\n\n let tabsColumnStart;\n if (tabsOverflow) {\n tabsColumnStart = canScrollToLeft ? 1 : 2;\n } else {\n tabsColumnStart = 3;\n }\n let tabsColumnSpan;\n if (tabsOverflow) {\n tabsColumnSpan = canScrollToLeft ? 15 : 14;\n } else {\n tabsColumnSpan = 12;\n }\n\n const scrollToRight = (): void => {\n if (tabListRef.current) {\n const scroll = tabListRef.current.scrollLeft;\n const newScroll = Math.min(tabListRef.current.clientWidth, tabListRef.current.scrollWidth - scroll);\n if (scroll - newScroll < LIST_ITEM_GAP) {\n tabListRef.current.scrollLeft += newScroll + LIST_ITEM_GAP;\n return;\n }\n tabListRef.current.scrollLeft += newScroll;\n }\n };\n\n const scrollToLeft = () => {\n if (tabListRef.current) {\n const scroll = tabListRef.current.scrollLeft;\n const newScroll = Math.max(0, scroll - tabListRef.current.clientWidth);\n if (newScroll < LIST_ITEM_GAP) {\n tabListRef.current.scrollLeft = newScroll - LIST_ITEM_GAP;\n return;\n }\n tabListRef.current.scrollLeft = newScroll;\n }\n };\n\n const onTabsScroll = () => {\n const { scrollLeft = 0, clientWidth = 0, scrollWidth = 0 } = tabListRef?.current || {};\n setCanScrollToLeft(scrollLeft > LIST_ITEM_GAP);\n setCanScrollToRight(scrollLeft + clientWidth + LIST_ITEM_GAP < scrollWidth);\n };\n\n return (\n <AnchorTabbarWrapper bottomBorder={bottomBorder} ref={wrapperRef} id=\"AnchorTabbarWrapper\">\n <TabsGrid>\n <GridItem\n columnStartDesktop={tabsColumnStart}\n columnSpanDesktop={tabsColumnSpan}\n columnStartDevice={2}\n columnSpanDevice={12}\n >\n <TabsWrapper data-testid=\"anchor-tabs\">\n <TabsList hasTwoArrows={hasTwoArrows} ref={tabListRef} tabsOverflow={tabsOverflow} onScroll={onTabsScroll}>\n {tabs.map(({ id, text, ...rest }) => (\n <li key={id}>\n <TabLink\n selected={isSelectedItem(id)}\n className=\"anchor-tab-bar-tablink\"\n id={`tablink-${id}`}\n onClick={(e) => onClicktab(e, id)}\n tabIndex={0}\n {...rest}\n >\n {text}\n </TabLink>\n </li>\n ))}\n </TabsList>\n {tabsOverflow ? (\n <ArrowsContainer fullWidth={hasTwoArrows}>\n {canScrollToLeft ? (\n <ArrowWrapper onClick={scrollToLeft}>\n <Icon iconName=\"Arrow\" direction=\"reverse\" />\n </ArrowWrapper>\n ) : null}\n {canScrollToRight ? (\n <ArrowWrapper onClick={scrollToRight}>\n <Icon iconName=\"Arrow\" />\n </ArrowWrapper>\n ) : null}\n </ArrowsContainer>\n ) : null}\n </TabsWrapper>\n </GridItem>\n </TabsGrid>\n </AnchorTabbarWrapper>\n );\n};\n\nexport default AnchorTabBar;\n","/* eslint-disable react/no-danger */\n/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { FunctionComponent } from 'react';\nimport { IAnnouncementBannerProps, ThemeType } from '../../../types/types';\nimport Theme from '../../../styles/ThemeProvider';\nimport { AnnouncementBannerWrapper, SvgContainer, ContentContainer } from './AnnouncementBanner.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport SvgIcon from '../../atoms/Icons/Icons';\nimport { Overline } from '../../atoms/Typography/Typography';\n\nconst AnnouncementBanner: FunctionComponent<IAnnouncementBannerProps> = ({ title, announcementText, time, icon }) => (\n <Theme theme={ThemeType.Core}>\n <AnnouncementBannerWrapper>\n <Grid>\n <GridItem columnStartDesktop={2} columnSpanDesktop={1} columnStartDevice={2} columnSpanDevice={1}>\n <SvgContainer>\n <SvgIcon iconName={icon} color=\"white\" />\n </SvgContainer>\n </GridItem>\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={3} columnSpanDevice={11}>\n <Overline level={1}>\n <span data-testid=\"titlecontainer\">{title}</span> (<span data-testid=\"timecontainer\">{time}</span>)\n </Overline>\n <ContentContainer data-testid=\"richcontainer\">\n <div dangerouslySetInnerHTML={{ __html: announcementText }} />\n </ContentContainer>\n </GridItem>\n </Grid>\n </AnnouncementBannerWrapper>\n </Theme>\n);\nexport default AnnouncementBanner;\n","import React from 'react';\nimport { ICardsProps, ICardProps } from '../../../types/card';\nimport Card from '../../molecules/Card';\nimport { CardsContainer, GridItemContainer } from './Cards.style';\n\nconst Cards = ({ cards, size = 'small' }: ICardsProps) => {\n const columnSpanDesktop = size === 'small' ? 4 : 5;\n const getColumnStartDesktop = (index: number) => {\n if (size === 'small') {\n return (index % 3) * 4 + 3;\n }\n\n return (index % 2) * 5 + (3 + (index % 2) * 2);\n };\n\n return (\n <CardsContainer>\n {cards.map((card: ICardProps, index: number) => {\n return (\n <GridItemContainer\n key={`${card.title}-${index}`}\n columnStartDesktop={getColumnStartDesktop(index)}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={getColumnStartDesktop(index) - 1}\n columnSpanDevice={columnSpanDesktop}\n >\n <Card\n size={size}\n image={card.image}\n imageAltText={card.imageAltText}\n progress={card.progress}\n title={card.title}\n subtitle={card.subtitle}\n text={card.text}\n highlightText={card.highlightText}\n links={card.links}\n tags={card.tags}\n withContinueWatching={card.withContinueWatching}\n onlyShowButtonsOnHover={card.onlyShowButtonsOnHover}\n hoverLineColor={card.hoverLineColor}\n fullWidth={card.fullWidth}\n labelParams={card.labelParams}\n auxiliaryCTA={card.auxiliaryCTA}\n isGridCard\n />\n </GridItemContainer>\n );\n })}\n </CardsContainer>\n );\n};\n\nexport default Cards;\n","import React, { FunctionComponent } from 'react';\nimport {\n Wrapper,\n DetailsWrapper,\n ContentWrapper,\n AddressWrapperDesktop,\n AddressWrapperMobile,\n} from './ContactCard.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { Subtitle, BodyText } from '../../atoms/Typography';\nimport { IContactCardProps } from '../../../types/contactCard';\n\nconst divideAddressString = (address: string): React.ReactElement[] =>\n address.split(',').map((chunk, i) => (\n <BodyText level={1} key={i}>\n {chunk.trim()}\n </BodyText>\n ));\n\nconst ContactCard: FunctionComponent<IContactCardProps> = ({\n name,\n description,\n email,\n phone,\n website,\n address,\n hideBottomBorder = false,\n hideTopBorder = false,\n}) => {\n const hasDetails = email || phone || website;\n const addressString = address?.substring(0, 110);\n const descriptionText = description?.substring(0, 110);\n\n return (\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={8} columnStartDevice={1} columnSpanDevice={14}>\n <Wrapper data-testid=\"contact-card-wrapper\" hideBottomBorder={hideBottomBorder} hideTopBorder={hideTopBorder}>\n <ContentWrapper>\n <BodyText level={1}>{name}</BodyText>\n {descriptionText && <Subtitle level={2}>{descriptionText}</Subtitle>}\n {hasDetails && (\n <DetailsWrapper data-testid=\"contact-card-details-block\">\n {email && (\n <a tabIndex={0} href={`mailto:${email}`}>\n {email}\n </a>\n )}\n {phone && (\n <a tabIndex={0} href={`tel:${phone}`}>\n {phone}\n </a>\n )}\n {website && (\n <a tabIndex={0} href={website} target=\"_blank\" rel=\"noreferrer\">\n {website}\n </a>\n )}\n </DetailsWrapper>\n )}\n {addressString && (\n <div data-testid=\"contact-card-address-block\">\n <AddressWrapperDesktop>\n <BodyText level={1}>{addressString}</BodyText>\n </AddressWrapperDesktop>\n <AddressWrapperMobile>{divideAddressString(addressString)}</AddressWrapperMobile>\n </div>\n )}\n </ContentWrapper>\n </Wrapper>\n </GridItem>\n </Grid>\n );\n};\n\nexport default ContactCard;\n","import React from 'react';\nimport { TertiaryButton as Button } from '../../atoms/Buttons';\nimport { Header, Subtitle } from '../../atoms/Typography';\nimport {\n ContentSummaryWrapper,\n ContentSummaryImageWrapper,\n ContentSummaryTextWrapper,\n ContentSummaryTitleWrapper,\n ContentSummaryBodyTextWrapper,\n BodyTextRelative,\n BodyTextLimit,\n} from './ContentSummary.style';\nimport { IContentSummaryLink, IContentSummaryProps } from '../../../types/editorial';\nimport { ImageAspectRatioWrapper } from '../../atoms';\nimport { AspectRatio } from '../../../types';\nimport { TypographyLevel } from '../../../types/typography';\n\nconst MAX_HEADER_LEVEL = 6;\n\nconst clickHandler = (link?: IContentSummaryLink) => {\n if (link?.href && document) {\n document.location.href = link.href;\n }\n};\n\nconst ContentSummary = ({\n title,\n subtitle,\n bodyText,\n link,\n image,\n largeTitle = false,\n showImage = false,\n truncate = 0,\n fullyClickable = true,\n baseSemanticLevel = 3 as TypographyLevel,\n}: IContentSummaryProps) => (\n <ContentSummaryWrapper\n onClick={() => {\n if (fullyClickable) {\n clickHandler(link);\n }\n }}\n clickable={fullyClickable}\n data-roh=\"content-summary-item\"\n >\n {showImage && image && (\n <ContentSummaryImageWrapper data-testid=\"image-wrapper\">\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n {link?.href ? (\n <a href={link.href}>\n <img src={image.src} alt={image.alt} />\n </a>\n ) : (\n <img src={image.src} alt={image.alt} />\n )}\n </ImageAspectRatioWrapper>\n </ContentSummaryImageWrapper>\n )}\n <ContentSummaryTextWrapper showImage={showImage}>\n {title && (\n <ContentSummaryTitleWrapper data-testid={largeTitle ? 'large-title' : 'default-title'}>\n {largeTitle ? (\n <Header level={5} semanticLevel={baseSemanticLevel}>\n {title}\n </Header>\n ) : (\n <Subtitle level={1} semanticLevel={baseSemanticLevel}>\n {title}\n </Subtitle>\n )}\n </ContentSummaryTitleWrapper>\n )}\n {subtitle && (\n <Subtitle\n level={2}\n semanticLevel={\n title ? (Math.min(MAX_HEADER_LEVEL, baseSemanticLevel + 1) as TypographyLevel) : baseSemanticLevel\n }\n >\n {subtitle}\n </Subtitle>\n )}\n {bodyText && (\n <BodyTextRelative level={1}>\n <BodyTextLimit>\n <ContentSummaryBodyTextWrapper\n truncate={truncate}\n dangerouslySetInnerHTML={{ __html: bodyText }}\n data-testid=\"body-text\"\n />\n </BodyTextLimit>\n </BodyTextRelative>\n )}\n {link?.href && link.text && (\n <Button {...link} className=\"content-summary-text-link\">\n {link.text}\n </Button>\n )}\n </ContentSummaryTextWrapper>\n </ContentSummaryWrapper>\n);\n\nexport default ContentSummary;\n","import React from 'react';\nimport { BodyText, GridItem, Overline } from '../../../atoms';\nimport { TextWrapper } from '../PeopleListing.style';\nimport Person from '../Person';\nimport { CreditListingWrapper, DescriptionWrapper, ReplacementWrapper, RoleWrapper } from './CreditListing.style';\nimport { getConcatenatedPropLength } from '../../../../helpers/arrays';\nimport { ICreditListing } from '../../../../types';\n\nconst concatenateMusicTitle = (musicTitle: string[]) => (\n <>\n {musicTitle.map((title, index) => (\n <i key={index}>\n {index > 0 && (index === musicTitle.length - 1 ? ' and ' : ', ')}\n {title}\n </i>\n ))}\n </>\n);\n\nexport const getColumnSpanDesktop = (namesLength: number, charThreshold: number, peopleCount: number): number => {\n if (namesLength > charThreshold) {\n return peopleCount > 2 ? 4 : 2;\n }\n return 1;\n};\n\nconst CreditListing = ({ roles, columnCount = 4 }: ICreditListing & { columnCount?: number }) => {\n const charThreshold = 180;\n\n return (\n <CreditListingWrapper columnCount={columnCount}>\n {roles.map(({ name, people, description, musicTitle, replacement, additionalInfo, dataROH }, index) => {\n const namesLength = getConcatenatedPropLength(people, 'name');\n\n const columnSpanDesktop = getColumnSpanDesktop(namesLength, charThreshold, people.length);\n\n return (\n <GridItem\n columnSpanDesktop={columnSpanDesktop}\n columnSpanDevice={columnSpanDesktop}\n columnSpanSmallDevice={2}\n key={`${name}-${index}`}\n >\n <TextWrapper>\n <RoleWrapper title=\"role\" data-roh={dataROH}>\n <Overline level={1} tag=\"p\">\n {name}\n </Overline>\n </RoleWrapper>\n {description && (\n <DescriptionWrapper>\n <Overline level={3} tag=\"p\">\n {description}\n </Overline>\n </DescriptionWrapper>\n )}\n <BodyText level={1} tag=\"p\">\n {people.map((person, personIndex) => (\n <Person\n key={`${person.name}${personIndex}`}\n person={person}\n withSeparator={people.length !== personIndex + 1}\n />\n ))}\n </BodyText>\n {replacement && (\n <ReplacementWrapper>\n <BodyText level={1} tag=\"p\">\n {replacement}\n </BodyText>\n </ReplacementWrapper>\n )}\n {musicTitle && musicTitle.length > 0 && (\n <BodyText level={1} tag=\"p\">\n {concatenateMusicTitle(musicTitle)}\n </BodyText>\n )}\n {additionalInfo && (\n <BodyText level={1} tag=\"p\">\n {additionalInfo}\n </BodyText>\n )}\n </TextWrapper>\n </GridItem>\n );\n })}\n </CreditListingWrapper>\n );\n};\n\nexport default CreditListing;\n","// Get the total character length of a property in an array of objects\nexport const getConcatenatedPropLength = <K extends string, T extends Record<K, string>>(\n array: T[],\n prop: K\n): number => {\n return array.reduce((acc, item) => acc + item[prop].length, 0);\n};\n\nexport const truncateArrayByPropLength = <K extends string, T extends Record<K, string>>(\n array: T[],\n prop: K,\n maxChars: number,\n ellipsis: boolean = true\n): T[] => {\n // Early return if the total length of the array is less than the maxChars\n if (getConcatenatedPropLength(array, prop) <= maxChars) {\n return array;\n }\n\n // Add items to the truncated array until maxChars is reached\n let totalChars = 0;\n const truncatedArray: T[] = [];\n\n for (let i = 0; i < array.length && totalChars < maxChars; i++) {\n const itemLength = array[i][prop].length;\n\n if (totalChars + itemLength > maxChars) {\n if (ellipsis) {\n truncatedArray.push({\n ...array[i],\n [prop]: '...' as T[K], // Cast to maintain type safety\n });\n }\n break;\n }\n\n truncatedArray.push(array[i]);\n totalChars += itemLength;\n }\n\n return truncatedArray;\n};\n","import React, { FunctionComponent } from 'react';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport {\n EditorialGrid,\n EditorialImageWrapper,\n EditorialSubtitle,\n EditorialText,\n EditorialTextWrapper,\n} from './Editorial.style';\nimport { IEditorialProps } from '../../../types/editorial';\nimport { AspectRatio } from '../../../types/image';\n\nconst Editorial: FunctionComponent<IEditorialProps> = ({ imagePosition = 'left', subtitle, text, children }) => {\n const imageToLeft = imagePosition === 'left';\n return (\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={2} columnSpanDevice={12}>\n <EditorialGrid imageToLeft={imageToLeft}>\n <EditorialImageWrapper data-testid=\"image-wrapper\" imageToLeft={imageToLeft}>\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['1:1']}>{children}</ImageAspectRatioWrapper>\n </EditorialImageWrapper>\n <EditorialTextWrapper data-testid=\"text-wrapper\" imageToLeft={imageToLeft}>\n {subtitle ? <EditorialSubtitle>{subtitle}</EditorialSubtitle> : null}\n <EditorialText dangerouslySetInnerHTML={{ __html: text }} />\n </EditorialTextWrapper>\n </EditorialGrid>\n </GridItem>\n </Grid>\n );\n};\n\nexport default Editorial;\n","import React, { FunctionComponent } from 'react';\nimport {\n FooterSection,\n FooterContainer,\n AdditionalInfo,\n PolicyLinksRow,\n ContactNewsletterRow,\n ArtsLogoRow,\n} from './Footer.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport SponsorLogo from '../../atoms/SponsorLogo';\nimport PolicyLinks from '../../molecules/PolicyLinks';\nimport ContactNewsletter from '../../molecules/ContactNewsletter';\nimport { SocialMediaLink, IFooterProps } from '../../../types/footer';\n\nconst Footer: FunctionComponent<IFooterProps> = ({ data }) => {\n const {\n policyLinks,\n newsletter,\n socialMediaLinks: rawSocialMediaLinks,\n contact,\n artsLogo: { dataRoh: artsDataRoh, ...artsLogo },\n additionalInfo,\n } = data;\n\n const socialMediaLinks: SocialMediaLink[] = rawSocialMediaLinks as SocialMediaLink[];\n\n return (\n <FooterSection>\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={2} columnSpanDevice={12}>\n <FooterContainer>\n <PolicyLinksRow data-testid=\"policy-links\">\n <PolicyLinks items={policyLinks} />\n </PolicyLinksRow>\n <ContactNewsletterRow data-testid=\"contact-newsletter\">\n <ContactNewsletter\n signUpText={newsletter.text}\n signUpLink={newsletter.link}\n socialMediaLinks={socialMediaLinks}\n contact={contact}\n />\n </ContactNewsletterRow>\n <ArtsLogoRow data-testid=\"arts-logo\">\n <a data-roh={artsDataRoh} target=\"_blank\" rel=\"noopener noreferrer\" {...artsLogo}>\n <SponsorLogo />\n </a>\n </ArtsLogoRow>\n <AdditionalInfo data-testid=\"additional-info\">{additionalInfo}</AdditionalInfo>\n </FooterContainer>\n </GridItem>\n </Grid>\n </FooterSection>\n );\n};\n\nexport default Footer;\n","import React, { useRef, useEffect, useState, FunctionComponent } from 'react';\nimport { IImageWithCaptionProps } from '../../../types/image';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport { CaptionWrapper, Wrapper } from './ImageWithCaption.style';\n\nconst ImageWithCaption: FunctionComponent<IImageWithCaptionProps> = ({ caption, children, aspectRatio }) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number>(0);\n\n useEffect(() => {\n const setWrapperHeight = () => setHeight(wrapperRef?.current?.offsetHeight || 0);\n window.addEventListener('resize', setWrapperHeight);\n if (wrapperRef) {\n setWrapperHeight();\n }\n return () => window.removeEventListener('resize', setWrapperHeight);\n }, [wrapperRef]);\n\n return (\n <Wrapper aspectRatio={aspectRatio} ref={wrapperRef} height={height}>\n <ImageAspectRatioWrapper aspectRatio={aspectRatio}>{children}</ImageAspectRatioWrapper>\n <CaptionWrapper>{caption}</CaptionWrapper>\n </Wrapper>\n );\n};\n\nexport default ImageWithCaption;\n","import React, { FunctionComponent } from 'react';\nimport { InfoBodyWrapper, InfoContent, InfoTitle, InfoWrapper } from './Information.style';\nimport {\n IInformationProps,\n IInformationTitleVariant,\n IInformationTitleProps,\n TitleTextSize,\n IInformationBackgroundColour,\n} from '../../../types/information';\nimport InfoCta from './InfoCta';\nimport { AltHeader, GridItem, Header } from '../../atoms';\nimport { AltHeaderLevel, TypographyLevel } from '../../../types/typography';\n\nconst defaultColumnSpan = 6;\nconst smallColumnSpan = 4;\nconst largeColumnSpan = 9;\nconst mediumWordBreakpoint = 8;\nconst longWordBreakpoint = 13;\n\nconst getColumnSpan = (\n variant: IInformationTitleVariant,\n textSize: TitleTextSize,\n longestWordLength: number\n): number => {\n if (!(variant === IInformationTitleVariant.Header && textSize === 4)) return defaultColumnSpan;\n\n switch (true) {\n case longestWordLength > longWordBreakpoint:\n return largeColumnSpan;\n case longestWordLength < mediumWordBreakpoint:\n return smallColumnSpan;\n default:\n return defaultColumnSpan;\n }\n};\n\nconst renderTitle = (props: IInformationTitleProps): React.ReactElement => {\n const headerLevel = props.variant === IInformationTitleVariant.Header && props.textSize < 4 ? 4 : props.textSize;\n\n return props.variant === IInformationTitleVariant.Header ? (\n <Header level={headerLevel as TypographyLevel}>{props.text}</Header>\n ) : (\n <AltHeader level={headerLevel as AltHeaderLevel}>{props.text}</AltHeader>\n );\n};\n\nconst Information: FunctionComponent<IInformationProps> = ({ body, title, background, cta }) => {\n const titleWords = title.text.split(' ');\n const titleWordLengths = titleWords.map((word) => word.length);\n const maxTitleWordLength = Math.max(...titleWordLengths);\n const titleColumnSpan = getColumnSpan(title.variant, title.textSize, maxTitleWordLength);\n const bgColour = background ?? IInformationBackgroundColour.White;\n\n return (\n <InfoWrapper background={bgColour} data-testid=\"infoWrapper\">\n <GridItem columnStartDesktop={2} columnStartDevice={2} columnSpanDesktop={titleColumnSpan} columnSpanDevice={12}>\n <InfoTitle>{renderTitle(title)}</InfoTitle>\n </GridItem>\n <GridItem\n columnStartDesktop={titleColumnSpan + 2}\n columnStartDevice={2}\n columnSpanDesktop={14 - titleColumnSpan}\n columnSpanDevice={12}\n >\n <InfoContent>\n <InfoBodyWrapper background={bgColour} dangerouslySetInnerHTML={{ __html: body as string }} />\n {cta && (\n <InfoCta\n link={cta.link}\n variant={cta.variant}\n theme={cta.theme}\n infoThemed={bgColour !== IInformationBackgroundColour.White}\n text={cta.text}\n iconName={cta.iconName}\n iconDirection={cta.iconDirection}\n target={cta.target}\n />\n )}\n </InfoContent>\n </GridItem>\n </InfoWrapper>\n );\n};\n\nexport default Information;\n","import React, { FunctionComponent } from 'react';\nimport { IMiniCardProps } from '../../../types/miniCard';\nimport {\n ContentContainer,\n CardContainer,\n StyledImage,\n TitleWrapper,\n ImageWrapper,\n IconWrapper,\n} from './MiniCard.style';\nimport ImageAspectRatioWrapper from '../../atoms/ImageAspectRatioWrapper';\nimport { GridItem, Icon, Overline } from '../../atoms';\nimport { AspectRatio } from '../../../types';\n\nconst MiniCard: FunctionComponent<IMiniCardProps> = ({\n title = '',\n subtitle,\n image,\n imageAltText = '',\n iconName,\n iconColor,\n}) => (\n <CardContainer data-testid=\"minicardcontainer\">\n <GridItem columnStartDevice={1} columnSpanDevice={3} columnStartDesktop={1} columnSpanDesktop={3}>\n <ImageWrapper>\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n <StyledImage src={image} alt={imageAltText} />\n </ImageAspectRatioWrapper>\n {iconName && (\n <IconWrapper>\n <Icon iconName={iconName} color={iconColor} />\n </IconWrapper>\n )}\n </ImageWrapper>\n </GridItem>\n <GridItem columnStartDevice={4} columnSpanDevice={4} columnStartDesktop={4} columnSpanDesktop={4}>\n <ContentContainer>\n <Overline level={4}>{subtitle}</Overline>\n <TitleWrapper>\n <Overline level={2}>{title}</Overline>\n </TitleWrapper>\n </ContentContainer>\n </GridItem>\n </CardContainer>\n);\n\nexport default MiniCard;\n","import React, { useState, useEffect } from 'react';\nimport {\n NavigationWrapper,\n NavigationGrid,\n NavigationGridMobile,\n LogoContainer,\n MenuContainer,\n NavContainer,\n NavTopContainer,\n GridItemSearch,\n SearchBackground,\n FullScreenContainer,\n NavContainerGridItem,\n} from './Navigation.style';\nimport { GridItem } from '../../atoms/Grid';\nimport Logo from '../../atoms/Logo';\nimport NavTop from '../../molecules/NavTop';\nimport { INavigationProps } from '../../../types/navigation';\nimport Tabs from '../../molecules/Tabs';\nimport SearchBar from '../../molecules/SearchBar';\n\nconst Navigation = ({\n dataNavTop,\n menuData,\n onSearch,\n onLink,\n logoLink,\n desktopLogoUrl,\n devicesLogoUrl,\n}: INavigationProps) => {\n const [navTopData, setNavTopData] = useState(dataNavTop);\n const [showMenu, setShowMenu] = useState(false);\n const [showSearch, setshowSearch] = useState(false);\n const [fullScreenHeight, setFullScreenHeight] = useState('0px');\n const { items } = menuData;\n\n useEffect(() => {\n const body = document?.body;\n const html = document?.documentElement;\n\n if (body && html) {\n const newHeight = Math.max(\n body.scrollHeight,\n body.offsetHeight,\n html.clientHeight,\n html.scrollHeight,\n html.offsetHeight\n );\n setFullScreenHeight(`${newHeight}px`);\n }\n }, []);\n\n useEffect(() => {\n setNavTopData(dataNavTop);\n }, [dataNavTop]);\n\n const onClickSearchHandler = () => {\n setshowSearch(true);\n };\n\n const onLinkHandler = (link: string) => {\n onLink(link);\n };\n\n const onShowMenuHandler = (show: boolean) => {\n setShowMenu(show);\n };\n\n const onSearchHandler = (value: string) => {\n onSearch(value);\n setshowSearch(false);\n };\n\n const onCloseSearchHandler = () => {\n setshowSearch(false);\n };\n\n return (\n <NavigationWrapper isMenuOpen={showMenu}>\n {showSearch && <FullScreenContainer style={{ height: `${fullScreenHeight}` }} onClick={onCloseSearchHandler} />}\n <NavigationGrid>\n <GridItem columnStartDesktop={2} columnSpanDesktop={1} columnStartDevice={2} columnSpanDevice={2}>\n <LogoContainer>\n <Logo urlLink={logoLink} desktopImage={desktopLogoUrl} devicesImage={devicesLogoUrl} />\n </LogoContainer>\n </GridItem>\n <NavContainerGridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={4} columnSpanDevice={10}>\n <MenuContainer>\n <NavTopContainer>\n <NavTop\n accountIcon={navTopData.accountIcon}\n accountOptions={navTopData.accountOptions}\n accountText={navTopData.accountText}\n accountLink={navTopData.accountLink}\n basketText={navTopData.basketText}\n basketExpiryUnixTimestamp={navTopData.basketExpiryUnixTimestamp}\n basketLink={navTopData.basketLink}\n basketNumItems={navTopData.basketNumItems}\n basketNumVirtualItems={navTopData.basketNumVirtualItems}\n onClickSearch={onClickSearchHandler}\n onLink={onLinkHandler}\n isShowSearch={showSearch}\n colorPrimary=\"navigation\"\n />\n </NavTopContainer>\n <NavContainer>\n <Tabs items={items} onChange={onLinkHandler} onShowMenu={onShowMenuHandler} colorPrimary=\"navigation\" />\n </NavContainer>\n </MenuContainer>\n </NavContainerGridItem>\n <>\n <SearchBackground visible={showSearch} />\n <GridItemSearch\n visible={showSearch}\n columnStartDesktop={2}\n columnSpanDesktop={14}\n columnStartDevice={2}\n columnSpanDevice={12}\n >\n <SearchBar onClick={onSearchHandler} onClose={onCloseSearchHandler} />\n </GridItemSearch>\n </>\n </NavigationGrid>\n {showMenu && (\n <NavigationGridMobile>\n <GridItem columnStartDevice={2} columnSpanDevice={10}>\n <NavContainer>\n <Tabs\n items={items}\n onChange={onLinkHandler}\n onShowMenu={onShowMenuHandler}\n showMenu\n colorPrimary=\"navigation\"\n />\n </NavContainer>\n </GridItem>\n </NavigationGridMobile>\n )}\n </NavigationWrapper>\n );\n};\n\nexport default Navigation;\n","import React, { FunctionComponent } from 'react';\nimport { CinemaBadge } from '../../../atoms/Badge';\nimport Theme from '../../../../styles/ThemeProvider';\nimport { IThemePageHeadingProps } from '../../../../types/editorial';\nimport { Colors, ThemeType } from '../../../../types/types';\nimport PageHeading from '../PageHeading';\n\nconst PageHeadingCinema: FunctionComponent<IThemePageHeadingProps> = ({ link, ...rest }) => {\n const cinemaLink = link && {\n ...link,\n color: Colors.Black,\n bgColor: Colors.White,\n };\n\n return (\n <Theme theme={ThemeType.Cinema}>\n <PageHeading {...rest} link={cinemaLink}>\n <CinemaBadge align=\"left\" />\n </PageHeading>\n </Theme>\n );\n};\n\nexport default PageHeadingCinema;\n","import React, { FunctionComponent } from 'react';\nimport Theme from '../../../../styles/ThemeProvider';\nimport { IThemePageHeadingProps } from '../../../../types/editorial';\nimport { Colors, ThemeType } from '../../../../types/types';\nimport PageHeading from '../PageHeading';\n\nconst PageHeadingCore: FunctionComponent<IThemePageHeadingProps> = ({ link, ...rest }) => {\n const coreLink = link && {\n ...link,\n color: Colors.White,\n bgColor: Colors.Black,\n };\n\n return (\n <Theme theme={ThemeType.Core}>\n <PageHeading {...rest} link={coreLink} />\n </Theme>\n );\n};\n\nexport default PageHeadingCore;\n","import React, { FunctionComponent } from 'react';\nimport { IPageHeadingImpactProps } from '../../../../types/impactHeader';\nimport { Colors } from '../../../../types/types';\nimport { devices } from '../../../../styles/viewports';\nimport Sponsorship from '../../../atoms/Sponsorship';\nimport TabLink from '../../../atoms/TabLink';\nimport { PrimaryButton } from '../../../atoms/Buttons';\nimport { Header } from '../../../atoms/Typography';\nimport {\n ImpactWrapper,\n ImpactGrid,\n LogoWrapper,\n TextWrapper,\n ButtonWrapper,\n SponsorWrapper,\n ScrollDownWrapper,\n ImpactHeaderImageWrapper,\n} from './Impact.style';\n\nconst PageHeadingImpact: FunctionComponent<IPageHeadingImpactProps> = ({\n children,\n text,\n link,\n sponsor = true,\n customSponsorImage,\n scrollHref,\n bgUrlDesktop,\n bgUrlDevice,\n bgImageAltText = '',\n semanticLevel = 3,\n}) => {\n const truncatedText = text?.substring(0, 75);\n const { text: linkText, ...restLink } = link || {};\n\n return (\n <ImpactWrapper bgUrlDesktop={bgUrlDesktop} bgUrlDevice={bgUrlDevice} data-testid=\"impact-wrapper\">\n {sponsor ? (\n <SponsorWrapper data-testid=\"impact-sponsor\">\n {customSponsorImage ? (\n <Sponsorship data-testid=\"impact-custom-sponsor\" {...customSponsorImage} isCustomImage />\n ) : (\n <Sponsorship />\n )}\n </SponsorWrapper>\n ) : null}\n <ImpactHeaderImageWrapper>\n <picture data-testid=\"impact-picture\">\n {bgUrlDevice && (\n <source srcSet={bgUrlDevice} media={`${devices.mobile}`} data-testid=\"impact-mobile-image-source\" />\n )}\n <source srcSet={bgUrlDesktop} media={`${devices.desktop}`} data-testid=\"impact-desktop-image-source\" />\n <img src={bgUrlDesktop} alt={bgImageAltText} data-testid=\"impact-image\" />\n </picture>\n </ImpactHeaderImageWrapper>\n <ImpactGrid>\n {children ? <LogoWrapper data-testid=\"impact-logo\">{children}</LogoWrapper> : null}\n {text ? (\n <TextWrapper data-testid=\"impact-text\">\n <Header level={3} semanticLevel={semanticLevel}>\n {truncatedText}\n </Header>\n </TextWrapper>\n ) : null}\n {link ? (\n <ButtonWrapper data-testid=\"impact-link\">\n <PrimaryButton {...restLink}>{linkText}</PrimaryButton>\n </ButtonWrapper>\n ) : null}\n </ImpactGrid>\n {scrollHref ? (\n <ScrollDownWrapper data-testid=\"impact-scroll-link\">\n <TabLink\n iconName=\"Arrow\"\n iconDirection=\"down\"\n href={scrollHref}\n color={Colors.White}\n hoverColor={Colors.White}\n >\n Scroll Down\n </TabLink>\n </ScrollDownWrapper>\n ) : null}\n </ImpactWrapper>\n );\n};\n\nexport default PageHeadingImpact;\n","import React, { FunctionComponent } from 'react';\nimport ImageAspectRatioWrapper from '../../../atoms/ImageAspectRatioWrapper';\nimport { AspectRatio, Colors } from '../../../../types';\nimport { InfoWrapper, LeftPanel, PanelGrid, RightPanel, ScrollDownWrapper } from './Panel.style';\nimport { IPanelHeadingProps } from '../../../../types/editorial';\nimport { TabLink } from '../../../atoms';\n\nconst PageHeadingPanel: FunctionComponent<IPanelHeadingProps> = ({ info, image, color, scrollTo }) => {\n const hasImage = !!image;\n\n return (\n <PanelGrid color={color} data-testid=\"wrapper\">\n <LeftPanel hasImage={hasImage}>\n <InfoWrapper>{info}</InfoWrapper>\n {scrollTo && (\n <ScrollDownWrapper data-testid=\"scroll-link\">\n <TabLink\n iconName=\"Arrow\"\n iconDirection=\"down\"\n href={scrollTo}\n color={color === Colors.White ? Colors.Black : Colors.White}\n hoverColor={color === Colors.White ? Colors.Black : Colors.White}\n >\n Scroll Down\n </TabLink>\n </ScrollDownWrapper>\n )}\n </LeftPanel>\n {hasImage && (\n <RightPanel>\n <ImageAspectRatioWrapper aspectRatio={AspectRatio['4:3']}>\n <img src={image?.src ?? ''} alt={image?.alt ?? ''} />\n </ImageAspectRatioWrapper>\n </RightPanel>\n )}\n </PanelGrid>\n );\n};\n\nexport default PageHeadingPanel;\n","import React, { FunctionComponent } from 'react';\nimport { StreamBadge } from '../../../atoms/Badge';\nimport Theme from '../../../../styles/ThemeProvider';\nimport { IThemePageHeadingProps } from '../../../../types/editorial';\nimport { Colors, ThemeType } from '../../../../types/types';\nimport PageHeading from '../PageHeading';\nimport { StreamWrapper } from './Stream.style';\n\nconst PageHeadingStream: FunctionComponent<IThemePageHeadingProps> = ({ link, ...rest }) => {\n const streamLink = link && {\n ...link,\n color: Colors.Black,\n bgColor: Colors.White,\n };\n\n return (\n <Theme theme={ThemeType.Stream}>\n <StreamWrapper>\n <PageHeading {...rest} link={streamLink}>\n <StreamBadge align=\"left\" />\n </PageHeading>\n </StreamWrapper>\n </Theme>\n );\n};\n\nexport default PageHeadingStream;\n","import React, { FunctionComponent } from 'react';\n\nimport { IPasswordStrengthProps } from '../../../types/passwordStrength';\nimport { Colors } from '../../../types/types';\nimport { AltHeader, Overline } from '../../atoms/Typography';\nimport { Container, Sections, Section, BottomLine, Text, LabelText } from './PasswordStrength.styles';\n\n/**\n * Password strength indicator component.\n * This renders some number of lines (6 by default)\n * which should become active when the user improves\n * the strength of the entered password.\n *\n * ## Sections\n * To set number of sections it should be passed\n * as `sections` prop.\n *\n * ## Active section\n * To set number of active sections it should be passed\n * as `activeSections` prop.\n *\n * ## Colors\n * Color of every element can be controlled by properties:\n * `sectionsColor`, `activeSectionsColor`,\n * `textColor`, `strengthLabelColor`.\n *\n * ## Text\n * `text` prop is used to render some message.\n * For example error (together with proper red color)\n * or some password requirement. It can be empty.\n *\n * ## Strength label\n * `strengthLabel` prop is used to render strength characteristic\n * of entered password. For example: `weak`, `normal`, `strong`, etc.\n * It can be empty.\n */\nconst PasswordStrength: FunctionComponent<IPasswordStrengthProps> = ({\n sections = 6,\n activeSections = 0,\n sectionsColor = Colors.MidGrey,\n activeSectionsColor = Colors.Black,\n text = '',\n textColor = Colors.Black,\n strengthLabel = '',\n strengthLabelColor = Colors.Black,\n}) => {\n const setSectionColor = (index: number): Colors => (index < activeSections ? activeSectionsColor : sectionsColor);\n\n const setSectionDataTestId = (index: number): string =>\n index < activeSections ? 'password-strength-section-active' : 'password-strength-section';\n\n return (\n <Container data-testid=\"password-strength-container\">\n <Sections data-testid=\"password-strength-sections\">\n {Array.from({ length: sections }, (_section, i) => (\n <Section key={i} color={setSectionColor(i)} data-testid={setSectionDataTestId(i)} />\n ))}\n </Sections>\n <BottomLine>\n <Text color={textColor} data-testid=\"password-strength-text\">\n <AltHeader level={6}>{text}</AltHeader>\n </Text>\n <LabelText color={strengthLabelColor} data-testid=\"password-strength-label\">\n <Overline level={2}>{strengthLabel}</Overline>\n </LabelText>\n </BottomLine>\n </Container>\n );\n};\n\nexport default PasswordStrength;\n","import React, { FunctionComponent } from 'react';\nimport {\n PromoWithTitleGrid,\n PromoWithTitleContentWrapper,\n PromoWithTitleSubtitle,\n PromoWithTitleText,\n PromoWithTitleContainer,\n ButtonsContainer,\n} from './PromoWithTitle.style';\nimport { PrimaryButton, TertiaryButton } from '../../atoms/Buttons';\nimport { Header } from '../../atoms/Typography';\nimport { IPromoWithTitleProps } from '../../../types/editorial';\nimport PromoChild from './PromoChild';\n\nconst LENGTH_TEXT = 28;\n\nconst PromoWithTitle: FunctionComponent<IPromoWithTitleProps> = ({\n imagePosition = 'left',\n title = '',\n titleSize = 'large',\n subtitle,\n text,\n links,\n children,\n videoSettings,\n titleSemanticLevel,\n}) => {\n const truncate = (str: string, n: number) => (str.length >= n ? str.substr(0, n) : str);\n\n const imageToLeft = imagePosition === 'left';\n const titleLevel = titleSize === 'large' ? 2 : 3;\n\n const primaryButton = links?.[0];\n const { text: primaryButtonText = '', ...restPrimaryButton } = primaryButton || {};\n const primaryButtonTextTruncate = truncate(primaryButtonText, LENGTH_TEXT);\n\n const tertiaryButton = links?.[1];\n const { text: tertiaryButtonText = '', ...restTertiaryButton } = tertiaryButton || {};\n const tertiaryButtonTextTruncate = truncate(tertiaryButtonText, LENGTH_TEXT);\n\n const defaultVideoSettings = {\n muted: true,\n autoPlay: false,\n soundControl: false,\n fullScreenOption: false,\n loop: true,\n };\n\n return (\n <PromoWithTitleGrid imageToLeft={imageToLeft}>\n <PromoChild\n // eslint-disable-next-line react/no-children-prop\n children={children}\n videoSettings={{ ...defaultVideoSettings, ...videoSettings }}\n imageToLeft={imageToLeft}\n />\n <PromoWithTitleContentWrapper data-testid=\"content-wrapper\" imageToLeft={imageToLeft}>\n <PromoWithTitleContainer>\n <Header level={titleLevel} semanticLevel={titleSemanticLevel ?? titleLevel}>\n {title}\n </Header>\n </PromoWithTitleContainer>\n {subtitle ? <PromoWithTitleSubtitle>{subtitle}</PromoWithTitleSubtitle> : null}\n <PromoWithTitleText dangerouslySetInnerHTML={{ __html: text as string }} />\n {links ? (\n <ButtonsContainer\n data-testid=\"buttons-wrapper\"\n primaryButtonTextLength={primaryButtonText.length}\n tertiaryButtonTextLength={tertiaryButtonText.length}\n >\n {primaryButton ? <PrimaryButton {...restPrimaryButton}>{primaryButtonTextTruncate}</PrimaryButton> : null}\n {tertiaryButton ? (\n <TertiaryButton {...restTertiaryButton}>{tertiaryButtonTextTruncate}</TertiaryButton>\n ) : null}\n </ButtonsContainer>\n ) : null}\n </PromoWithTitleContentWrapper>\n </PromoWithTitleGrid>\n );\n};\n\nexport default PromoWithTitle;\n","/* eslint-disable react/no-danger */\nimport React, { FunctionComponent } from 'react';\nimport { TextWrapper, Line, AttributionWrapper } from './Quote.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { AltHeader, Subtitle } from '../../atoms/Typography';\nimport { IQuoteProps } from '../../../types/quote';\n\nconst Quote: FunctionComponent<IQuoteProps> = ({ text, attribution }) => {\n return (\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={8} columnStartDevice={2} columnSpanDevice={12}>\n <TextWrapper>\n <AltHeader level={4}>\n <div dangerouslySetInnerHTML={{ __html: `“${text}”` }} />\n </AltHeader>\n </TextWrapper>\n <AttributionWrapper displayAttribution={Boolean(attribution)} data-testid=\"quote-attribution-block\">\n <Line />\n <Subtitle level={1}>{attribution}</Subtitle>\n </AttributionWrapper>\n </GridItem>\n </Grid>\n );\n};\n\nexport default Quote;\n","import React, { useState } from 'react';\nimport { IRadioGroupProps, IRadioProps } from '../../../types/formTypes';\nimport { GridItem, Radio } from '../../atoms';\nimport { RadioGroupContainer } from './RadioGroup.style';\n\n/**\n * DEPRECATED. Use RadioGroup2 instead\n */\nconst RadioGroup = ({\n radios,\n columnStartDesktop = 1,\n columnStartDevice = 1,\n columnSpanDesktop = 16,\n columnSpanDevice = 14,\n columnStartSmallDevice,\n columnSpanSmallDevice,\n onChange,\n}: IRadioGroupProps) => {\n const [radioProps, setRadioProps] = useState<IRadioProps[]>(radios ?? []);\n const [checkedIndex, setCheckedIndex] = useState<number | null>(null);\n\n const handleChange = (_value: string, index: number) => {\n setCheckedIndex(index);\n const newRadioProps = radios?.map((radio, i) => {\n return {\n ...radio,\n checked: i === index,\n };\n });\n setRadioProps(newRadioProps ?? []);\n onChange?.(radios ? radios[index] : undefined);\n };\n\n return (\n <GridItem\n columnStartDesktop={columnStartDesktop}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={columnStartDevice}\n columnSpanDevice={columnSpanDevice}\n columnStartSmallDevice={columnStartSmallDevice}\n columnSpanSmallDevice={columnSpanSmallDevice}\n >\n <RadioGroupContainer>\n {radioProps?.map((radio, i) => {\n return (\n <Radio\n key={(radio.label ?? 'defaultRadioKey') + i}\n checked={i === checkedIndex}\n // error={radio.error} // TO DO: Add error state - design not yet available\n label={radio.label}\n onChange={(e) => handleChange(e, i)}\n />\n );\n })}\n </RadioGroupContainer>\n </GridItem>\n );\n};\n\nexport default RadioGroup;\n","import React, { FunctionComponent, ChangeEventHandler } from 'react';\n\nimport { Container, ErrorLabel, RadioGroup } from './RadioGroup2.style';\n\nimport { IRadioGroup2Props } from '../../../types/formTypes';\nimport { AltHeader } from '../../atoms/Typography';\nimport Radio2 from '../../atoms/Radio2';\n\n/**\n * A RadioGroup component, that renders set of Radio2 components inside.\n * `name` prop should be specified and will be passed as a `name` to each\n * radio to combine them in one group.\n *\n * # Radios\n * `radios` prop is an array of radios that should be renderet. This is an\n * array of objects `{content: ReactNode, value: string | number}`.\n *\n * # Default value\n * `defaultValue` prop can be specified to make one of radios checked inittially.\n * This should be equal to `value` of one of `radios`.\n *\n * # Error state\n * An error label will be shown below the radios if the `error` prop exists.\n * Also radios will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Horizontal mode\n * If `horizontalMode` prop is true radios will be placed in a row instead of column.\n *\n * # Distance between radios\n * `gap` prop allow to control distance between radios in pixels. This works in default and\n * horizontal modes.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n *\n * # Black box mode\n * If `blackBox` prop is true checked state will be styled as black box with white tick icon.\n * This style was used before as a default. Not preferred in new components.\n * This will be ignored if `darkMode` is true.\n */\nconst RadioGroup2: FunctionComponent<IRadioGroup2Props> = ({\n radios,\n name,\n horizontalMode = false,\n gap = 30,\n error,\n darkMode,\n blackBox,\n onChange,\n defaultValue,\n}) => {\n const changeHandler: ChangeEventHandler<HTMLInputElement> = (e) => {\n onChange?.(e.target.value);\n };\n\n return (\n <Container>\n <RadioGroup gap={gap} horizontalMode={horizontalMode}>\n {radios.map((radio, idx) => (\n <Radio2\n key={`${radio.value}-${idx}`}\n name={name}\n value={radio.value}\n blackBox={blackBox}\n darkMode={darkMode}\n defaultChecked={radio.value === defaultValue}\n error={error !== undefined ? '' : undefined}\n onChange={changeHandler}\n >\n {radio.content}\n </Radio2>\n ))}\n </RadioGroup>\n {!!error && (\n <ErrorLabel darkMode={darkMode} data-testid=\"radio-group-error-label\">\n <AltHeader level={6}>{error}</AltHeader>\n </ErrorLabel>\n )}\n </Container>\n );\n};\n\nexport default RadioGroup2;\n","/* eslint-disable react/no-unstable-nested-components */\n/* eslint-disable react/no-danger */\nimport React, { FunctionComponent, useEffect, useRef, useState } from 'react';\nimport { INodeProps, IReadMoreProps } from '../../../types/types';\nimport { AccordionContainer } from '../Accordion/Accordion.style';\nimport {\n ContentContainer,\n FullTextContainer,\n IntroTextContainer,\n LinkContainer,\n ReadMoreContainer,\n} from './ReadMore.style';\nimport { Header, TextLink } from '../../atoms';\nimport { truncateReactNodeString } from '../../../helpers/htmlStrings';\nimport { keyDown } from '../../../helpers/keyboards';\n\nconst ReadMore: FunctionComponent<IReadMoreProps> = ({\n title,\n introText,\n fullText,\n initOpen = false,\n showMoreText,\n hideText,\n characterLimit,\n truncate = true,\n}) => {\n const [isFullTextOpen, setIsFullTextOpen] = useState<boolean>(initOpen);\n const [textHeight, setTextHeight] = useState<string>('0px');\n\n const readMoreContent: INodeProps = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (readMoreContent?.current && initOpen) {\n setTextHeight(`${readMoreContent.current.scrollHeight}px`);\n }\n }, [readMoreContent, initOpen]);\n\n const toggleFullText = () => {\n if (!fullText) return;\n if (typeof fullText === 'string' && fullText.length === 0) return;\n setIsFullTextOpen(!isFullTextOpen);\n setTextHeight(isFullTextOpen ? '0px' : `${readMoreContent.current.scrollHeight}px`);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n keyDown(e, toggleFullText);\n };\n\n const INTRO_CHAR_LIMIT = truncate ? (characterLimit ?? 115) : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const truncatedText = truncate ? truncateReactNodeString(introText ?? '', INTRO_CHAR_LIMIT!, true) : introText;\n\n const IntroText = () =>\n introText ? (\n <ContentContainer>\n <IntroTextContainer isVisible={!isFullTextOpen}>\n {truncate ? <div dangerouslySetInnerHTML={{ __html: `${truncatedText}` }} /> : introText}\n </IntroTextContainer>\n </ContentContainer>\n ) : null;\n\n const contentContainerId = `${title}-read-more-content`;\n\n return (\n <AccordionContainer tabIndex={0} onKeyDown={handleKeyDown}>\n <ReadMoreContainer aria-label={title} aria-expanded={isFullTextOpen} aria-controls={contentContainerId}>\n <Header level={5} semanticLevel={3}>\n {title}\n </Header>\n </ReadMoreContainer>\n {!isFullTextOpen && <IntroText />}\n <ContentContainer\n data-testid=\"richcontainer\"\n ref={readMoreContent}\n id={contentContainerId}\n aria-live=\"polite\"\n style={{ maxHeight: `${textHeight}` }}\n >\n <FullTextContainer isVisible={isFullTextOpen}>{fullText}</FullTextContainer>\n </ContentContainer>\n <LinkContainer>\n {(fullText || isFullTextOpen) && (\n <TextLink tabIndex={0} role=\"button\" onClick={toggleFullText}>\n {isFullTextOpen ? `${hideText}` : `${showMoreText}`}\n </TextLink>\n )}\n </LinkContainer>\n </AccordionContainer>\n );\n};\n\nexport default ReadMore;\n","export const keyDown = (e: { key: string }, toggleFunction: () => void) => {\n if (e.key === 'Enter' || e.key === 'Space') {\n toggleFunction();\n }\n};\n","/* eslint-disable max-len */\nimport React, { FunctionComponent } from 'react';\nimport { Colors, ILogosProps } from '../../../types/types';\nimport { SecondaryLogoWrapper } from './SecodaryLogo.style';\n\nconst SecondaryLogo: FunctionComponent<ILogosProps> = ({ fillColor = Colors.White }) => (\n <SecondaryLogoWrapper\n fillColor={fillColor}\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 207.26 11.94\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <g data-name=\"Layer 2\">\n <path\n d=\"M0 .2h5.15a4.67 4.67 0 0 1 3.33 1.15 3.51 3.51 0 0 1 1 2.49A3.46 3.46 0 0 1 6.7 7.37l3.12 4.38H7.41l-2.84-4H2v4H0Zm5 5.72c1.45 0 2.37-.76 2.37-1.93V4c0-1.24-.89-1.91-2.39-1.91H2v3.83Zm7.45.08a5.92 5.92 0 0 1 6.06-6 5.87 5.87 0 0 1 6 5.94V6a5.92 5.92 0 0 1-6.06 6 5.86 5.86 0 0 1-6-6Zm10 0a4 4 0 0 0-3.93-4.11 3.91 3.91 0 0 0-3.89 4.08V6a3.94 3.94 0 0 0 3.93 4.09A3.88 3.88 0 0 0 22.4 6Zm8.25 1.18L26.06.2h2.41l3.22 5.1L35 .2h2.32L32.7 7.14v4.61h-2.05ZM42.73.12h1.88l5.08 11.63h-2.14L46.38 9h-5.46l-1.19 2.79h-2.08Zm2.91 7-2-4.62-2 4.62Zm7.15-7h2V9.9h6.07v1.85h-8.1ZM69.91 6A6 6 0 0 1 82 5.94V6a5.92 5.92 0 0 1-6.06 6 5.85 5.85 0 0 1-6.03-6Zm10 0a4 4 0 0 0-3.93-4.11A3.91 3.91 0 0 0 72 5.94V6a3.93 3.93 0 0 0 4 4.06A3.88 3.88 0 0 0 79.86 6ZM85.68.2h4.55c2.71 0 4.39 1.53 4.39 3.86C94.62 6.68 92.54 8 90 8h-2.29v3.72h-2Zm4.39 6c1.53 0 2.49-.85 2.49-2.06 0-1.35-1-2.06-2.49-2.06h-2.36V6.2Zm7.78-6h8.56V2h-6.53v3h5.79v1.83h-5.79v3.1h6.61v1.82h-8.64Zm12.35 0h5.14a4.68 4.68 0 0 1 3.34 1.15 3.5 3.5 0 0 1 .95 2.49 3.46 3.46 0 0 1-2.73 3.49l3.1 4.42h-2.4l-2.84-4h-2.54v4h-2Zm5 5.72c1.45 0 2.37-.76 2.37-1.93V4c0-1.24-.89-1.91-2.39-1.91h-3v3.83Zm12.56-5.8h1.89l5.08 11.63h-2.15L131.41 9H126l-1.19 2.79h-2.08Zm2.91 7-2-4.62-2 4.62Zm13.45-7h2V5h5.51V.2h2v11.55h-2V6.88h-5.51v4.87h-2ZM157.39 6a6 6 0 0 1 12.07 0 5.92 5.92 0 0 1-6.05 6 5.85 5.85 0 0 1-6.02-6Zm9.94 0a4 4 0 0 0-3.92-4.11 3.91 3.91 0 0 0-3.9 4.08V6a3.94 3.94 0 0 0 3.93 4.09A3.88 3.88 0 0 0 167.33 6Zm5.63.84V.2h2v6.56c0 2.15 1.11 3.29 2.92 3.29s2.91-1.08 2.91-3.2V.2h2v6.55c0 3.45-1.95 5.18-5 5.18S173 10.2 173 6.85ZM186 10.06l1.22-1.45a5.35 5.35 0 0 0 3.65 1.5c1.25 0 2.05-.59 2.05-1.45 0-.83-.47-1.27-2.61-1.77-2.46-.59-3.85-1.32-3.85-3.45 0-2 1.65-3.35 3.95-3.35a6.4 6.4 0 0 1 4.19 1.45L193.55 3a5.23 5.23 0 0 0-3.14-1.19c-1.18 0-1.88.61-1.88 1.37 0 .89.53 1.29 2.76 1.82 2.44.59 3.69 1.47 3.69 3.38 0 2.16-1.69 3.45-4.12 3.45a7.11 7.11 0 0 1-4.86-1.77ZM198.61.2h8.56V2h-6.53v3h5.79v1.83h-5.79v3.1h6.62v1.82h-8.65Z\"\n data-name=\"Layer 1\"\n />\n </g>\n </SecondaryLogoWrapper>\n);\n\nexport default SecondaryLogo;\n","import React from 'react';\nimport { SectionSplitterContainer, Splitter } from './SectionSplitter.style';\nimport { GridItem } from '../../atoms/Grid';\nimport { ISectionSplitterProps } from '../../../types/types';\n\nconst SectionSplitter = ({ fullWidth = true }: ISectionSplitterProps) => {\n return (\n <SectionSplitterContainer>\n {fullWidth ? (\n <GridItem columnStartDesktop={1} columnSpanDesktop={16} columnStartDevice={1} columnSpanDevice={14}>\n <Splitter />\n </GridItem>\n ) : (\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={2} columnSpanDevice={12}>\n <Splitter />\n </GridItem>\n )}\n </SectionSplitterContainer>\n );\n};\n\nexport default SectionSplitter;\n","import React from 'react';\nimport SectionTitleWrapper from './SectionTitle.style';\nimport { Grid, GridItem } from '../../atoms/Grid';\nimport { BodyText, Header } from '../../atoms/Typography';\nimport { ISectionTitleProps } from '../../../types/types';\n\nconst SectionTitle = ({ title, size = 'small', description, semanticLevel }: ISectionTitleProps) => {\n const headingLevel = size === 'large' ? 1 : 2;\n return (\n <SectionTitleWrapper>\n <Grid>\n <GridItem columnStartDesktop={3} columnSpanDesktop={12} columnStartDevice={2} columnSpanDevice={12}>\n <Header level={headingLevel} semanticLevel={semanticLevel ?? headingLevel}>\n {title}\n </Header>\n </GridItem>\n {description && (\n <GridItem columnStartDesktop={3} columnSpanDesktop={8} columnStartDevice={2} columnSpanDevice={12}>\n <BodyText level={1} tag=\"div\">\n {description}\n </BodyText>\n </GridItem>\n )}\n </Grid>\n </SectionTitleWrapper>\n );\n};\n\nexport default SectionTitle;\n","import React, { useRef, useState, useEffect } from 'react';\n\nimport { ISelectProps, IOption } from '../../../types/formTypes';\nimport { Wrapper, SelectWrapper, SelectList, Options, Option, ArrowIcon } from './Select.style';\nimport { BodyText } from '../../atoms';\n\ninterface IAccessibilityProps {\n selectRef: React.MutableRefObject<HTMLUListElement | null>;\n optionsRef: React.MutableRefObject<HTMLLIElement[]>;\n shouldHighlightOption: boolean;\n isSelectDisabled: boolean;\n}\n\nconst useKeyboardAccessibility = ({ selectRef, optionsRef, shouldHighlightOption }: IAccessibilityProps) => {\n const [itemToHighlight, setItemToHighlight] = useState<number>(-1);\n\n const clampIndex = (index: number): number => {\n if (index < -1) return -1;\n if (index > optionsRef.current.length - 1) return optionsRef.current.length - 1;\n return index;\n };\n\n const highlightNextOption = () => setItemToHighlight((prev) => clampIndex(prev + 1));\n const highlightPrevOption = () => setItemToHighlight((prev) => clampIndex(prev - 1));\n\n const reset = () => {\n selectRef.current?.blur();\n setItemToHighlight(-1);\n };\n\n const handleKeyUp = (event: KeyboardEvent) => {\n if (!shouldHighlightOption) return undefined;\n\n const shouldHighlightOptionNext = event.key === 'ArrowDown';\n const shouldHighlightOptionPrev = event.key === 'ArrowUp';\n\n if (shouldHighlightOptionNext) return highlightNextOption();\n if (shouldHighlightOptionPrev) return highlightPrevOption();\n\n return undefined;\n };\n\n const preventScrollingWhileNavigating = (event: KeyboardEvent) => {\n if (!shouldHighlightOption) return;\n if (!['ArrowDown', 'ArrowUp'].includes(event.key)) return;\n\n event.preventDefault();\n };\n\n const handleHighlighted: (cb: (index: number) => void) => React.KeyboardEventHandler<typeof selectRef.current> =\n (cb) => (event) => {\n if (itemToHighlight === -1) return;\n if (event.key !== 'Enter') return;\n\n cb(itemToHighlight);\n reset();\n };\n\n useEffect(() => {\n if (shouldHighlightOption) return;\n reset();\n }, [shouldHighlightOption]);\n\n return { handleKeyUp, preventScrollingWhileNavigating, handleHighlighted, itemToHighlight };\n};\n\nconst useVisualAccessibility = ({ selectRef, isSelectDisabled }: IAccessibilityProps) => {\n const addFocusClass = () => {\n selectRef.current?.classList.add('focus');\n };\n const removeFocusClass = () => {\n selectRef.current?.classList.remove('focus');\n };\n const toggleFocus = () => {\n if (selectRef.current?.classList.contains('focus')) removeFocusClass();\n else addFocusClass();\n };\n\n const withClickAwayHandler = (cb: () => void) => (event: MouseEvent) => {\n if (!selectRef.current) return;\n if (selectRef.current.contains(event.target as Node)) return;\n\n removeFocusClass();\n cb();\n };\n\n useEffect(() => {\n if (!selectRef.current) return;\n\n if (isSelectDisabled) {\n selectRef.current.classList.add('disabled');\n } else selectRef.current.classList.remove('disabled');\n }, [isSelectDisabled]);\n\n return { withClickAwayHandler, toggleFocus, addFocusClass, removeFocusClass };\n};\n\nconst useAccessibility = (props: IAccessibilityProps) => {\n const { selectRef } = props;\n\n const { handleKeyUp, preventScrollingWhileNavigating, handleHighlighted, itemToHighlight } =\n useKeyboardAccessibility(props);\n const { addFocusClass, removeFocusClass, toggleFocus, withClickAwayHandler } = useVisualAccessibility(props);\n\n useEffect(() => {\n if (!selectRef.current) return undefined;\n\n selectRef.current.addEventListener('keydown', preventScrollingWhileNavigating);\n selectRef.current.addEventListener('keyup', handleKeyUp);\n selectRef.current.addEventListener('click', toggleFocus);\n selectRef.current.addEventListener('focus', addFocusClass);\n selectRef.current.addEventListener('blur', removeFocusClass);\n return () => {\n selectRef.current?.removeEventListener('keydown', preventScrollingWhileNavigating);\n selectRef.current?.removeEventListener('keyup', handleKeyUp);\n selectRef.current?.removeEventListener('click', toggleFocus);\n selectRef.current?.removeEventListener('focus', addFocusClass);\n selectRef.current?.removeEventListener('blur', removeFocusClass);\n };\n });\n\n return { withClickAwayHandler, handleHighlighted, itemToHighlight };\n};\n\n/**\n * DEPRECATED. Use Select2 instead.\n * A select component, created using <ul> and <li> elements, with bespoke accessibility\n * logic.\n *\n * # Usage\n * ## Defining a component that uses a typical Select element\n * ```tsx\n * const MyComponent = () => {\n * const handleSelect = (value: number, text: string) => {\n * console.log(\"Selected\", value);\n * };\n *\n * return <>\n * <Select\n * label=\"This is a label\"\n * options={[\n * { text: \"Option 1\", value: 1 },\n * { text: \"Option 2\", value: 2 },\n * ]}\n * onSelect={handleSelect}\n * />\n * </>\n * }\n * ```\n *\n * ## Defining a component that uses a disabled Select element\n * ```tsx\n * const MyComponent = () => {\n * const handleSelect = (value: number, text: string) => {\n * console.log(\"Selected\", value);\n * };\n *\n * return <>\n * <Select\n * disabled // Select component disabled explicitely\n * label=\"This is a label\"\n * options={[\n * { text: \"Option 1\", value: 1 },\n * { text: \"Option 2\", value: 2 },\n * ]}\n * onSelect={handleSelect}\n * />\n * <Select\n * label=\"This is a label\"\n * options={[]} // Select component disabled implicitely by passing an empty array of options\n * onSelect={handleSelect}\n * />\n * </>\n * }\n * ```\n *\n * ## Defining a component with a non-labelled Select element\n * ```tsx\n * const MyComponent = () => {\n * const handleSelect = (value: number, text: string) => {\n * console.log(\"Selected\", value);\n * };\n *\n * return <>\n * <Select\n * label=\"\"\n * options={[\n * { text: \"Option 1\", value: 1 },\n * { text: \"Option 2\", value: 2 },\n * ]}\n * onSelect={handleSelect}\n * />\n * </>\n * }\n * ```\n *\n * ## Changing the dimensions of a Select element (px)\n * ```tsx\n * const MyComponent = () => {\n * const handleSelect = (value: number, text: string) => {\n * console.log(\"Selected\", value);\n * };\n *\n * const selectWidthPx = 100;\n * const selectHeightPx = 27;\n *\n * return <>\n * <Select\n * label=\"This is a label\"\n * options={[\n * { text: \"Option 1\", value: 1 },\n * { text: \"Option 2\", value: 2 },\n * ]}\n * onSelect={handleSelect}\n * width={selectWidthPx}\n * height={selectHeightPx}\n * />\n * </>\n * }\n * ```\n */\nfunction Select<T>({\n label,\n options,\n onSelect,\n disabled = false,\n resetWhenOptionsUpdate = false,\n width = 'default',\n height = 'default',\n}: ISelectProps<T>) {\n const selectRef = useRef<HTMLUListElement>(null);\n const optionsRef = useRef<HTMLLIElement[]>([]);\n\n const [selectedValue, setSelectedValue] = useState<IOption<T> | null>(null);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n\n const isDisabled = disabled || options.length === 0;\n\n const { withClickAwayHandler, handleHighlighted, itemToHighlight } = useAccessibility({\n selectRef,\n optionsRef,\n shouldHighlightOption: isOpen,\n isSelectDisabled: isDisabled,\n });\n\n const openSelect = () => setIsOpen(true);\n const closeSelect = () => setIsOpen(false);\n const toggleSelect = () => setIsOpen((prev) => !prev);\n\n const closeSelectOnBlur = withClickAwayHandler(closeSelect);\n\n const handleOptionSelection = (index: number) => {\n const option = options[index];\n\n setSelectedValue(option);\n onSelect(option.value, option.text);\n };\n\n useEffect(() => {\n document.addEventListener('click', closeSelectOnBlur, false);\n return () => {\n document.removeEventListener('click', closeSelectOnBlur, false);\n };\n }, []);\n\n useEffect(() => {\n if (!resetWhenOptionsUpdate) return;\n if (options.length === 0) {\n setSelectedValue(null);\n return;\n }\n\n setSelectedValue(options[0]);\n }, [options, resetWhenOptionsUpdate]);\n\n return (\n <Wrapper>\n {label !== '' && (\n <BodyText level={1} tag=\"p\" data-testid=\"select-label\">\n {label}\n </BodyText>\n )}\n <SelectList\n id=\"select\"\n ref={selectRef}\n onClick={toggleSelect}\n onFocus={openSelect}\n onBlur={closeSelect}\n onMouseDown={(e) => e.preventDefault()}\n onKeyUp={handleHighlighted(handleOptionSelection)}\n width={width}\n height={height}\n role=\"listbox\"\n tabIndex={0}\n aria-labelledby={label}\n aria-disabled={isDisabled}\n data-testid=\"select\"\n >\n <SelectWrapper>\n <BodyText level={1} tag=\"p\" data-testid=\"selected-value\">\n {selectedValue?.text ?? options[0]?.text ?? ''}\n </BodyText>\n {isOpen && (\n <Options data-testid=\"options\">\n {options.map((option, index) => (\n <Option\n ref={(element) => {\n if (!element || optionsRef.current.length === options.length) return;\n optionsRef.current.push(element);\n }}\n role=\"option\"\n tabIndex={index + 1}\n hover={index === itemToHighlight}\n key={option.text}\n onClick={() => handleOptionSelection(index)}\n >\n <BodyText level={1} tag=\"p\">\n {option.text}\n </BodyText>\n </Option>\n ))}\n </Options>\n )}\n </SelectWrapper>\n <ArrowIcon />\n </SelectList>\n </Wrapper>\n );\n}\n\nexport default Select;\n","import React, { FunctionComponent } from 'react';\nimport Select from 'react-select/async';\n\nimport { ISelect2AsyncProps } from '../../../types/formTypes';\nimport { WrapperComponent, DropdownIndicator } from '../Select2/Select2';\n\n/**\n * The Select2Async component is similar to Select 2, but uses react-select async\n * component for select instead of regular react-select component. This can be used\n * for selects with dynamically loaded options, live search components etc.\n *\n * # Error state\n * An error label will be shown below the select if the `error` prop exists.\n * Also select will be rendered with a red border. An empty string can be passed to\n * render only error state without error message.\n *\n * # Light / Dark mode\n * The component can also adapt its styles for light / dark mode. If you want this component\n * to be rendered on a dark / coloured background, you can use the `darkMode` prop.\n */\nconst SelectComponent: FunctionComponent<ISelect2AsyncProps> = ({\n label,\n error,\n width,\n darkMode = false,\n components,\n ...selectProps\n}) => {\n return (\n <WrapperComponent label={label} error={error} width={width} darkMode={darkMode}>\n <Select\n {...selectProps}\n components={{\n DropdownIndicator,\n LoadingIndicator: undefined,\n IndicatorSeparator: undefined,\n ...components,\n }}\n className=\"harmonic-select-container\"\n classNamePrefix=\"harmonic-select\"\n />\n </WrapperComponent>\n );\n};\n\nexport default SelectComponent;\n","/* eslint-disable react/no-danger */\nimport React, { FunctionComponent, useRef, useState } from 'react';\nimport { INodeProps, IStatusBannerProps } from '../../../types/types';\nimport SvgIcon from '../../atoms/Icons/Icons';\nimport { ContentContainer, StatusBannerWrapper, SvgContainer } from './StatusBanner.style';\n\nconst StatusBanner: FunctionComponent<IStatusBannerProps> = ({ statusText, visibility = true }) => {\n const [isVisible, setIsVisible] = useState<boolean>(visibility);\n const [isClosing, setIsClosing] = useState<boolean>(false);\n\n const content: INodeProps = useRef<HTMLDivElement>(null);\n\n const handleCloseBanner = () => {\n setIsClosing(true);\n\n const transitionEnd = () => {\n setIsVisible(!visibility);\n if (content.current) {\n content.current.removeEventListener('transitionend', transitionEnd);\n }\n };\n\n if (content.current) {\n content.current.addEventListener('transitionend', transitionEnd);\n }\n\n setTimeout(() => {\n setIsVisible(!visibility);\n }, 300);\n };\n\n const onKeyboardCloseHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n handleCloseBanner();\n }\n };\n\n if (isVisible) {\n return (\n <StatusBannerWrapper role=\"alert\" className={isClosing ? 'closing' : ''} data-testid=\"statusContainer\">\n <ContentContainer>\n <div dangerouslySetInnerHTML={{ __html: statusText }} />\n </ContentContainer>\n <SvgContainer\n onClick={handleCloseBanner}\n tabIndex={0}\n role=\"button\"\n aria-label=\"Close\"\n onKeyDown={onKeyboardCloseHandler}\n >\n <SvgIcon iconName=\"Close\" />\n </SvgContainer>\n </StatusBannerWrapper>\n );\n }\n\n return null;\n};\n\nexport default StatusBanner;\n","/* eslint-disable no-extra-boolean-cast */\n/* eslint-disable radix */\n/* eslint-disable jsx-a11y/label-has-for */\n/* eslint-disable jsx-a11y/label-has-associated-control */\nimport React, { ReactElement, useState } from 'react';\nimport { StepperBox, StepperButton, StepperError, StepperValue, StepperWrapper } from './Stepper.style';\nimport { IStepperProps } from '../../../types/formTypes';\nimport { Icon } from '../Icons';\nimport { AltHeader } from '../Typography';\n\n/**\n * A harmonic Stepper component, used similarly to an HTML input type number.\n *\n * The buttons are clickable but not keyboard focusable\n *\n * An `initialValue`, the `step` to increase / decrease by, `min`\n * and `max` values can all be provided, but are optional, with defaults.\n *\n * The displayed value can be controlled by:\n *\n * - Entering a value in to the central input area (both mouse and keyboard-focusable)\n *\n * - Clicking the buttons on either side (mouse only)\n *\n * - Keyboard-focusing the stepper box and using the arrow keys\n *\n * In all cases the value will be clamped between min and max values.\n *\n * The maximum width of the component is 4 characters, meaning 3 digits with a\n * sign, or 4 without.\n *\n * Optional `plusAction` and `minusAction` functions can be provided and will be\n * called on click of the corresponding buttons.\n *\n * The component will display an `error` string beneath the stepper box, if present.\n *\n * Styles are provided for the `disabled` state and for display on dark or\n * coloured backgrounds, using the `darkMode` boolean.\n *\n * Finally, an `accessibleName` string can be provided. Although optional,\n * it's a very good idea to include this so that users of screen-readers\n * know what they are actually controlling.\n *\n * Example:\n *\n * ```tsx\n * import { Stepper } from '@royaloperahouse/harmonic'\n *\n * <div>\n * <p>How How many seas must a white dove sail before she sleeps in the sand?</p>\n * <Stepper\n * initialValue={12}\n * step={2}\n * min={-8}\n * max={667}\n * plusAction={() => {console.log('More seas')}}\n * minusAction={() => {console.log('Fewer seas')}}\n * darkMode={false}\n * disabled={false}\n * error=\"Something went wrong!\"\n * accessibleName=\"Number of seas\"\n * />\n * </div>\n */\n\nexport const Component = ({\n initialValue = 1,\n step = 1,\n min = -999,\n max = 1000,\n minusAction,\n plusAction,\n darkMode,\n error,\n disabled,\n accessibleName,\n}: IStepperProps): ReactElement => {\n const [displayValue, setDisplayValue] = useState<string>(initialValue.toString());\n\n const validInput = /^-?\\d+?$/;\n\n const clampValue = (val: number | string, minValue: number, maxValue: number): number =>\n Math.min(Math.max(+val, minValue), maxValue);\n\n const parseSigned = (input: string): string => {\n return input.startsWith('0') ? '-' : `-${input.slice(0, input.length - 1)}`;\n };\n\n const zeroSoloSign = (input: string): string => {\n return input === '-' ? '0' : input;\n };\n\n const decrement = () => {\n if (disabled) return;\n\n setDisplayValue(clampValue(+zeroSoloSign(displayValue) - step, min, max).toString());\n\n if (minusAction) minusAction();\n };\n\n const increment = () => {\n if (disabled) return;\n\n setDisplayValue(clampValue(+zeroSoloSign(displayValue) + step, min, max).toString());\n\n if (plusAction) plusAction();\n };\n\n const setMinimumValue = () => {\n setDisplayValue(min.toString());\n\n if (minusAction) minusAction();\n };\n\n const setMaximumValue = () => {\n setDisplayValue(max.toString());\n\n if (plusAction) plusAction();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n increment();\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n decrement();\n break;\n case 'Home':\n setMinimumValue();\n break;\n case 'End':\n setMaximumValue();\n break;\n default:\n break;\n }\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const input = event.target.value;\n\n if (input.endsWith('-')) {\n setDisplayValue(parseSigned(input));\n\n return;\n }\n\n const val = !!event.target.value ? event.target.value : '0';\n\n if (val.match(validInput)) {\n setDisplayValue(clampValue(val, min, max).toString());\n }\n };\n\n return (\n <StepperWrapper data-testid=\"stepper-wrapper\">\n <StepperBox\n role=\"spinbutton\"\n aria-valuenow={parseInt(displayValue)}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-labelledby={accessibleName}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n error={error}\n darkMode={darkMode}\n disabled={disabled}\n data-testid=\"stepper-box\"\n >\n <StepperButton onClick={decrement} disabled={disabled} data-testid=\"left-stepper-button\">\n <Icon iconName=\"Detract\" />\n </StepperButton>\n <label>\n <StepperValue\n disabled={disabled}\n aria-disabled={disabled}\n maxLength={4}\n onChange={handleInputChange}\n value={displayValue}\n data-testid=\"stepper-value\"\n />\n </label>\n <StepperButton onClick={increment} disabled={disabled} data-testid=\"right-stepper-button\">\n <Icon iconName=\"Expand\" />\n </StepperButton>\n </StepperBox>\n {error && (\n <StepperError darkMode={darkMode} data-testid=\"stepper-error\">\n <AltHeader level={6}>{error}</AltHeader>\n </StepperError>\n )}\n </StepperWrapper>\n );\n};\n\nexport default Component;\n","import React, { FunctionComponent } from 'react';\nimport { IStickyBarProps } from '../../../types/navigation';\nimport { GridItem } from '../../atoms/Grid';\nimport { StickyBarGrid, StickyBarWrapper } from './StickyBar.style';\n\nconst StickyBar: FunctionComponent<IStickyBarProps> = ({\n columnStartDesktop = 3,\n columnSpanDesktop = 8,\n columnStartDevice = 2,\n columnSpanDevice = 12,\n hideBottomBorder,\n children,\n}) => {\n return (\n <StickyBarWrapper data-testid=\"sticky-bar-block\">\n <StickyBarGrid hideBottomBorder={hideBottomBorder ?? false}>\n <GridItem\n columnStartDesktop={columnStartDesktop}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={columnStartDevice}\n columnSpanDevice={columnSpanDevice}\n >\n {children}\n </GridItem>\n </StickyBarGrid>\n </StickyBarWrapper>\n );\n};\n\nexport default StickyBar;\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { FunctionComponent, useLayoutEffect, useRef, useState } from 'react';\nimport { Colors } from '../../../types/types';\nimport {\n TableContainer,\n TableHeader,\n Pagination,\n PageNumber,\n Next,\n Container,\n ScrollButtons,\n Wrapper,\n AriaDescription,\n} from './Table.style';\nimport { Row } from './components/TableRow';\nimport { scrollTable, Content } from './components/TableHelpers';\nimport { reducePages } from '../Pagination/Pagination';\nimport { Icon, RotatorButtons } from '../../atoms';\nimport { MorePages } from '../Pagination/Pagination.style';\nimport { ITableProps } from '../../../types/tableTypes';\n\nconst Table: FunctionComponent<ITableProps> = ({\n columns,\n headings,\n children,\n lineColors,\n rowsPerPage,\n pagination,\n description,\n}) => {\n const [currentPage, setCurrentPage] = useState(0);\n const [showScrollButtons, setShowScrollButtons] = useState(false);\n\n const lineColor = lineColors ?? Colors.Cinema;\n const tableRef = useRef<HTMLTableElement>(null);\n\n useLayoutEffect(() => {\n const horizontalScroll = () => {\n if (tableRef.current) {\n setShowScrollButtons(tableRef.current.scrollWidth > tableRef.current.clientWidth);\n }\n };\n\n horizontalScroll();\n window.addEventListener('resize', horizontalScroll);\n return () => window.removeEventListener('resize', horizontalScroll);\n }, []);\n\n const totalRows = Array.isArray(children) ? children.length + 1 : 1;\n const totalPages = pagination ? Math.ceil(totalRows / rowsPerPage) : 1;\n const pageNumbers = Array.from({ length: totalPages }, (_, i) => i);\n const reducedPageNumbers = reducePages(pageNumbers, currentPage);\n\n let currentRows;\n if (pagination) {\n if (Array.isArray(children)) {\n currentRows = children.slice(currentPage * rowsPerPage, (currentPage + 1) * rowsPerPage);\n } else {\n currentRows = [];\n }\n } else {\n currentRows = children;\n }\n\n let visibleRows;\n if (pagination) {\n visibleRows = Array.isArray(currentRows) ? currentRows.length + 1 : 0;\n } else {\n visibleRows = totalRows;\n }\n\n return (\n <Wrapper>\n {showScrollButtons && (\n <ScrollButtons>\n <RotatorButtons\n onClickPrev={() => scrollTable(tableRef, 'left')}\n onClickNext={() => scrollTable(tableRef, 'right')}\n />\n </ScrollButtons>\n )}\n <Container role=\"table\" tabIndex={0} ref={tableRef} aria-rowcount={totalRows} aria-colcount={columns}>\n <AriaDescription id=\"table-description\">\n {description} visible rows: {visibleRows}\n </AriaDescription>\n <TableContainer>\n <thead>\n {' '}\n {/* INFO - this row contains the header cells */}\n <tr role=\"columnheader\">\n {headings?.map((heading, index) => (\n <TableHeader key={index} role=\"columnheader\" scope=\"col\" columns={columns} lineColor={lineColor}>\n <Content content={heading} />\n </TableHeader>\n ))}\n </tr>\n </thead>\n\n <tbody>\n {' '}\n {/* INFO - this row contains the data cells */}\n {Array.isArray(currentRows) &&\n currentRows.map((row, rowIndex) => (\n <Row key={rowIndex} row={row} rowIndex={rowIndex} columns={columns} lineColor={lineColor} />\n ))}\n </tbody>\n </TableContainer>\n\n {/* Optional pagination */}\n\n {pagination && totalPages > 1 && (\n <>\n <AriaDescription id=\"pagination-description\">\n Table pagination: current page {currentPage + 1} of {totalPages}\n </AriaDescription>\n\n <Pagination>\n {currentPage > 0 && (\n <li>\n <PageNumber\n key=\"previous-page\"\n onClick={() => setCurrentPage(currentPage - 1)}\n tabIndex={0}\n aria-label=\"Previous page\"\n >\n <Next>\n <Icon iconName=\"DropdownArrow\" direction=\"down\" />\n </Next>\n </PageNumber>\n </li>\n )}\n {currentPage > 2 && (\n <li>\n <PageNumber key=\"more-before\">\n <MorePages>...</MorePages>\n </PageNumber>\n </li>\n )}\n {reducedPageNumbers.map((number) => (\n <li key={number}>\n <PageNumber\n key={number}\n onClick={() => setCurrentPage(number)}\n tabIndex={0}\n active={`${number === currentPage}`}\n >\n {number + 1}\n </PageNumber>\n </li>\n ))}\n {currentPage + 4 < totalPages && (\n <li>\n <PageNumber key=\"more-after\">\n <MorePages>...</MorePages>\n </PageNumber>\n </li>\n )}\n {currentPage < totalPages - 1 && (\n <li>\n <PageNumber\n key=\"next-page\"\n onClick={() => setCurrentPage(currentPage + 1)}\n tabIndex={0}\n aria-label=\"Next page\"\n >\n <Next>\n <Icon iconName=\"DropdownArrow\" direction=\"up\" />\n </Next>\n </PageNumber>\n </li>\n )}\n </Pagination>\n </>\n )}\n </Container>\n </Wrapper>\n );\n};\n\nexport default Table;\n","import React from 'react';\nimport { TextAreaBox, TextAreaError, TextAreaLabel, TextAreaWrapper } from './TextArea.style';\nimport { ITextAreaProps } from '../../../types/formTypes';\nimport { AltHeader } from '../Typography';\nimport { GridItem } from '../Grid';\n\n/**\n * An HTML textarea component for Harmonic.\n *\n * Control the height and width of the component with `height` and `width`.\n *\n * The TextArea can also be used as the direct child of a\n * Harmonic Grid component, in which case you can control the width and\n * horizontal position by specifying GridItem props.\n *\n * If a fixed pixel width is specified it will take precedence over the\n * column span on Desktop.\n *\n * Example using width:\n *\n * ```tsx\n * <TextArea\n * label='My Text Area'\n * error={myError}\n * height={100}\n * width={300}\n * darkMode={true}\n * />\n * ```\n *\n * Example of use as a GridItem:\n *\n * ```tsx\n * import {Grid, TextArea} from '@royaloperahouse/harmonic';\n *\n * <Grid>\n * <TextArea\n * label='My Text Area'\n * error={myError}\n * darkMode={false}\n * height={250}\n * columnStartDesktop={2}\n * columnSpanDesktop={7}\n * />\n * </Grid>\n * ```\n */\n\nconst TextArea = ({\n label,\n error,\n width,\n darkMode,\n height = 200,\n columnStartDesktop = 1,\n columnStartDevice = 1,\n columnSpanDesktop = 16,\n columnSpanDevice = 14,\n maxLength = 950,\n tabIndex = 0,\n ...textareaProps\n}: ITextAreaProps) => {\n return (\n <GridItem\n columnStartDesktop={columnStartDesktop}\n columnSpanDesktop={columnSpanDesktop}\n columnStartDevice={columnStartDevice}\n columnSpanDevice={columnSpanDevice}\n >\n <TextAreaWrapper width={width} height={height}>\n <TextAreaLabel darkMode={darkMode} data-testid=\"text-area-label\">\n <AltHeader level={6}>{label}</AltHeader>\n </TextAreaLabel>\n <TextAreaBox error={error} darkMode={darkMode} maxLength={maxLength} tabIndex={tabIndex} {...textareaProps} />\n {error && (\n <TextAreaError darkMode={darkMode} data-testid=\"text-area-error\">\n <AltHeader level={6}>{error}</AltHeader>\n </TextAreaError>\n )}\n </TextAreaWrapper>\n </GridItem>\n );\n};\n\nexport default TextArea;\n","import React from 'react';\n\nimport { TextFieldContainer, Input, TextLabel, ErrorLabel } from './TextFieldLegacy.style';\n\nimport { ITextFieldProps } from '../../../types/formTypes';\n\n/**\n * @deprecated\n *\n * # IMPORTANT\n * Please use the `<TextField />` component instead of this component if possible.\n * This component was introduced due to incompatibilities between versions of the Harmonic library.\n * */\nconst TextFieldLegacy = ({ label, error, darkMode = false, width, ...inputProps }: ITextFieldProps) => {\n return (\n <TextFieldContainer>\n <label htmlFor=\"text-field-input\">\n <TextLabel darkMode={darkMode} data-testid=\"text-field-text-label\">\n {label}\n </TextLabel>\n <Input\n id=\"text-field-input\"\n type=\"text\"\n error={error}\n darkMode={darkMode}\n data-testid=\"text-field-input\"\n width={width}\n {...inputProps}\n />\n </label>\n {error ? (\n <ErrorLabel darkMode={darkMode} data-testid=\"text-field-error-label\">\n {error}\n </ErrorLabel>\n ) : null}\n </TextFieldContainer>\n );\n};\n\nexport default TextFieldLegacy;\n","import React, { useState, useEffect, FunctionComponent } from 'react';\nimport { AltHeader, BodyText } from '../Typography';\nimport { Icon } from '../Icons';\nimport { TickboxLabel, TickboxInput, TickboxCheckmark, TickboxError } from './Tickbox.style';\nimport { ITickboxProps, TickboxMode } from '../../../types/tickbox';\n\n/**\n * DEPRECATED. Use Tickbox2 instead\n */\nconst Tickbox: FunctionComponent<ITickboxProps> = ({\n children,\n onChange,\n error,\n dataLabel,\n mode = 'light',\n whiteBox = false,\n checked = false,\n disabled = false,\n}) => {\n const [selected, setSelected] = useState<boolean>(checked);\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!disabled) {\n const { checked: inputChecked } = e.target;\n setSelected(inputChecked);\n onChange?.(inputChecked);\n }\n };\n\n useEffect(() => {\n setSelected(checked);\n }, [checked]);\n\n const spaceButtonHandler = (e: React.KeyboardEvent<HTMLLabelElement>) => {\n if (e.key === 'Space' || (e.key === ' ' && !disabled)) {\n setSelected(!selected);\n onChange?.(!selected);\n }\n };\n\n const isDarkMode: boolean = mode === TickboxMode.Dark;\n return (\n <TickboxLabel\n tabIndex={0}\n onKeyPress={spaceButtonHandler}\n dark={isDarkMode}\n disabled={disabled}\n data-testid=\"tickbox\"\n role=\"checkbox\"\n aria-checked={selected ? 'true' : 'false'}\n aria-labelledby={dataLabel}\n >\n <BodyText level={1} tag=\"span\">\n {children}\n </BodyText>\n <TickboxInput\n type=\"checkbox\"\n checked={selected}\n onChange={onInputChange}\n dark={isDarkMode}\n aria-labelledby={dataLabel}\n whiteBox={whiteBox}\n aria-checked={selected ? 'true' : 'false'}\n disabled={disabled}\n />\n <TickboxCheckmark dark={isDarkMode} disabled={disabled} error={error !== undefined}>\n <Icon iconName=\"Tick\" />\n </TickboxCheckmark>\n {error && error.length > 0 && (\n <TickboxError dark={isDarkMode}>\n <AltHeader level={6}>{error}</AltHeader>\n </TickboxError>\n )}\n </TickboxLabel>\n );\n};\n\nexport default Tickbox;\n","import React, { FunctionComponent } from 'react';\nimport { ITitleCTAProps } from '../../../types/navigation';\nimport { Header, AltHeader } from '../../atoms/Typography';\nimport { PrimaryButton } from '../../atoms/Buttons';\nimport {\n TitleCTAGrid,\n TitleCTAGridItem,\n TitleCTAGridWrapper,\n AnchorTitle,\n ButtonsDesktopWrapper,\n ButtonsMobileWrapper,\n PrimaryButtonReverse,\n MessageWrapper,\n MessageWrapperMobile,\n} from './TitleWithCTA.style';\n\nconst TitleWithCTA: FunctionComponent<ITitleCTAProps> = ({ title, links, sticky = false, message }) => {\n const { text: primaryButtonText, ...primaryButtonProps } = links?.[0] || {};\n const { text: secondaryButtonText, ...secondaryButtonProps } = links?.[1] || {};\n\n return (\n <TitleCTAGridWrapper sticky={sticky}>\n <TitleCTAGrid>\n <TitleCTAGridItem title={title}>\n {title ? (\n <AnchorTitle data-testid=\"anchor-title\">\n <Header level={5}>{title}</Header>\n </AnchorTitle>\n ) : null}\n {links?.[0] ? (\n <ButtonsDesktopWrapper data-testid=\"anchor-ctas\">\n <PrimaryButton {...primaryButtonProps}>{primaryButtonText}</PrimaryButton>\n {links?.[1] ? (\n <PrimaryButtonReverse {...secondaryButtonProps}>{secondaryButtonText}</PrimaryButtonReverse>\n ) : null}\n </ButtonsDesktopWrapper>\n ) : (\n message && (\n <MessageWrapper>\n <AltHeader level={6}>{message}</AltHeader>\n </MessageWrapper>\n )\n )}\n </TitleCTAGridItem>\n </TitleCTAGrid>\n {links?.[0] ? (\n <ButtonsMobileWrapper>\n <PrimaryButton {...primaryButtonProps}>{primaryButtonText}</PrimaryButton>\n </ButtonsMobileWrapper>\n ) : (\n message && (\n <MessageWrapperMobile>\n <AltHeader level={6}>{message}</AltHeader>\n </MessageWrapperMobile>\n )\n )}\n </TitleCTAGridWrapper>\n );\n};\n\nexport default TitleWithCTA;\n","import React, { FunctionComponent } from 'react';\nimport UpsellCards from '../../molecules/UpsellCards';\nimport { AltHeader, Grid, GridItem, TextLink } from '../../atoms';\nimport { UpsellBorderBox, TitleContainer, TextContainer } from './UpsellSection.style';\nimport { TextOnly } from '../../molecules';\nimport { IUpsellSectionProps } from '../../../types/upsell';\nimport { ThemeType } from '../../../types';\nimport { ThemeProvider } from '../..';\n\nconst UpsellSection: FunctionComponent<IUpsellSectionProps> = ({\n title,\n richText,\n link,\n upsellCards,\n theme = ThemeType.Core,\n}) => {\n const themedUpsellCards = upsellCards\n ? [...upsellCards].map((card) => ({\n ...card,\n theme: card.theme || theme,\n }))\n : [];\n\n return (\n <ThemeProvider theme={theme}>\n <Grid>\n <GridItem\n columnStartDesktop={3}\n columnSpanDesktop={12}\n columnStartDevice={2}\n columnSpanDevice={12}\n columnStartSmallDevice={1}\n columnSpanSmallDevice={14}\n >\n <UpsellBorderBox>\n <TitleContainer>\n <AltHeader level={4}>{title}</AltHeader>\n </TitleContainer>\n <TextContainer>\n <TextOnly\n text={richText ?? ''}\n columnStartDesktop={1}\n columnSpanDesktop={14}\n columnStartDevice={1}\n columnSpanDevice={14}\n />\n {link && <TextLink href={link.href}>{link.text}</TextLink>}\n </TextContainer>\n <UpsellCards upsellCards={themedUpsellCards} />\n </UpsellBorderBox>\n </GridItem>\n </Grid>\n </ThemeProvider>\n );\n};\n\nexport default UpsellSection;\n"],"names":["css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Colors","ThemeType","LinkTarget","colors","core","stream","cinema","commonColors","black","white","darkgrey","midgrey","lightgrey","error","medium","good","progress","navigation","lemonChiffon","lapisLazuli","blue","red","fontFamilies","adobeGaramondPro","adobeGaramondProItalics","gothamSSmMedium","gothamSSm","sabonNextLTProRegular","sabonNextLTProRegularItalics","sansSerifFallback","common","fonts","desktop","sizes","headers","1","2","3","4","5","6","altHeaders","subtitles","titleDescription","body","listing","buttons","overline","search","letterSpacing","lineHeights","peopleListing","families","bodyItalics","listingItalics","peopleListingRole","weights","transforms","fontFeatureSettings","wordBreak","margins","mobile","tablet","spacing","7","8","9","10","12","15","18","20","30","35","40","45","50","grid","margin","outerMargin","gap","paddingX","paddingY","paddingYIcon","iconWidth","iconHeight","iconMargin","footer","height","paddingTop","paddingBottom","itemsGap","mediaGap","mediaIconWidth","mediaIconHeight","verticalSpacingLarge","verticalSpacingSmall","_extends","primary","primaryButton","secondaryButton","tertiaryButton","auxiliaryButton","primaryButtonReverseBg","primaryButtonReverse","themes","schools","Directions","left","right","up","down","reverse","Wrapper","styled","span","_templateObject","_taggedTemplateLiteralLoose","_ref","_ref$direction","direction","_ref2","color","IconLibrary","AddToMyList","_ref$color","React","width","viewBox","fill","xmlns","ariaLabel","d","Arrow","AudioDescription","Back10","BalletAndDance","Basket","BasketFull","BookTickets","CarouselArrow","ChooseDates","Cinema","Clips","Clock","Close","Confirm","CreditCard","Delete","Detract","DropdownArrow","EditMyList","Email","Expand","Expand12px","ExternalLink","Facebook","Favourite","FavouriteFull","Filter","FindAScreening","Forward10","FullScreen","GridView","Home","Info","Instagram","List","ListView","LiveStream","Location","Menu","Minimise","Muted","OnMyList","OperaAndMusic","Pause","PDF","Phone","Play","Print","Refresh","Reminder","Remove","Remove12px","Restart","Search","Seat","Secure","Settings","Shift","Space","Standing","Star","Subscribe","Subtitles","Tick","Tickets","Tiktok","Trailer","Twitter","User","UserSignedIn","Volume","Watch","Wheelchair","X","Youtube","Icon","className","title","iconName","displayName","CarouselType","AspectRatio","AspectRatioLegacy","AspectRatioWidth","TickboxMode","ButtonType","IInformationCtaVariant","IInformationCtaTheme","IInformationTitleVariant","IInformationBackgroundColour","BadgeWrapper","svg","fillColor","StreamBadge","_ref$fillColor","White","_ref$align","align","_ref$invert","invert","colour","Black","role","points","CinemaBadge","breakpoints","xs","sm","md","ml","lg","devices","smallMobile","mobileAndTablet","smallDesktop","largeDesktop","ButtonWrapper","a","ButtonIconWrapper","Button","children","iconDirection","iconClassName","rest","_objectWithoutPropertiesLoose","_excluded","truncatedString","substring","PrimaryButtonWrapper","_theme$colors","bgColor","theme","_theme$colors2","_ref3","disabled","AriaDescription","_templateObject2","PrimaryButton","props","id","MidGrey","SecondaryButton","SecondaryButtonWrapper","Primary","TertiaryButtonWrapper","TertiaryIconWrapper","zIndexes","forEach","name","index","TextLogoProduct","TabContainer","div","OptionItem","colorPrimary","OptionsContainer","_templateObject3","menu","withIcon","withOptionsInMobile","ControlledDropdownWrapper","ControlledDropdownHeaderContainer","activeColor","active","ControlledDropdownHeaderContainerLink","attrs","as","IconWrapper","_templateObject4","ControlledDropdown","text","options","_ref$activeColor","onClick","onOptionClick","onMouseEnter","onMouseLeave","onReset","onFocus","onBlur","useRef","resetHandler","useCallback","useEffect","window","innerWidth","mouseClickHandler","e","_ref$current","current","contains","target","addEventListener","removeEventListener","isDropdown","length","headerEvents","onMouseDown","preventDefault","onKeyDown","key","tabIndex","map","optionItem","option","optionLink","link","handleOptionKeyDown","href","Grid","GridItem","columnStartDesktop","_ref2$columnSpanDeskt","columnSpanDesktop","columnStartSmallDevice","columnStartDevice","_ref4","_ref4$columnSpanDevic","columnSpanDevice","columnSpanSmallDevice","_ref5","_ref6","_ref6$columnSpanDevic","ImageAspectRatioWrapper","_ref$aspectRatio","aspectRatio","_ref2$aspectRatio","_ref3$aspectRatio","_ref4$aspectRatio","ProgressView","ElapsedProgressView","isProgressWithSteps","PendingProgressView","_ref7","StepsWrapper","StepWrapper","_templateObject5","_ref8","isVisible","_ref9","isActive","Progress","_ref$height","pendingLineColor","steps","stepsQuantity","quantity","currentStep","progressValue","_ref$progress","elapsedLineColor","Array","from","_","step","RadioContainer","RadioLine","RadioError","typography","level","_ref10","_ref11","_ref12","_ref13","_ref14","StyledTag","tag","AltHeader","semanticLevel","BodyText","_ref3$tag","Header","Overline","_ref5$tag","Subtitle","_ref6$tag","Radio","checked","_ref$checked","label","onChange","_useState","useState","isChecked","setChecked","handleRadioChange","onKeyPress","event","readOnly","Container","undefined","darkMode","blackBox","TickboxLabel","RadioIcon","TextLabel","ErrorLabel","_templateObject6","Radio2","forwardRef","_ref$disabled","_ref$darkMode","_ref$blackBox","inputProps","ButtonsContainer","IconUnavailableWrapper","RotatorButtons","onClickPrev","onClickNext","_ref$availablePrev","availablePrev","_ref$availableNext","availableNext","onClickLeftHandler","onClickRightHandler","renderPrevIcon","renderNextIcon","SecondaryLogoWrapper","SectionSplitterContainer","Splitter","SponsorLogoWrapper","SponsorLogo","colorLogo","_ref$colorLogo","_ref$colorBackground","colorBackground","x","y","transform","CustomImage","img","SponsorshipStyledIframe","Sponsorship","src","_ref$src","_ref$dataRoh","dataRoh","_ref$title","_ref$altText","altText","isCustomImage","alt","scrolling","TabText","withTextInMobile","TitleContainer","selected","Tab","_ref$titleLink","titleLink","_ref$selected","_ref$iconName","_ref$withIcon","_ref$withTextInMobile","_ref$colorPrimary","clickHandler","TabLinkWrapper","hoverColor","TabLinkIconWrapper","TabLink","DarkGrey","_ref$hoverColor","TextAreaWrapper","TextAreaLabel","TextAreaBox","textarea","TextAreaError","InputWrapper","Input","input","isPasswordField","ShowHideButton","button","TextFieldComponent","_ref$type","showPassword","setShowPassword","showHideButtonText","inputType","htmlFor","prev","TextField","TextFieldContainer","textStyles","p","TextLinkWrapper","TextLinkIconWrapper","TextLink","TickboxError","dark","TickboxCheckmark","TickboxInput","whiteBox","Tickbox","TickboxIcon","Tickbox2Component","Tickbox2","TimerWrapper","Line","TitleWrapper","ValuesWrapper","TimerLabel","TimerValueSeparator","TimerValueWrapper","_templateObject7","TimerValue","_templateObject8","Timer","endDate","endDateHandler","_ref$bottomLine","bottomLine","_React$useState","seconds","setSeconds","_React$useState2","minutes","setMinutes","_React$useState3","hours","setHours","_React$useState4","days","setDays","_React$useState5","isEndDateReached","setIsEndDateReached","renderTimerValue","value","separator","fn","interval","futureDate","moment","nowDate","differenceInMilliseconds","valueOf","difference","utc","fullDaysLeft","Math","floor","diff","daysDiff","toString","hoursDiff","format","minutesDiff","secondsDiff","setInterval","clearInterval","isBefore","TypeTagsContainer","ul","TypeTags","list","t","VideoPlayButton","VideoFullscreenButton","VideoControlsWrapper","VideoControlsInnerWrapper","LeftWrapper","VideoVolume","VideoMute","thumbStyles","trackStyles","_templateObject9","VolumeControlsWrapper","_templateObject10","volumeHidden","FullscreenButton","isFullscreen","handleMinimise","handleFullscreen","VideoControls","videoElementId","videoContainerId","_ref2$muted","muted","_ref2$autoPlay","autoPlay","_ref2$soundControl","soundControl","_ref2$fullScreenOptio","fullScreenOption","_ref2$loop","loop","playing","setPlaying","_useState2","isMuted","setIsMuted","_useState3","volume","setVolume","_useState4","setIsFullscreen","getVideoElement","querySelector","video","handleFullscreenChange","fullscreenElement","_asyncToGenerator","_regeneratorRuntime","mark","_callee","videoContainer","wrap","_context","next","requestFullscreen","abrupt","stop","_callee2","_context2","exitFullscreen","handlePlay","pause","play","handleMute","handleVolume","newVolume","Number","min","max","StepperWrapper","StepperError","StepperBox","StepperValue","StepperButton","NavigationWrapper","isMenuOpen","overlay","FullScreenContainer","searchOverlay","NavigationGrid","SearchBackground","visible","GridItemSearch","NavigationGridMobile","LogoContainer","MenuContainer","NavContainer","NavContainerGridItem","NavTopContainer","_templateObject11","LogoWrapper","Logo","_ref$urlLink","urlLink","desktopImage","rel","_ref$id","srcSet","devicesImage","media","BasketContainer","SvgContainer","NumContainer","BasketText","getSecondsUntil","expiryUnixTimestamp","now","Date","expiry","round","getTime","expiryTime","_ref$numItems","numItems","_ref$numVirtualItems","numVirtualItems","onClickHandler","_useBasket","basketText","setBasketText","basketIsActive","setBasketIsActive","basketTotalNumItems","setBasketTotalNumItems","_useState5","timer","setTimer","_useState6","basketIsEmpty","setBasketIsEmpty","ceil","formatTime","checkTimeRed","useBasket","SearchContainer","SvgIcon","Dropdown","timerCloseOptions","_ref$options","_ref$isMobileBehaviou","isMobileBehaviour","_ref$withOptionsInMob","node","open","setOpen","lockOpen","setLockOpen","titleSelected","setTitleSelected","handleClick","clearTimeout","setTimeout","handleChange","withOptions","onMouseHandler","onResetHandler","handleClickTitle","onKeyDownHandler","Account","NavTop","accountText","accountLink","accountIcon","accountOptions","onLink","basketExpiryUnixTimestamp","basketLink","basketNumItems","basketNumVirtualItems","_ref$isShowSearch","isShowSearch","onClickSearch","TabsContainer","ItemsContainer","showMenu","MenuItem","Tabs","items","_ref$items","onShowMenu","_ref$showMenu","openMenu","setOpenMenu","activeDropdown","setActiveDropdown","hoverOverDropdown","setHoverOverDropdown","onResetActive","onChangeHandler","item","isActiveDropdownClicked","i","_items$length","SearchBarContainer","SvgContainerSearch","SvgContainerClose","InputContainer","SearchLinkContainer","SearchArrowContainer","SearchBar","onClose","showSearchLink","setShowSearchLink","searchValue","setSearchValue","inputRef","_inputRef$current","focus","_inputRef$current2","blur","onSearchHandler","handleKeypress","onCloseHandler","placeholder","Core","FooterSection","section","FooterContainer","PolicyLinksRow","ContactNewsletterRow","ArtsLogoRow","AdditionalInfo","PolicyLinksList","PolicyLinkItem","li","PolicyLink","PolicyLinks","ContactNewsletterWrapper","ContactNewsletterSeparator","SignUpWrapper","SignUpText","ContactWrapper","MediaLinksWrapper","MediaIconWrapper","ContactNewsletter","signUpLink","socialMediaLinks","contact","signUpText","mediaLink","AnchorTabbarWrapper","bottomBorder","anchor","TabsGrid","TabsWrapper","TabsList","tabsOverflow","hasTwoArrows","ArrowsContainer","fullWidth","ArrowWrapper","TitleCTAGridWrapper","sticky","TitleCTAGrid","TitleCTAGridItem","AnchorTitle","ButtonsDesktopWrapper","ButtonsMobileWrapper","PrimaryButtonReverse","MessageWrapper","MessageWrapperMobile","PromoLabelWrapper","PromoLabel","ButtonContainer","OfferTextWrapper","PriceRow","LineThrough","OfferText","description","dangerouslySetInnerHTML","__html","formatPrice","isNaN","toFixed","UpsellCard","str","subTitle","price","promoPrice","flag","offerTexts","_ref$theme","reducedOfferTexts","slice","ThemeProvider","offerText","UpsellCards","upsellCards","card","UpsellBorderBox","TextContainer","AccordionContainer","LineContainer","ChildrenContainer","ContentContainer","textHeight","PrintHideWrapper","Accordion","_ref$showLine","showLine","visibleStandfirst","_ref$initOpen","initOpen","_ref$contentType","contentType","_ref$semanticLevel","_ref$displayLevel","displayLevel","openAccordion","setOpenAccordion","setTextHeight","setIconName","childrenVisibility","setChildrenVisibility","content","scrollHeight","toggleAccordion","Standfirst","contentContainerId","AccordionTitle","localSemanticLevel","subtitleLevel","includes","console","warn","AccordionsContainer","Theme","AnnouncementBannerWrapper","AuxiliaryButtonWrapper","AuxiliaryButton","_props$color","CardContainer","isCardClickable","onlyShowButtonsOnHover","HoverContainer","lineColor","contentOverlay","ProgressContainer","TitleContainerMobile","HighlightTextContainer","SubtitleContainer","LabelContainer","isGridCard","ExtraActionsContainer","LabelElements","_templateObject12","LabelIconWrapper","_templateObject13","getButtonsOpacity","getButtonsMinHeight","_templateObject14","primaryButtonTextLength","tertiaryButtonTextLength","size","_ref15","_ref16","stripAllHtmlTags","htmlString","replace","truncateHtmlString","resultLength","addDots","accumulatedText","tagStack","charCount","char","tagNameEnd","indexOf","tagName","split","push","pop","closeTags","truncate","n","buttonTypeToButton","_buttonTypeToButton","Secondary","Tertiary","TertiaryButton","Card","subtitle","_ref$text","_ref$highlightText","highlightText","links","_ref$tags","tags","image","_ref$imageAltText","imageAltText","_ref$withContinueWatc","withContinueWatching","_ref$size","_ref$fullWidth","_ref$onlyShowButtonsO","hoverLineColor","labelParams","_ref$isGridCard","auxiliaryCTA","substr","hovered","setHovered","truncatedText","firstButton","_ref2$text","firstButtonText","restFirstButton","primaryButtonTextTruncate","secondButton","_ref3$text","secondButtonText","restSecondButton","_excluded2","tertiaryButtonTextTruncate","hoverHandler","opacity","transition","FirstButtonComponent","buttonType","SecondButtonComponent","onMouseOver","flexGrow","_labelParams$color","CardsContainer","GridItemContainer","ContentWrapper","hideBottomBorder","hideTopBorder","AddressWrapperDesktop","AddressWrapperMobile","DetailsWrapper","BodyTextRelative","ContentSummaryWrapper","article","clickable","ContentSummaryImageWrapper","ContentSummaryTextWrapper","showImage","ContentSummaryTitleWrapper","BodyTextLimit","ContentSummaryBodyTextWrapper","EditorialGrid","imageToLeft","EditorialImageWrapper","EditorialTextWrapper","EditorialSubtitle","EditorialText","InfoContent","InfoTitle","InfoCTAWrapper","infoThemed","variant","InfoWrapper","background","InfoBodyWrapper","InfoCta","_ref2$variant","_ref2$theme","_ref2$target","renderButton","Self","PageHeadingWrapper","isPageHeadingWithoutTitle","PageHeadingGrid","ChildrenWrapper","TextWrapper","PageHeadingText","PageHeading","_ref$sponsor","sponsor","_ref$copyCharLimit","copyCharLimit","_ref$titleCharLimit","titleCharLimit","linkText","restLink","truncatedTitle","isTitleUnAvailable","ImpactWrapper","ImpactHeaderImageWrapper","ImpactGrid","SponsorWrapper","sponsorship","ScrollDownWrapper","PanelGrid","LeftPanel","hasImage","RightPanel","StreamWrapper","BrandingTextBlock","BrandingTextBody","ComapctHeaderWrapper","CompactHeaderAssetWrapper","CompactHeaderCopyWrapper","CompactHeaderLogoWrapper","CompactHeaderTitleWrapper","CompactHeaderCTAWrapper","PrimaryButtonWithInversion","CompactHeaderBranding","brandingStyle","brandingText","brandingLink","url","hasSameSiteUrl","setSameSiteUrl","_window","location","currentPageURL","regexPattern","match","urlDomain","currentMatch","isSameSiteUrl","trim","renderBranding","useMobile","setMobile","isMobile","VideoWithControls","IOS","setIOS","poster","_useResponsiveVideo","mobileVideo","desktopVideo","mobilePoster","desktopPoster","posterUrl","setPoster","videoUrl","setVideoUrl","useResponsiveVideo","isIOS","navigator","platform","userAgent","elementId","playsInline","CompactHeaderImage","CompactHeaderVideo","MorePages","PageNumberWrapper","ol","PageNumber","NextPage","reducePages","pages","currentPage","PeopleListingGrid","PersonWrapper","HeadshotWrapper","RoleWrapper","PersonLink","ReplacementWrapper","Person","person","replacement","_person$separator","personSeparator","withSeparator","hasHeadshot","people","headshot","useHeadshot","textSection","dataROH","personIndex","CreditListingWrapper","columnCount","DescriptionWrapper","PromoWithTagsGrid","asCard","PromoWithTagsSubtitle","PromoWithTagsText","hasTextLinks","_ref8$tertiaryButtonT","_ref8$primaryButtonTe","_ref9$tertiaryButtonT","_ref9$primaryButtonTe","PromoWithTagsTagWrapper","marginBottom","PromoWithTagsAdditionalText","TextLinksContainer","ExtraContentWrapper","MobileTitleWrapper","PromoWithTagsTypeTags","PromoWithTagsHeader","PromoWithTagsTextLink","_templateObject15","asCardOverrides","_templateObject16","PromoWithTagsExtraContentWrapper","_templateObject17","PromoWithTagsContentWrapper","_templateObject18","hideSection","PromoWithTagsContainer","_templateObject19","_templateObject20","EndDateText","_templateObject21","PromoWithTitleGrid","PromoWithTitleImageWrapper","PromoWithTitleContentWrapper","PromoWithTitleContainer","PromoWithTitleSubtitle","PromoWithTitleText","VideoContainer","settings","videoRef","setAspectRatio","isVideoReady","setIsVideoReady","changeVideoReadiness","_videoRef$current","useMemo","random","clonedVideo","cloneElement","onLoadedMetadata","newAspectRatio","videoWidth","videoHeight","gcd","b","divisor","getAspectRatioFromVideo","videoControlsProps","PromoChild","videoSettings","isImage","Children","only","isVideo","RadioGroupContainer","RadioGroup","horizontalMode","StatusBannerWrapper","SectionTitleWrapper","stateStyles","borderStyles","noMarginAndPaddingStyles","listItemStyles","ArrowIcon","SelectWrapper","Options","Option","hover","SelectList","selectStyles","DropdownIndicator","components","WrapperComponent","TextOnly","_ref$columnStartDeskt","_ref$columnSpanDeskto","_ref$columnStartDevic","_ref$columnSpanDevice","CaptionWrapper","AttributionWrapper","displayAttribution","StyledImage","ImageWrapper","ReadMoreContainer","LinkContainer","FullTextContainer","IntroTextContainer","nav","MenuList","LightGrey","MobileButton","MobileMenuList","isOpen","NavItem","linkRef","linkElement","DesktopNav","activeItem","idx","MobileNav","setIsOpen","containerRef","outsideClickHandler","Sections","Section","BottomLine","Text","LabelText","TableContainer","table","TableHeader","th","columns","TableCell","td","Pagination","Next","ScrollButtons","Content","scrollTable","tableRef","scrollTo","scrollLeft","behavior","Cell","cellIndex","cell","Row","Fragment","rowIndex","row","THEME_ICON","THEME_FONT_BODY","THEME_COLOR","THEME_COLOR_BLACK","THEME_COLOR_LIGHTGREY","THEME_COLOR_WHITE","SCRIPT_CONTENT","StickyBarWrapper","StickyBarGrid","InnerModal","popup","CloseButton","Overlay","Modal","defaultStyles","position","GlobalStyles","createGlobalStyle","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref23","_ref24","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","_ref39","_ref40","_ref41","_ref42","_ref43","_ref44","_ref45","_ref46","_ref47","_ref48","_ref49","_ref50","_ref51","_ref52","_ref53","_ref54","_ref55","_ref56","_ref57","_ref58","_ref59","_ref60","_ref61","_ref62","_ref63","_ref64","_ref65","_ref66","_ref67","_ref68","_ref69","_ref70","_ref71","_ref72","_ref73","_ref74","_ref75","_ref76","_ref77","_ref78","_ref79","_ref80","_ref81","_ref82","_ref83","_ref84","_ref85","_ref86","_ref87","_ref88","_ref89","_ref90","_ref91","_ref92","_ref93","_ref94","_ref95","_ref96","_ref97","_ref98","_ref99","_ref100","_ref101","_ref102","_ref103","_ref104","_ref105","_ref106","_ref107","_ref108","_ref109","_ref110","_ref111","_ref112","_ref113","_ref114","_ref115","_ref116","_ref117","_ref118","_ref119","_ref120","_ref121","_ref122","_ref123","_ref124","_ref125","_ref126","_ref127","_ref128","_ref129","_ref130","_ref131","_ref132","_ref133","_ref134","_ref135","_ref136","_ref137","_ref138","_ref139","_ref140","_ref141","_ref142","_ref143","_ref144","_ref145","_ref146","_ref147","_ref148","_ref149","_ref150","_ref151","_ref152","_ref153","_ref154","_ref155","_ref156","_ref157","_ref158","_ref159","_ref160","_ref161","_ref162","_ref163","_ref164","_ref165","_ref166","_ref167","_ref168","_ref169","_ref170","_ref171","_ref172","_ref173","_ref174","_ref175","_ref176","_ref177","_ref178","_ref179","_ref180","_ref181","_ref182","_ref183","_ref184","_ref185","_ref186","_ref187","_ref188","_ref189","_ref190","_ref191","_ref192","_ref193","_ref194","_ref195","_ref196","_ref197","_ref198","_ref199","_ref200","_ref201","_ref202","_ref203","_ref204","_ref205","_ref206","_ref207","_ref208","_ref209","_ref210","_ref211","_ref212","_ref213","_ref214","_ref215","_ref216","_ref217","_ref218","_ref219","_ref220","_ref221","_ref222","_ref223","_ref224","_ref225","_ref226","_ref227","_ref228","_ref229","_ref230","_ref231","_ref232","_ref233","_ref234","_ref235","_ref236","_ref237","_ref238","_ref239","_ref240","_ref241","_ref242","_ref243","_ref244","_ref245","_ref246","_ref247","_ref248","_ref249","_ref250","_ref251","_ref252","_ref253","_ref254","_ref255","_ref256","_ref257","_ref258","_ref259","_ref260","_ref261","_ref262","_ref263","_ref264","_ref265","_ref266","_ref267","_ref268","_ref269","_ref270","_ref271","_ref272","_ref273","_ref274","_ref275","_ref276","_ref277","_ref278","_ref279","_ref280","_ref281","_ref282","_ref283","_ref284","_ref285","_ref286","_ref287","_ref288","_ref289","_ref290","_ref291","_ref292","_ref293","_ref294","_ref295","_ref296","_ref297","_ref298","_ref299","_ref300","_ref301","_ref302","_ref303","_ref304","_ref305","_ref306","_ref307","_ref308","_ref309","_ref310","_ref311","_ref312","_ref313","isLastAccordion","accordion","tabs","onTabClick","activeTab","absolutePositionParams","_ref$bottomBorder","tabListRef","wrapperRef","selectedItem","setSelectedItem","setTabsOverflow","canScrollToLeft","setCanScrollToLeft","canScrollToRight","setCanScrollToRight","isSelectedItem","changeWrapperVisibility","showWrapper","topOffset","wrapperEl","visibility","top","handleScrollForAbsolutePosition","_absolutePositionPara","navigationHeight","_absolutePositionPara2","pageYOffset","selectedItemIndex","findIndex","el","tabLinks","getElementsByClassName","scrollWidth","getScrollWidth","tabsIsOverflowed","_tabListRef$current","_tabListRef$current2","clientWidth","scrollTriggerCheck","reachedItem","find","targetSectionElement","getElementById","topDiff","getBoundingClientRect","scrollY","_ref2$scrollLeft","_ref2$clientWidth","tabLinkElement","offsetLeft","offsetWidth","onScroll","_ref3$scrollLeft","_ref3$clientWidth","_ref3$scrollWidth","onClicktab","newScroll","scroll","announcementText","time","icon","getColumnStartDesktop","cards","email","phone","website","address","_ref$hideBottomBorder","_ref$hideTopBorder","hasDetails","addressString","descriptionText","chunk","divideAddressString","bodyText","_ref$largeTitle","largeTitle","_ref$showImage","_ref$truncate","_ref$fullyClickable","fullyClickable","_ref$baseSemanticLeve","baseSemanticLevel","_ref$columnCount","roles","musicTitle","additionalInfo","reduce","acc","concatenateMusicTitle","imagePosition","_ref$imagePosition","data","policyLinks","newsletter","rawSocialMediaLinks","_data$artsLogo","artsLogo","artsDataRoh","caption","setHeight","setWrapperHeight","_wrapperRef$current","offsetHeight","cta","titleWordLengths","word","maxTitleWordLength","apply","titleColumnSpan","textSize","longestWordLength","getColumnSpan","bgColour","loaded","setLoaded","callback","existingScript","liveChatDiv","setAttribute","script","scriptBody","onload","loadLiveChatScript","iconColor","appElementId","modalProps","customStyles","zIndex","border","appElement","closeModalHandler","shouldCloseOnEsc","onRequestClose","ScrollLock","dataNavTop","menuData","onSearch","logoLink","desktopLogoUrl","devicesLogoUrl","navTopData","setNavTopData","setShowMenu","showSearch","setshowSearch","fullScreenHeight","setFullScreenHeight","_document","html","_document2","documentElement","newHeight","clientHeight","onLinkHandler","onShowMenuHandler","show","onCloseSearchHandler","cinemaLink","_ref4$sponsor","customSponsorImage","bgUrlDesktop","bgUrlDevice","videoUrlDesktop","videoUrlMobile","_ref4$bgImageAltText","bgImageAltText","_ref4$invert","_ref4$brandingStyle","_ref4$showCopy","showCopy","_ref4$semanticLevel","titleSize","coreLink","scrollHref","_ref$bgImageAltText","info","_image$src","_image$alt","streamLink","Stream","pageCount","baseUrl","pageNumbers","keys","reducedPageNumbers","page","sections","_ref$activeSections","activeSections","_ref$sectionsColor","sectionsColor","_ref$activeSectionsCo","activeSectionsColor","_ref$textColor","textColor","_ref$strengthLabel","strengthLabel","_ref$strengthLabelCol","strengthLabelColor","setSectionDataTestId","_ref$sections","_section","sort","_ref$titleSize","textLinks","aboveTitleTags","belowTitleTags","middleText","bottomText","_ref$asCard","_ref$disableCTA","disableCTA","_ref$disabledCTACopy","disabledCTACopy","timerParams","showExtraContent","setShowExtraContent","isTimerActive","setIsTimerActive","titleLevel","isExtraContentPresent","anchorLink","toLocaleLowerCase","defaultOnClickHandler","matchMedia","matches","secondButtonTextTruncate","textTruncate","textLinkItems","_link$text","textLinkText","restTextLink","_excluded3","endDateText","titleSemanticLevel","primaryButtonText","restPrimaryButton","tertiaryButtonText","restTertiaryButton","attribution","Boolean","radios","radioProps","setRadioProps","checkedIndex","setCheckedIndex","radio","_radio$label","_value","newRadioProps","_ref$horizontalMode","_ref$gap","defaultValue","changeHandler","defaultChecked","introText","fullText","showMoreText","hideText","characterLimit","isFullTextOpen","setIsFullTextOpen","readMoreContent","toggleFullText","nodeString","renderToString","truncateReactNodeString","IntroText","toggleFunction","keyDown","maxHeight","xmlnsXlink","headingLevel","onSelect","_ref3$disabled","_ref3$resetWhenOption","resetWhenOptionsUpdate","_ref3$width","_ref3$height","selectRef","optionsRef","selectedValue","setSelectedValue","isDisabled","_useAccessibility","_useKeyboardAccessibi","shouldHighlightOption","itemToHighlight","setItemToHighlight","clampIndex","reset","_selectRef$current","handleKeyUp","shouldHighlightOptionPrev","preventScrollingWhileNavigating","handleHighlighted","cb","useKeyboardAccessibility","_useVisualAccessibili","isSelectDisabled","addFocusClass","_selectRef$current2","classList","add","removeFocusClass","_selectRef$current3","remove","withClickAwayHandler","toggleFocus","_selectRef$current4","useVisualAccessibility","_selectRef$current5","_selectRef$current6","_selectRef$current7","_selectRef$current8","_selectRef$current9","useAccessibility","closeSelect","closeSelectOnBlur","handleOptionSelection","onKeyUp","_selectedValue$text","_options$","element","_ref2$darkMode","_ref2$isSearchable","isSearchable","selectProps","Select","LoadingIndicator","IndicatorSeparator","classNamePrefix","statusText","_ref$visibility","setIsVisible","isClosing","setIsClosing","handleCloseBanner","transitionEnd","initialValue","_ref$step","_ref$min","_ref$max","minusAction","plusAction","accessibleName","_ref$initialValue","displayValue","setDisplayValue","validInput","clampValue","val","minValue","maxValue","zeroSoloSign","decrement","increment","parseInt","maxLength","endsWith","startsWith","parseSigned","headings","lineColors","rowsPerPage","pagination","setCurrentPage","showScrollButtons","setShowScrollButtons","useLayoutEffect","horizontalScroll","currentRows","visibleRows","totalRows","isArray","totalPages","heading","scope","number","_ref$maxLength","_ref$tabIndex","textareaProps","dataLabel","_ref$mode","mode","_ref$whiteBox","setSelected","isDarkMode","Dark","inputChecked","_ref$sticky","message","primaryButtonProps","secondaryButtonText","secondaryButtonProps","richText","themedUpsellCards","concat"],"mappings":"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"}
|