{"version":3,"file":"static/chunks/pages/donate-37b8d1a0caa6c258.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@cruk/cruk-react-components/lib/es/src/components/Link/styles.js","webpack://_N_E/./node_modules/@cruk/cruk-react-components/lib/es/src/components/Link/index.js","webpack://_N_E/./node_modules/@cruk/cruk-react-components/lib/es/src/components/Select/styles.js","webpack://_N_E/./node_modules/@cruk/cruk-react-components/lib/es/src/components/Select/index.js","webpack://_N_E/./components/Email.tsx","webpack://_N_E/./components/GetSelectOptions/index.tsx","webpack://_N_E/./components/GetSelectOptions/GetSelectOptions.tsx","webpack://_N_E/./data/researchAreas.ts","webpack://_N_E/./helpers/useOptimizelyTrack.ts","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/iterableToArray.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/slicedToArray.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://_N_E/./components/newCrukTheme.ts","webpack://_N_E/./pages/donate.tsx","webpack://_N_E/?ecc2","webpack://_N_E/./node_modules/next/router.js"],"sourcesContent":["import{__makeTemplateObject as n}from\"../../../node_modules/tslib/tslib.es6.js\";import o,{css as r}from\"styled-components\";import{Text as e}from\"../Text/index.js\";import t from\"../IconFa/index.js\";var a,i,c,s=o(t)(a||(a=n([\"\\n margin-right: \",\";\\n stroke: currentColor;\\n stroke-width: 70;\\n\"],[\"\\n margin-right: \",\";\\n stroke: currentColor;\\n stroke-width: 70;\\n\"])),(function(n){return n.theme.spacing.xxs})),u=o(e)(c||(c=n([\"\\n transition: color 0.2s ease, background-size 0.3s ease;\\n overflow-wrap: break-word;\\n background-color: rgba(255, 255, 255, 0);\\n border: none;\\n padding: 0;\\n color: \",\";\\n text-decoration: \",\";\\n font-weight: \",\";\\n background: \",\";\\n background-repeat: no-repeat;\\n background-position-y: calc(100%);\\n background-size: 100% 2px;\\n\\n \",\"\\n\\n &:focus-visible {\\n outline: auto;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n background-size: 100% 100%;\\n color: \",\";\\n }\\n\"],[\"\\n transition: color 0.2s ease, background-size 0.3s ease;\\n overflow-wrap: break-word;\\n background-color: rgba(255, 255, 255, 0);\\n border: none;\\n padding: 0;\\n color: \",\";\\n text-decoration: \",\";\\n font-weight: \",\";\\n background: \",\";\\n background-repeat: no-repeat;\\n background-position-y: calc(100%);\\n background-size: 100% 2px;\\n\\n \",\"\\n\\n &:focus-visible {\\n outline: auto;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n background-size: 100% 100%;\\n color: \",\";\\n }\\n\"])),(function(n){var o=n.theme,r=o.colors,e=o.utilities.useBackgroundStyleLinks,t=n.textColor,a=n.appearance;return t&&void 0!==r[t]?r[t]:t||(!a&&e?\"currentColor\":a&&\"primary\"===a?r.secondary:r.linkColor)}),(function(n){var o=n.appearance,r=n.theme.typography.linkTextDecoration;return\"primary\"===o||\"secondary\"===o?\"none\":r}),(function(n){var o=n.theme;return o.utilities.useBackgroundStyleLinks?o.typography.fontWeightHeavy:o.typography.fontWeightNormal}),(function(n){var o=n.appearance,r=n.theme;return n.theme.utilities.useBackgroundStyleLinks&&!o?\"linear-gradient(180deg, rgba(255, 255, 255, 0) 0px, \".concat(r.colors.primary,\" -4px);\"):void 0}),(function(o){var e=o.appearance,t=o.theme.typography.fontWeightHeavy;return(\"primary\"===e||\"secondary\"===e)&&r(i||(i=n([\"\\n font-weight: \",\";\\n \"],[\"\\n font-weight: \",\";\\n \"])),t)}),(function(n){var o=n.theme,r=o.colors,e=o.utilities.useBackgroundStyleLinks,t=n.textHoverColor;return!t&&e?r.textDark:t&&void 0!==r[t]?r[t]:t||r.linkColorHover}));export{s as ChevyWithLevee,u as StyledLink};\n//# sourceMappingURL=styles.js.map\n","import{__assign as e}from\"../../../node_modules/tslib/tslib.es6.js\";import r,{forwardRef as o}from\"react\";import{useTheme as t,ThemeProvider as m}from\"styled-components\";import{faChevronRight as s}from\"../../../node_modules/@fortawesome/free-solid-svg-icons/index.es.js\";import n from\"../../themes/cruk.js\";import{StyledLink as a,ChevyWithLevee as l}from\"./styles.js\";var i=o((function(o,i){var f=t(),p=e(e({},n),f),c=o.rel?o.rel:\"_blank\"===o.target?\"noopener noreferrer\":\"\";return r.createElement(m,{theme:p},r.createElement(a,e({},o,{theme:p,rel:c,forwardedAs:\"a\",ref:i}),\"primary\"===o.appearance&&r.createElement(l,{faIcon:s,size:\"0.8em\"}),o.children))}));export{i as Link,i as default};\n//# sourceMappingURL=index.js.map\n","import{__makeTemplateObject as n}from\"../../../node_modules/tslib/tslib.es6.js\";import o,{css as r}from\"styled-components\";var e,t,c=o.select(t||(t=n([\"\\n appearance: none;\\n background: linear-gradient(\\n 45deg,\\n \",\" 50%,\\n \",\" 50%\\n ),\\n linear-gradient(\\n 135deg,\\n \",\" 50%,\\n \",\" 50%\\n );\\n background-color: \",\";\\n background-position: calc(100% - 16px) 50%, calc(100% - 10px) 50%;\\n background-size: 6px 6px;\\n background-repeat: no-repeat;\\n border: \",\";\\n color: \",\";\\n display: block;\\n font-size: \",\";\\n min-height: \",\";\\n padding: \",\";\\n width: 100%;\\n transition: border-color 150ms linear;\\n &:disabled {\\n border-color: \",\";\\n color: \",\";\\n }\\n\\n \",\";\\n\"],[\"\\n appearance: none;\\n background: linear-gradient(\\n 45deg,\\n \",\" 50%,\\n \",\" 50%\\n ),\\n linear-gradient(\\n 135deg,\\n \",\" 50%,\\n \",\" 50%\\n );\\n background-color: \",\";\\n background-position: calc(100% - 16px) 50%, calc(100% - 10px) 50%;\\n background-size: 6px 6px;\\n background-repeat: no-repeat;\\n border: \",\";\\n color: \",\";\\n display: block;\\n font-size: \",\";\\n min-height: \",\";\\n padding: \",\";\\n width: 100%;\\n transition: border-color 150ms linear;\\n &:disabled {\\n border-color: \",\";\\n color: \",\";\\n }\\n\\n \",\";\\n\"])),(function(n){return n.theme.colors.backgroundLight}),(function(n){return n.theme.colors.selectBackground}),(function(n){return n.theme.colors.selectBackground}),(function(n){return n.theme.colors.backgroundLight}),(function(n){return n.theme.colors.backgroundLight}),(function(n){var o=n.theme,r=n.hasError,e=n.errorMessage;return\"solid \".concat(o.utilities.inputBorderWidth,\" \").concat(r||e?o.colors.textError:o.colors.textInputBorder)}),(function(n){return n.theme.colors.textDark}),(function(n){return n.theme.fontSizes.m}),\"3rem\",(function(n){var o=n.theme;return\"calc( (\".concat(\"3rem\",\" - ( \").concat(o.utilities.inputBorderWidth,\" * 2) - \").concat(o.typography.lineHeight,\" ) / 2) \").concat(o.spacing.m,\" calc( (\").concat(\"3rem\",\" - ( \").concat(o.utilities.inputBorderWidth,\" * 2) - \").concat(o.typography.lineHeight,\" ) / 2) \").concat(o.spacing.xs)}),(function(n){return n.theme.colors.disabled}),(function(n){return n.theme.colors.disabled}),(function(o){var t=o.theme;return t.utilities.useDefaultFocusRect?null:r(e||(e=n([\"\\n &:focus {\\n outline: 0;\\n border-color: \",\";\\n }\\n \"],[\"\\n &:focus {\\n outline: 0;\\n border-color: \",\";\\n }\\n \"])),t.colors.tertiary)}));export{c as StyledSelect,c as default};\n//# sourceMappingURL=styles.js.map\n","import{__rest as r,__assign as e}from\"../../../node_modules/tslib/tslib.es6.js\";import i,{forwardRef as t}from\"react\";import{useTheme as o}from\"styled-components\";import a from\"../../themes/cruk.js\";import{LabelWrapper as d}from\"../LabelWrapper/index.js\";import s from\"../ErrorText/index.js\";import m from\"./styles.js\";var n=t((function(t,n){var l=t.errorMessage,c=t.hasError,p=t.required,u=t.label,b=t.hintText,f=t.hideRequiredInLabel,h=r(t,[\"errorMessage\",\"hasError\",\"required\",\"label\",\"hintText\",\"hideRequiredInLabel\"]),x=o(),E=e(e({},a),x);return i.createElement(d,{label:u,hintText:b,required:!f&&p||!1},i.createElement(m,e({},h,{ref:n,theme:E,required:p,\"aria-invalid\":c||!!l||!1,\"aria-describedby\":h.id&&l?\"\".concat(h.id,\"-error\"):void 0,hasError:c||!!l||!1})),!!l&&i.createElement(s,{marginTop:\"xxs\",id:h.id?\"\".concat(h.id,\"-error\"):void 0},l))}));export{n as default};\n//# sourceMappingURL=index.js.map\n","import { ReactElement } from \"react\";\n\ntype EmailProps = {\n mailto?: string;\n children: string;\n};\n\nconst Email = ({ mailto, children }: EmailProps): ReactElement => (\n {children}\n);\n\nexport default Email;\n","import GetSelectOptions from \"./GetSelectOptions\";\n\nexport default GetSelectOptions;\n","import { SelectOptionsType } from \"../../helpers/types/shared\";\n\ninterface SelectOptionsProps {\n options: Array;\n defaultSelectOption?: string;\n}\n\nconst GetSelectOptions = ({\n options,\n defaultSelectOption,\n}: SelectOptionsProps): React.ReactElement =>\n options ? (\n <>\n \n {options.map((option: SelectOptionsType) => (\n \n {option.label}\n \n ))}\n \n ) : null;\n\nexport default GetSelectOptions;\n","const researchAreas = [\n {\n label: \"Bowel cancer\",\n value: \"RES005\",\n },\n {\n label: \"Brain tumours\",\n value: \"RES038\",\n },\n {\n label: \"Breast cancer\",\n value: \"RES003\",\n },\n {\n label: \"Children's cancers\",\n value: \"RES814\",\n },\n {\n label: \"Developing better treatments\",\n value: \"RES828\",\n },\n {\n label: \"Diagnosing cancer early\",\n value: \"RES769\",\n },\n {\n label: \"Leukaemia\",\n value: \"RES009\",\n },\n {\n label: \"Lung cancer\",\n value: \"RES004\",\n },\n {\n label: \"Lymphoma\",\n value: \"RES010\",\n },\n {\n label: \"Oesophageal cancer\",\n value: \"RES085\",\n },\n {\n label: \"Ovarian cancer\",\n value: \"RES008\",\n },\n {\n label: \"Pancreatic cancer\",\n value: \"RES011\",\n },\n {\n label: \"Preventing cancer\",\n value: \"RES813\",\n },\n {\n label: \"Prostate cancer\",\n value: \"RES006\",\n },\n {\n label: \"Rare cancers\",\n value: \"RES829\",\n },\n {\n label: \"Skin cancer\",\n value: \"RES490\",\n },\n {\n label: \"The cancer type or area of research isn't listed\",\n value: \"Unlisted\",\n },\n] as const;\n\nexport type RestrictionCode = Exclude<\n typeof researchAreas[number][\"value\"],\n \"Unlisted\"\n>;\n\nexport default [...researchAreas];\n","import type { Client, OptimizelyUserContext } from \"@optimizely/optimizely-sdk\";\nimport { useEffect, useState } from \"react\";\n\ntype Props = {\n client: Client;\n user: OptimizelyUserContext;\n event: string;\n donationAmount?: string;\n calculateRevenue?: (amount: number) => number;\n};\n\nconst useOptimizelyTrack = ({\n client,\n user,\n event,\n donationAmount,\n calculateRevenue,\n}: Props) => {\n const [hasTracked, setHasTracked] = useState(false);\n\n const optimizelyTracking = () => {\n if (\n typeof calculateRevenue !== \"undefined\" &&\n typeof donationAmount !== \"undefined\"\n ) {\n user?.trackEvent(event, {\n revenue: calculateRevenue(Number(donationAmount)),\n });\n }\n user?.trackEvent(event);\n };\n\n useEffect(() => {\n if (client && !hasTracked) {\n optimizelyTracking();\n setHasTracked(true);\n }\n }, [client]);\n};\n\nexport default useOptimizelyTrack;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import { crukTheme, ThemeType } from \"@cruk/cruk-react-components\";\n\nconst TOKEN_COLORS = {\n darkBlue_500: \"#00007E\",\n cyan_500: \"#009CEE\",\n\n magenta_500: \"#E60079\",\n magenta_800: \"#CC006C\",\n\n grey_900: \"#000\",\n black: \"#000\",\n};\n\nexport const newCrukTheme: ThemeType = {\n ...crukTheme,\n name: \"new_cruk\",\n tokenColors: {\n ...crukTheme.tokenColors,\n magenta_800: TOKEN_COLORS.magenta_800,\n magenta_500: TOKEN_COLORS.magenta_500,\n darkBlue_500: TOKEN_COLORS.darkBlue_500,\n cyan_500: TOKEN_COLORS.cyan_500,\n },\n colors: {\n ...crukTheme.colors,\n primary: TOKEN_COLORS.black,\n secondary: TOKEN_COLORS.magenta_500,\n tertiary: TOKEN_COLORS.cyan_500,\n\n info: TOKEN_COLORS.cyan_500,\n\n linkColor: TOKEN_COLORS.darkBlue_500,\n linkColorHover: TOKEN_COLORS.magenta_800,\n textDark: TOKEN_COLORS.grey_900,\n\n progressBar: TOKEN_COLORS.darkBlue_500,\n progressBarSecondary: TOKEN_COLORS.magenta_500,\n circularProgress: TOKEN_COLORS.cyan_500,\n circularProgressSecondary: TOKEN_COLORS.magenta_500,\n\n buttonPrimaryBackground: TOKEN_COLORS.magenta_500,\n buttonPrimaryBorder: TOKEN_COLORS.magenta_500,\n buttonPrimaryBackgroundHover: TOKEN_COLORS.magenta_800,\n buttonPrimaryBorderHover: TOKEN_COLORS.magenta_800,\n\n buttonSecondaryText: TOKEN_COLORS.magenta_500,\n buttonSecondaryBorder: TOKEN_COLORS.magenta_500,\n buttonSecondaryTextHover: TOKEN_COLORS.magenta_800,\n buttonSecondaryBorderHover: TOKEN_COLORS.magenta_800,\n\n buttonTertiaryText: TOKEN_COLORS.magenta_500,\n buttonTertiaryTextHover: TOKEN_COLORS.magenta_800,\n\n loaderColor1: TOKEN_COLORS.darkBlue_500,\n loaderColor2: TOKEN_COLORS.magenta_500,\n loaderColor3: TOKEN_COLORS.cyan_500,\n\n paginationText: TOKEN_COLORS.darkBlue_500,\n paginationBackground: TOKEN_COLORS.darkBlue_500,\n\n totaliserBubbleTotalColor: TOKEN_COLORS.darkBlue_500,\n },\n button: {\n ...crukTheme.button,\n borderRadius: \"0px\",\n borderRadiusLarge: \"0px\",\n },\n typography: {\n ...crukTheme.typography,\n customFonts: [\n {\n family: \"Progress-Regular\",\n url: \"/assets/fonts/Progress-Regular\",\n },\n ],\n fontFamilyHeadings: \"Progress-Regular,Calibri,Arial,sans-serif\",\n fontFamilyBase: `poppinsregular, ${crukTheme.typography.fontFamilyBase}`,\n },\n};\n\nexport default newCrukTheme;\n","// DEPENDENCIES\nimport React, {\n ReactElement,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { useRouter } from \"next/router\";\nimport {\n Button as DefaultButton,\n Header,\n Heading,\n Link,\n Box,\n Text,\n TextField,\n Select,\n IconFa,\n crukTheme,\n ThemeType,\n} from \"@cruk/cruk-react-components\";\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\n\n// COMPONENTS\nimport styled, { ThemeProvider, css } from \"styled-components\";\nimport header from \"../configs/headers\";\nimport ThemeNameContext from \"../contexts/ThemeNameContext\";\nimport GlobalStyle from \"../globalStyle\";\nimport FormHead from \"../components/FormHead\";\nimport Footer from \"../components/Footer\";\nimport { MaxWidth } from \"../components/styles\";\nimport { newCrukTheme } from \"../components/newCrukTheme\";\nimport GetSelectOptions from \"../components/GetSelectOptions\";\nimport PhoneNumber from \"../components/PhoneNumber\";\nimport Email from \"../components/Email\";\nimport researchAreas from \"../data/researchAreas\";\nimport {\n setCookieAccepted,\n setCookieBanner,\n setDatadog,\n} from \"../helpers/functions/shared\";\nimport { amountRegExp } from \"../helpers/regexp\";\nimport useDataLayer from \"../helpers/useDataLayer\";\nimport {\n OptimizelyContext,\n OptimizelyContextProvider,\n} from \"../contexts/OptimizelyContext\";\nimport OptimizelySetup from \"../components/OptimizelySetup\";\nimport useOptimizelyTrack from \"../helpers/useOptimizelyTrack\";\n\nconst Button = styled(DefaultButton)`\n font-family: ${({ theme }) => theme.typography.fontFamilyBase};\n font-weight: normal;\n`;\n\nconst SiteContainer = styled.div`\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n`;\n\nconst FullBleedContainer = styled.div<{\n backgroundColor?: string;\n desktopOnly?: boolean;\n marginBlock?: \"small\" | \"large\";\n}>`\n width: 100%;\n background-color: ${({ backgroundColor, theme }) =>\n backgroundColor ?? theme.tokenColors.grey_200};\n ${({ marginBlock }) =>\n marginBlock\n ? css`\n margin-block-start: ${marginBlock === \"small\" ? \"1.5rem\" : \"5rem\"};\n margin-block-end: ${marginBlock === \"small\" ? \"0.5rem\" : \"5rem\"};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n margin-block: unset;\n }\n `\n : \"\"}\n\n ${({ desktopOnly }) =>\n desktopOnly\n ? css`\n display: none;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n display: block;\n }\n `\n : \"\"}\n`;\n\nconst ContentWidth = styled.div`\n margin-inline: auto;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n max-width: ${({ theme }) => theme.utilities.contentMaxWidth};\n padding-inline: min(1vw, 6rem);\n }\n`;\n\nconst PageContent = styled.div`\n padding: ${({ theme }) => theme.spacing.xs} ${({ theme }) => theme.spacing.s};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n padding: ${({ theme }) => theme.spacing.m} ${({ theme }) => theme.spacing.s};\n }\n`;\n\ntype FullBleedContentProps = {\n backgroundColor?: string;\n hero?: boolean;\n children?: ReactNode;\n desktopOnly?: boolean;\n marginBlock?: \"small\" | \"large\";\n};\n\nconst FullBleedContent = ({\n backgroundColor,\n hero = false,\n children,\n marginBlock,\n desktopOnly = false,\n}: FullBleedContentProps): ReactElement => (\n \n {hero ? (\n {children}\n ) : (\n \n {children}\n \n )}\n \n);\n\nconst AlignedForm = styled.form`\n background-color: ${({ theme }) => theme.tokenColors.white};\n padding-block: unset;\n padding-inline: 0.5rem;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n padding: unset;\n position: absolute;\n\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n inset: 0 0 auto auto;\n\n margin-right: min(15vw, 15%);\n margin-top: 2rem;\n width: 22rem;\n }\n`;\n\nconst nudges = {\n monthly: [\n {\n amount: 6,\n impact:\n \"£6 a month for five years could fund an international trial for one day, aiming to improve treatment for brain tumours in children.\",\n },\n {\n amount: 15,\n impact:\n \"£15 a month for five years could fund one of our amazing cancer nurses for one week.\",\n },\n {\n amount: 30,\n impact:\n \"£30 a month for five years could fund a Cancer Research PhD student for a whole month, so they can make the research breakthroughs of the future.\",\n },\n ],\n single: [\n {\n amount: 10,\n impact:\n \"£10 could buy 200 plastic test tubes, the understated tools of cancer-fighting experiments.\",\n },\n {\n amount: 20,\n impact:\n \"£20 could buy a digital PCR assay, which scans a piece of genetic material to find cancer-causing mutations.\",\n },\n {\n amount: 30,\n impact:\n \"£30 could fund one of our expert nurses for two hours on our cancer information hotline, offering invaluable support and guidance to people affected by cancer.\",\n },\n ],\n};\n\nconst FrequencyTabs = styled.fieldset`\n margin: unset;\n\n div {\n background: transparent;\n display: grid;\n grid-auto-columns: 1fr;\n grid-template-columns: repeat(2, 1fr);\n gap: 0.5rem;\n }\n\n div label input {\n position: absolute;\n cursor: pointer;\n left: 0;\n top: 0;\n width: 100%;\n margin: 0;\n zoom: 1;\n opacity: 0;\n z-index: 1;\n }\n`;\n\nconst FrequencyTab = styled.label<{ checked: boolean }>`\n cursor: pointer;\n position: relative;\n font-family: ${({ theme }) => theme.typography.fontFamilyHeadings};\n font-size: 1.125rem;\n color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n font-weight: normal;\n text-align: center;\n padding: 0.5rem 2rem;\n margin: 0;\n border-style: solid;\n border-width: ${({ theme }) => theme.button.buttonBorderThickness};\n\n transition: background-color 250ms ease, border-color 250ms ease,\n color 250ms ease;\n\n &:focus-within,\n &:hover {\n background-color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n border-color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n color: ${({ theme }) => theme.colors.textLight};\n }\n\n ${({ theme, checked }) =>\n checked\n ? css`\n background-color: ${theme.tokenColors.darkBlue_500};\n border-color: ${theme.tokenColors.darkBlue_500};\n color: ${theme.colors.textLight};\n `\n : css`\n border-color: ${theme.tokenColors.darkBlue_100};\n background-color: ${theme.tokenColors.darkBlue_100};\n `}\n\n @media (width < 380px) {\n font-size: 1rem;\n }\n`;\n\nconst NudgeAmounts = styled.fieldset`\n margin: unset;\n padding-inline: 1.125rem;\n padding-block-start: 1rem;\n padding-block-end: 0.5rem;\n\n div:first-child {\n background: transparent;\n display: grid;\n grid-auto-columns: 1fr;\n grid-template-columns: repeat(3, 1fr);\n gap: 1.125rem;\n }\n\n div label input {\n position: absolute;\n cursor: pointer;\n left: 0;\n top: 0;\n width: 100%;\n margin: 0;\n zoom: 1;\n opacity: 0;\n z-index: 1;\n }\n`;\n\n// TODO Consider using `.has` css pseudo selector for applying checked style\nconst NudgeAmount = styled.label<{ checked: boolean }>`\n cursor: pointer;\n position: relative;\n font-family: ${({ theme }) => theme.typography.fontFamilyBase};\n font-size: 1.125rem;\n color: ${({ theme }) => theme.tokenColors.black};\n font-weight: normal;\n text-align: center;\n padding-block: 0.5rem;\n margin: 0;\n border-style: solid;\n border-width: 1px;\n\n transition: background-color 250ms ease, border-color 250ms ease,\n color 250ms ease;\n\n &:focus-within,\n &:hover {\n background-color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n border-color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n color: ${({ theme }) => theme.colors.textLight};\n }\n\n ${({ theme, checked }) =>\n checked\n ? css`\n background-color: ${theme.tokenColors.darkBlue_500};\n border-color: ${theme.tokenColors.darkBlue_500};\n color: ${theme.colors.textLight};\n `\n : css`\n border-color: ${theme.tokenColors.black};\n `}\n`;\n\nconst Logos = styled.div`\n display: flex;\n gap: 0.5rem;\n padding-block: 0.5rem;\n padding-inline: 0.5rem;\n\n img {\n max-height: 2.5rem;\n min-width: 0;\n width: fit-content;\n }\n\n img:nth-child(5) {\n max-height: 2rem;\n align-self: center;\n }\n`;\n\ntype ShortFormProps = {\n config: typeof nudges;\n};\n\nconst OtherAmountLabel = styled.label`\n font-weight: ${({ theme }) => theme.typography.fontWeightHeavy};\n font-size: ${({ theme }) => theme.fontSizes.s};\n text-align: center;\n margin: unset;\n`;\n\nconst ShortForm = ({ config }: ShortFormProps): ReactElement => {\n const [frequency, setFrequency] = useState<\"single\" | \"monthly\">(\"monthly\");\n const [nudgeIndex, setNudgeIndex] = useState(null);\n const [otherAmount, setOtherAmount] = useState(\"\");\n\n const router = useRouter();\n const { pushDonatePageInteraction } = useDataLayer();\n\n useEffect(() => {\n setNudgeIndex(null);\n setOtherAmount(\"\");\n }, [frequency]);\n\n return (\n {\n e.preventDefault();\n\n pushDonatePageInteraction(\"button click\", \"main donate cta\");\n\n const formEl = e.target as HTMLFormElement;\n const rawFormData = new FormData(formEl);\n const formData = Object.fromEntries(\n Array.from(rawFormData.entries()).filter(([, value]) => !!value)\n );\n\n // TODO replace with proper link\n const baseUrl = \"/support-us/your-donation\";\n const frequencyQuery =\n formData.frequency && formData.frequency === \"monthly\"\n ? \"?type=regular&frequency=Monthly\"\n : \"?type=single\";\n const amountQuery = formData.amount\n ? `&amount=${formData.amount.toString()}`\n : \"\";\n const url = `${baseUrl}${frequencyQuery}${amountQuery}`;\n router.push(url).catch(console.error);\n }}\n >\n \n
\n \n setFrequency(\"monthly\")}\n />\n Monthly\n \n\n \n setFrequency(\"single\")}\n />\n Single\n \n
\n
\n \n
\n {config[frequency].map(({ amount }, id) => (\n \n {\n setNudgeIndex(id);\n setOtherAmount(\"\");\n }}\n />\n £{amount}\n \n ))}\n
\n \n {config[frequency].map(\n ({ amount, impact }, id) =>\n impact && (\n \n
\n \n Or enter another amount\n \n\n \n \n e.target.setCustomValidity(\"Please enter a number.\")\n }\n onInput={(e: any) => e.target.setCustomValidity(\"\")}\n onChange={(e) => {\n setOtherAmount(e.target.value.trim());\n setNudgeIndex(null);\n }}\n extraLeft=\"£\"\n label=\"\"\n />\n \n
\n
\n\n \n \n Donate now\n \n \n\n \n \n \n \n \n \n \n \n \n \n );\n};\n\n// TODO Clean this up when the hero image is finalized\nconst testHeroImages = [\n { src: \"/assets/donate-landing-page/hero_0.png\", position: \"center\" },\n { src: \"/assets/donate-landing-page/hero_1.jpg\", position: \"top center\" },\n { src: \"/assets/donate-landing-page/hero_2.png\", position: \"top right\" },\n {\n src: \"/assets/donate-landing-page/hero_3_medium.jpg\",\n position: \"top right\",\n },\n { src: \"/assets/donate-landing-page/hero_4.png\", position: \"center\" },\n];\n\ntype HeroProps = {\n imageIndex?: number;\n};\n\nconst HeroContainer = styled.div`\n --hero-image-height: 500px;\n\n background-color: ${({ theme }) => theme.tokenColors.white};\n margin-inline: auto;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n background-color: ${({ theme }) => theme.tokenColors.grey_200};\n position: relative;\n\n max-width: 1440px;\n max-height: var(--hero-image-height);\n }\n`;\n\nconst HeroImage = styled.img<{ position?: string }>`\n object-fit: cover;\n object-position: ${({ position }) => position ?? \"center\"};\n height: 10rem;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n height: var(--hero-image-height);\n }\n`;\n\nconst HeroStrapline = styled(Heading)`\n font-size: ${({ theme }) => theme.fontSizes.l};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n font-size: ${({ theme }) => theme.fontSizes.xl};\n }\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n font-size: ${({ theme }) => theme.fontSizes.xxl};\n }\n`;\n\nconst Hero = ({ imageIndex = 0 }: HeroProps): ReactElement => (\n
\n \n \n \n \n \n \n Help us bring about a world where everybody lives longer, better lives,\n free from the fear of cancer.\n \n \n
\n);\n\n// TODO Custom small screen media query to account for Galaxy Fold like screen\nconst NavList = styled.ul`\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: space-between;\n margin-block: unset;\n padding: var(--block-padding) 0;\n\n transition: max-height 0.2s ease-in-out 50ms, padding 0.3s ease-in-out;\n max-height: var(--max-height);\n overflow: hidden;\n\n @media (width < 380px) {\n & a {\n font-size: 0.777rem;\n }\n }\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n max-height: max-content;\n flex-direction: row;\n padding-block: 1rem;\n transition: unset;\n }\n`;\n\nconst NavContainer = styled(MaxWidth)`\n position: relative;\n padding: ${({ theme }) => theme.spacing.xxs};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n padding: 0 ${({ theme }) => theme.spacing.s};\n }\n`;\n\nconst NavItem = styled.li<{ withBorder?: boolean; isSelected?: boolean }>`\n list-style: none;\n --sub-menu-display: none;\n --vertical-hover-range: 1rem;\n --horizontal-hover-range: 0.5rem;\n --horizontal-link-padding: 0.5rem;\n --vertical-link-padding: 0.5rem;\n\n & > a {\n font-family: ${({ theme }) => theme.typography.fontFamilyHeadings};\n font-weight: ${({ theme }) => theme.typography.fontWeightMedium};\n }\n\n & > a > span {\n display: none;\n }\n\n ${({ withBorder }) =>\n withBorder\n ? css`\n @media (max-width: ${({ theme }) => theme.breakpoint.tablet}) {\n & > a {\n display: block;\n padding-block: var(--vertical-link-padding);\n padding-inline: var(--horizontal-link-padding);\n\n ${({ isSelected }) =>\n isSelected\n ? css`\n border: solid 1px #c6c6c6;\n border-radius: 0.25rem;\n padding-block: calc(var(--vertical-link-padding) - 1px);\n padding-inline: calc(\n var(--horizontal-link-padding) - 1px\n );\n color: ${({ theme }) => theme.colors.linkColorHover};\n `\n : \"\"}\n }\n }\n `\n : \"\"}\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n padding-block: var(--vertical-hover-range);\n margin-block: calc(var(--vertical-hover-range) * -1);\n\n padding-inline: var(--horizontal-hover-range);\n margin-inline: calc(var(--horizontal-hover-range) * -1);\n\n &:hover {\n --sub-menu-display: block;\n }\n\n & > a > span {\n display: inline;\n padding-inline-start: 0.25rem;\n }\n }\n`;\n\ntype MenuItemContent = {\n label: string;\n url: string;\n};\n\ntype SubMenuContent = {\n label: string;\n content: Array;\n};\n\ntype MenuItem = {\n title: MenuItemContent;\n subMenu: Array;\n};\n\n// About cancer submenu\nconst cancerTypesMenu = {\n label: \"cancer-type-menu\",\n content: [\n {\n label: \"Cancer types\",\n url: \"https://www.cancerresearchuk.org/about-cancer/type\",\n },\n {\n label: \"Breast cancer\",\n url: \"https://www.cancerresearchuk.org/about-cancer/breast-cancer\",\n },\n {\n label: \"Bowel cancer\",\n url: \"https://www.cancerresearchuk.org/about-cancer/bowel-cancer\",\n },\n {\n label: \"Lung cancer\",\n url: \"https://www.cancerresearchuk.org/about-cancer/lung-cancer\",\n },\n {\n label: \"Prostate cancer\",\n url: \"https://www.cancerresearchuk.org/about-cancer/prostate-cancer\",\n },\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/about-cancer/type\",\n },\n ],\n};\n\nconst cancersInGeneralMenu = {\n label: \"cancers-in-general-menu\",\n content: [\n {\n label: \"Cancer in general\",\n url: \"https://www.cancerresearchuk.org/about-cancer/cancer-in-general\",\n },\n {\n label: \"Symptoms\",\n url: \"https://www.cancerresearchuk.org/about-cancer/cancer-symptoms\",\n },\n {\n label: \"Screening\",\n url: \"https://www.cancerresearchuk.org/about-cancer/screening\",\n },\n {\n label: \"Tests\",\n url: \"https://www.cancerresearchuk.org/about-cancer/tests-and-scans\",\n },\n {\n label: \"Treatment\",\n url: \"https://www.cancerresearchuk.org/about-cancer/treatment\",\n },\n {\n label: \"Clinical trials\",\n url: \"https://www.cancerresearchuk.org/about-cancer/find-a-clinical-trial\",\n },\n ],\n};\n\nconst causesOfCancerMenu = {\n label: \"causes-of-cancer-menu\",\n content: [\n {\n label: \"Causes of cancer\",\n url: \"https://www.cancerresearchuk.org/about-cancer/causes-of-cancer\",\n },\n {\n label: \"Smoking\",\n url: \"https://www.cancerresearchuk.org/about-cancer/causes-of-cancer/smoking-and-cancer\",\n },\n {\n label: \"Alcohol\",\n url: \"https://www.cancerresearchuk.org/about-cancer/causes-of-cancer/alcohol-and-cancer\",\n },\n {\n label: \"Diet\",\n url: \"https://www.cancerresearchuk.org/about-cancer/causes-of-cancer/diet-and-cancer\",\n },\n {\n label: \"Obesity\",\n url: \"https://www.cancerresearchuk.org/about-cancer/causes-of-cancer/bodyweight-and-cancer\",\n },\n {\n label: \"Sun and UV\",\n url: \"https://www.cancerresearchuk.org/about-cancer/causes-of-cancer/sun-uv-and-cancer\",\n },\n ],\n};\n\nconst copingWithCancerMenu = {\n label: \"coping-with-cancer-menu\",\n content: [\n {\n label: \"Coping with cancer\",\n url: \"https://www.cancerresearchuk.org/about-cancer/coping-with-cancer\",\n },\n {\n label: \"Managing symptoms and side effects\",\n url: \"https://www.cancerresearchuk.org/about-cancer/coping-with-cancer/coping-physically\",\n },\n {\n label: \"Mental health and cancer\",\n url: \"https://www.cancerresearchuk.org/about-cancer/coping/mental-health-cancer\",\n },\n {\n label: \"Money and travel\",\n url: \"https://www.cancerresearchuk.org/about-cancer/coping-with-cancer/coping-practically\",\n },\n {\n label: \"Death and dying\",\n url: \"https://www.cancerresearchuk.org/about-cancer/coping-with-cancer/dying\",\n },\n {\n label: \"Cancer Chat forum\",\n url: \"https://cancerchat.cancerresearchuk.org\",\n },\n ],\n};\n\nconst healthProfessionalsMenu = {\n label: \"health-professionals-menu\",\n content: [\n {\n label: \"Health Professionals\",\n url: \"https://www.cancerresearchuk.org/health-professional\",\n },\n {\n label: \"Cancer Statistics\",\n url: \"https://www.cancerresearchuk.org/health-professional/cancer-statistics\",\n },\n {\n label: \"Cancer Screening\",\n url: \"https://www.cancerresearchuk.org/health-professional/screening\",\n },\n {\n label: \"Learning and Support\",\n url: \"https://www.cancerresearchuk.org/health-professional/learning-and-support\",\n },\n {\n label: \"NICE suspected cancer referral guidelines\",\n url: \"https://www.cancerresearchuk.org/health-professional/learning-and-development-tools/nice-cancer-referral-guidelines\",\n },\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/health-professional\",\n },\n ],\n};\n\nconst aboutCancerSubMenu = [\n cancerTypesMenu,\n cancersInGeneralMenu,\n causesOfCancerMenu,\n copingWithCancerMenu,\n healthProfessionalsMenu,\n];\n\nconst aboutCancer: MenuItem = {\n title: {\n label: \"About cancer\",\n url: \"https://www.cancerresearchuk.org/about-cancer/\",\n },\n subMenu: aboutCancerSubMenu,\n};\n\nconst donateMenu = {\n label: \"donate-menu\",\n content: [\n {\n label: \"Donate\",\n url: \"https://www.cancerresearchuk.org/get-involved/donate\",\n },\n {\n label: \"Make a donation\",\n url: \"https://www.cancerresearchuk.org/get-involved/donate\",\n },\n {\n label: \"By cancer type\",\n url: \"https://www.cancerresearchuk.org/get-involved/donate/donate-by-cancer-type\",\n },\n {\n label: \"Leave a legacy gift\",\n url: \"https://www.cancerresearchuk.org/get-involved/leave-a-legacy-gift-in-your-will\",\n },\n {\n label: \"Donate in Memory\",\n url: \"https://www.cancerresearchuk.org/get-involved/donate/donate-in-memory\",\n },\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/get-involved/donate\",\n },\n ],\n};\n\nconst findAnEventMenu = {\n label: \"find-an-event-menu\",\n content: [\n {\n label: \"Find an event\",\n url: \"https://www.cancerresearchuk.org/get-involved/find-an-event\",\n },\n {\n label: \"Race for Life\",\n url: \"https://www.cancerresearchuk.org/get-involved/find-an-event/charity-runs/race-for-life\",\n },\n {\n label: \"Charity runs\",\n url: \"https://www.cancerresearchuk.org/get-involved/find-an-event/charity-runs\",\n },\n {\n label: \"Charity walks\",\n url: \"https://www.cancerresearchuk.org/get-involved/find-an-event/charity-walks-treks-and-hikes\",\n },\n {\n label: \"Search events\",\n url: \"https://www.cancerresearchuk.org/get-involved/find-an-event/search-results\",\n },\n {\n label: \"Relay For Life\",\n url: \"http://relay.cancerresearchuk.org\",\n },\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/get-involved/find-an-event\",\n },\n ],\n};\n\nconst volunteerMenu = {\n label: \"volunteer-menu\",\n content: [\n {\n label: \"Volunteer\",\n url: \"https://www.cancerresearchuk.org/get-involved/volunteer\",\n },\n {\n label: \"Volunteer in our shops\",\n url: \"https://www.cancerresearchuk.org/get-involved/volunteer/volunteer-in-our-shops\",\n },\n {\n label: \"Help at an event\",\n url: \"https://www.cancerresearchuk.org/get-involved/volunteer/help-at-an-event\",\n },\n {\n label: \"Help us raise money\",\n url: \"https://www.cancerresearchuk.org/get-involved/volunteer/help-us-raise-money\",\n },\n {\n label: \"Campaign for us\",\n url: \"https://www.cancerresearchuk.org/get-involved/campaign-for-us\",\n },\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/get-involved/volunteer\",\n },\n ],\n};\n\nconst doYourOwnFundraisingMenu = {\n label: \"do-your-own-fundraising-menu\",\n content: [\n {\n label: \"Do your own fundraising\",\n url: \"https://www.cancerresearchuk.org/get-involved/do-your-own-fundraising\",\n },\n {\n label: \"Fundraising ideas\",\n url: \"https://www.cancerresearchuk.org/get-involved/do-your-own-fundraising/fundraising-ideas\",\n },\n {\n label: \"Get a fundraising pack\",\n url: \"https://www.cancerresearchuk.org/get-involved/do-your-own-fundraising/get-fundraising-pack\",\n },\n {\n label: \"Return fundraising money\",\n url: \"https://www.cancerresearchuk.org/get-involved/do-your-own-fundraising/return-your-money\",\n },\n {\n label: \"Fundraise by cancer type\",\n url: \"https://www.cancerresearchuk.org/get-involved/do-your-own-fundraising/target-your-fundraising\",\n },\n {\n label: \"Set up a Cancer Research UK Giving Page\",\n url: \"https://www.cancerresearchuk.org/get-involved/do-your-own-fundraising/practical-fundraising-help/set-up-a-cancer-research-uk-giving-page\",\n },\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/get-involved/do-your-own-fundraising\",\n },\n ],\n};\n\n// TODO Apparently the \"More...\" heading doesn't have a url (only on desktop). Using the top level url for now\nconst getInvolvedMoreMenu = {\n label: \"get-involved-more-menu\",\n content: [\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/get-involved\",\n },\n {\n label: \"Find a shop or superstore\",\n url: \"https://www.cancerresearchuk.org/get-involved/find-a-shop\",\n },\n {\n label: \"Become a partner\",\n url: \"https://www.cancerresearchuk.org/get-involved/become-a-partner\",\n },\n {\n label: \"Cancer Research UK for Children & Young People\",\n url: \"https://www.cancerresearchuk.org/get-involved/donate/kids-and-teens\",\n },\n {\n label: \"Our We Are campaign\",\n url: \"https://www.cancerresearchuk.org/get-involved/we-are\",\n },\n ],\n};\n\nconst getInvolvedSubMenu = [\n donateMenu,\n findAnEventMenu,\n volunteerMenu,\n doYourOwnFundraisingMenu,\n getInvolvedMoreMenu,\n];\n\nconst getInvolved: MenuItem = {\n title: {\n label: \"Get involved\",\n url: \"https://www.cancerresearchuk.org/get-involved/\",\n },\n subMenu: getInvolvedSubMenu,\n};\n\nconst byCancerTypeMenu = {\n label: \"by-cancer-type-menu\",\n content: [\n {\n label: \"By cancer type\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-type\",\n },\n {\n label: \"Brain tumours\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-type/our-research-on-brain-tumours\",\n },\n {\n label: \"Skin cancer\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-type/our-research-on-skin-cancer\",\n },\n {\n label: \"Breast cancer\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-type/our-research-into-breast-cancer\",\n },\n {\n label: \"All cancer types\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-type\",\n },\n ],\n};\n\nconst byCancerTopicMenu = {\n label: \"by-cancer-topic-menu\",\n content: [\n {\n label: \"By cancer topic\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-subject\",\n },\n {\n label: \"New treatments\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-subject/our-research-on-clinical-trials\",\n },\n {\n label: \"Cancer biology\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-subject/our-research-on-cancer-biology\",\n },\n {\n label: \"Cancer drugs\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-subject/our-research-on-cancer-drugs\",\n },\n {\n label: \"All cancer subjects\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-by-cancer-subject\",\n },\n ],\n};\n\nconst nearYouMenu = {\n label: \"near-you-menu\",\n content: [\n {\n label: \"Near you\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-near-you\",\n },\n {\n label: \"Belfast\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-near-you/our-research-in-belfast\",\n },\n {\n label: \"Cardiff\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-near-you/our-research-in-cardiff\",\n },\n {\n label: \"Edinburgh\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-near-you/our-research-in-edinburgh\",\n },\n {\n label: \"All locations\",\n url: \"https://www.cancerresearchuk.org/our-research/our-research-near-you\",\n },\n ],\n};\n\nconst byResearcherMenu = {\n label: \"by-researcher-menu\",\n content: [\n {\n label: \"By Researcher\",\n url: \"https://www.cancerresearchuk.org/our-research/researchers\",\n },\n {\n label: \"Professor Duncan Baird\",\n url: \"https://www.cancerresearchuk.org/researchers/professor-duncan-baird\",\n },\n {\n label: \"Professor Fran Balkwill\",\n url: \"https://www.cancerresearchuk.org/researchers/professor-fran-balkwill\",\n },\n {\n label: \"Professor Andrew Biankin\",\n url: \"https://www.cancerresearchuk.org/researchers/professor-andrew-biankin\",\n },\n {\n label: \"See all researchers\",\n url: \"https://www.cancerresearchuk.org/researchers\",\n },\n ],\n};\n\nconst ourResearchMoreMenu = {\n label: \"our-research-more-menu\",\n content: [\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/our-research/\",\n },\n {\n label: \"Our achievements timeline\",\n url: \"https://www.cancerresearchuk.org/our-progress\",\n },\n {\n label: \"Our research strategy\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-research-strategy\",\n },\n {\n label: \"Involving animals in research\",\n url: \"https://www.cancerresearchuk.org/our-research/involving-animals-in-research\",\n },\n ],\n};\n\nconst ourResearchSubMenu = [\n byCancerTypeMenu,\n byCancerTopicMenu,\n nearYouMenu,\n byResearcherMenu,\n ourResearchMoreMenu,\n];\n\nconst ourResearch: MenuItem = {\n title: {\n label: \"Our research\",\n url: \"https://www.cancerresearchuk.org/our-research/\",\n },\n subMenu: ourResearchSubMenu,\n};\n\nconst researchOpportunitiesMenu = {\n label: \"research-opportunities-menu\",\n content: [\n {\n label: \"Research opportunities\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers\",\n },\n {\n label: \"For discovery researchers\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/research-opportunities-in-basic-science-and-discovery-research\",\n },\n {\n label: \"For clinical researchers\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/clinical-research\",\n },\n {\n label: \"For population researchers\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/research-opportunities-in-population-and-behavioural-research\",\n },\n {\n label: \"In drug discovery & development\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/drug-discovery-and-development\",\n },\n {\n label: \"In early detection & diagnosis\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/research-opportunities-in-early-detection-and-diagnosis\",\n },\n {\n label: \"For students & postdocs\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/opportunities-for-phd-students-and-postdoc-researchers\",\n },\n ],\n};\n\nconst ourFundingSchemesMenu = {\n label: \"our-funding-schemes-menu\",\n content: [\n {\n label: \"Our funding schemes\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-funding-schemes?items_per_page=40\",\n },\n {\n label: \"Career Development Fellowship\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-funding-schemes/career-development-fellowship\",\n },\n {\n label: \"Discovery Programme Awards\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-funding-schemes/discovery-programme-awards\",\n },\n {\n label: \"Clinical Trial Award\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-funding-schemes/clinical-trial-award-0\",\n },\n {\n label: \"Biology to Prevention Award\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-funding-schemes/biology-to-prevention-award\",\n },\n {\n label: \"View all schemes and deadlines\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-funding-schemes\",\n },\n ],\n};\n\nconst applyingForFundingMenu = {\n label: \"applying-for-funding-menu\",\n content: [\n {\n label: \"Applying for funding\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/applying-for-funding\",\n },\n {\n label: \"Start your application online\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/applying-for-funding/start-your-funding-application-online\",\n },\n {\n label: \"How to make a successful application\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/applying-for-funding/how-to-make-a-successful-application\",\n },\n {\n label: \"Funding committees\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/applying-for-funding/funding-committees\",\n },\n {\n label: \"Successful applicant case studies\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/applying-for-funding/how-to-make-a-successful-application/successful-applicant-case-studies\",\n },\n ],\n};\n\nconst howWeDeliverResearchMenu = {\n label: \"how-we-deliver-research-menu\",\n content: [\n {\n label: \"How we deliver research\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/how-we-deliver-research\",\n },\n {\n label: \"Our research strategy\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-research-strategy\",\n },\n {\n label: \"Our research infrastructure\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/our-research-infrastructure\",\n },\n {\n label: \"Events and conferences\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/research-events-and-conferences\",\n },\n {\n label: \"Our research partnerships\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/how-we-deliver-research/our-research-partnerships\",\n },\n {\n label: \"Facts & figures about our funding\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/facts-and-figures-about-our-research-funding\",\n },\n ],\n};\n\nconst fundingForResearchersMoreMenu = {\n label: \"funding-for-researchers-more-menu\",\n content: [\n {\n label: \"More...\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/\",\n },\n {\n label: \"Develop your research career\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/research-career-development-opportunities\",\n },\n {\n label: \"Recently funded awards\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/how-we-deliver-research/recently-funded-awards\",\n },\n {\n label: \"Manage your research grant\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/manage-your-research-grant\",\n },\n {\n label: \"Notify us of new publications\",\n url: \"https://www.cancerresearchuk.org/home/funding-for-researchers/manage-your-research-grant/tell-us-about-new-publications\",\n },\n ],\n};\n\nconst fundingForResearchersSubMenu = [\n researchOpportunitiesMenu,\n ourFundingSchemesMenu,\n applyingForFundingMenu,\n howWeDeliverResearchMenu,\n fundingForResearchersMoreMenu,\n];\n\nconst funding: MenuItem = {\n title: {\n label: \"Funding for researchers\",\n url: \"https://www.cancerresearchuk.org/funding-for-researchers/\",\n },\n subMenu: fundingForResearchersSubMenu,\n};\n\nconst findAShopMenu = {\n label: \"find-a-shop-menu\",\n content: [\n {\n label: \"Find a shop\",\n url: \"https://www.cancerresearchuk.org/get-involved/find-a-shop\",\n },\n {\n label: \"Volunteer in a shop\",\n url: \"https://www.cancerresearchuk.org/get-involved/volunteer/volunteer-in-our-shops\",\n },\n {\n label: \"Donate goods to a shop\",\n url: \"https://www.cancerresearchuk.org/get-involved/donate/donate-goods\",\n },\n {\n label: \"Our superstores\",\n url: \"https://www.cancerresearchuk.org/get-involved/ways-to-shop/superstores\",\n },\n ],\n};\n\nconst shopOnlineMenu = {\n label: \"shop-online-menu\",\n content: [\n {\n label: \"Shop online\",\n url: \"https://shop.cancerresearchuk.org/\",\n },\n {\n label: \"Race for Life\",\n url: \"https://shop.cancerresearchuk.org/fundraising-events/race-for-life\",\n },\n {\n label: \"Wedding favours\",\n url: \"https://shop.cancerresearchuk.org/products/wedding-favours\",\n },\n {\n label: \"Cancer Care\",\n url: \"https://shop.cancerresearchuk.org/cancer-care\",\n },\n {\n label: \"Flower Shop\",\n url: \"https://flowershop.cancerresearchuk.org/\",\n },\n ],\n};\n\nconst ourEbayShopMenu = {\n label: \"our-ebay-shop-menu\",\n content: [\n {\n label: \"Our eBay store\",\n url: \"https://www.ebay.co.uk/str/ukcancerresearch\",\n },\n {\n label: \"Dresses\",\n url: \"https://www.ebay.co.uk/str/ukcancerresearch/Dresses/_i.html?_storecat=13763243016\",\n },\n {\n label: \"Shoes and boots\",\n url: \"https://www.ebay.co.uk/str/ukcancerresearch/Shoes-and-Boots/_i.html?_storecat=13763242016\",\n },\n {\n label: \"Bags and purses\",\n url: \"https://www.ebay.co.uk/str/ukcancerresearch/Bags-Purses/_i.html?_storecat=13869673016\",\n },\n ],\n};\n\nconst shopSubMenu = [findAShopMenu, shopOnlineMenu, ourEbayShopMenu];\n\nconst shop: MenuItem = {\n title: {\n label: \"Shop\",\n url: \"https://www.cancerresearchuk.org/get-involved/ways-to-shop/\",\n },\n subMenu: shopSubMenu,\n};\n\nconst whatWeDoMenu = {\n label: \"what-we-do-menu\",\n content: [\n {\n label: \"What we do\",\n url: \"https://www.cancerresearchuk.org/about-us\",\n },\n {\n label: \"We beat cancer\",\n url: \"https://www.cancerresearchuk.org/our-research\",\n },\n {\n label: \"We fundraise\",\n url: \"https://www.cancerresearchuk.org/get-involved/how-your-support-helps\",\n },\n {\n label: \"We develop policy\",\n url: \"https://www.cancerresearchuk.org/about-us/we-develop-policy\",\n },\n {\n label: \"Our global role\",\n url: \"https://www.cancerresearchuk.org/global-role\",\n },\n ],\n};\n\nconst ourOrganisationMenu = {\n label: \"our-organisation-menu\",\n content: [\n {\n label: \"Our organisation\",\n url: \"https://www.cancerresearchuk.org/about-us/our-organisation\",\n },\n {\n label: \"Our strategy\",\n url: \"https://www.cancerresearchuk.org/about-us/our-organisation/beating-cancer-sooner-our-strategy\",\n },\n {\n label: \"Our Trustees\",\n url: \"https://www.cancerresearchuk.org/about-us/how-we-are-run/our-trustees\",\n },\n {\n label: \"CEO and Executive Board\",\n url: \"https://www.cancerresearchuk.org/about-us/how-we-are-run/chief-executive-and-executive-board\",\n },\n {\n label: \"How we spend your money\",\n url: \"https://www.cancerresearchuk.org/about-us/our-organisation/how-we-spend-your-money\",\n },\n ],\n};\n\nconst careersMenu = {\n label: \"careers-menu\",\n content: [\n {\n label: \"Careers\",\n url: \"https://www.cancerresearchuk.org/about-us/careers\",\n },\n {\n label: \"Early careers\",\n url: \"https://www.cancerresearchuk.org/about-us/careers/early-in-career-opportunities\",\n },\n {\n label: \"Our teams\",\n url: \"https://www.cancerresearchuk.org/about-us/careers/teams\",\n },\n {\n label: \"Benefits\",\n url: \"https://www.cancerresearchuk.org/about-us/careers/benefits\",\n },\n ],\n};\n\nconst cancerNewsMenu = {\n label: \"cancer-news-menu\",\n content: [\n {\n label: \"Cancer news\",\n url: \"https://news.cancerresearchuk.org/\",\n },\n {\n label: \"News\",\n url: \"https://news.cancerresearchuk.org/latest-news/\",\n },\n {\n label: \"Analysis\",\n url: \"https://news.cancerresearchuk.org/news-type/analysis/\",\n },\n {\n label: \"Opinion\",\n url: \"https://news.cancerresearchuk.org/news-type/opinion/\",\n },\n ],\n};\n\n// TODO The \"More...\" disappeared for \"Contact us\" in mobile, so removed the \"More...\" for \"Contact us\" at top-level\nconst aboutUsMoreMenu = {\n label: \"about-us-more-menu\",\n content: [\n {\n label: \"Contact us\",\n url: \"https://www.cancerresearchuk.org/about-us/contact-us\",\n },\n {\n label: \"Press office\",\n url: \"https://www.cancerresearchuk.org/about-us/press-office\",\n },\n {\n label: \"Publications\",\n url: \"https://publications.cancerresearchuk.org\",\n },\n {\n label: \"Update your contact preferences\",\n url: \"https://www.cancerresearchuk.org/about-us/contact-us/opt-in-form\",\n },\n ],\n};\n\nconst aboutUsSubMenu = [\n whatWeDoMenu,\n ourOrganisationMenu,\n careersMenu,\n cancerNewsMenu,\n aboutUsMoreMenu,\n];\n\nconst aboutUs: MenuItem = {\n title: {\n label: \"About us\",\n url: \"https://www.cancerresearchuk.org/about-us/\",\n },\n subMenu: aboutUsSubMenu,\n};\n\nconst menu = [aboutCancer, getInvolved, ourResearch, funding, shop, aboutUs];\n\nconst createIdFromLabel = (label: string) =>\n label.replace(/\\s/g, \"-\").toLowerCase();\n\ntype SubMenuItemProps = {\n category: Array;\n id: string;\n};\n\nconst Categories = styled.div`\n display: grid;\n grid-auto-flow: column;\n gap: 2rem;\n justify-content: start;\n\n position: absolute;\n z-index: 10;\n background-color: ${({ theme }) => theme.colors.backgroundLight};\n\n top: 3.5rem;\n right: 1.25rem;\n bottom: auto;\n left: 1.25rem;\n inset: 3.5rem 1.25rem auto 1.25rem;\n\n border: solid 1px #c6c6c6;\n\n padding-block: 1rem;\n padding-inline: 1.5rem;\n`;\n\nconst Category = styled.ul`\n padding: unset;\n\n li {\n list-style: none;\n padding-block-end: 0.8rem;\n }\n\n li > a {\n font-family: ${({ theme }) => theme.typography.fontFamilyHeadings};\n text-decoration: none;\n color: ${({ theme }) => theme.colors.textDark};\n transition: color 250ms ease, text-decoration-color 250ms ease;\n }\n\n li:first-child > a {\n text-decoration-line: underline;\n text-decoration-color: transparent;\n color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n }\n\n li:first-child > a:hover {\n text-decoration-color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n }\n\n li > a:hover {\n color: ${({ theme }) => theme.tokenColors.magenta_500};\n }\n`;\n\nconst SubMenuItem = ({ category, id }: SubMenuItemProps) => (\n \n {category.map((item) => (\n \n {item.label}\n \n ))}\n \n);\n\n// TODO Fix height calculation to be more robust. Currently, this is container height - top offset - all padding\n// TODO Custom small screen media query to account for Galaxy Fold like screen\nconst MobileCategory = styled.ul`\n border: solid 1px #c6c6c6;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n padding-block-start: 0.5rem;\n padding-inline: 1rem;\n position: absolute;\n\n top: calc(3.6rem + 0.5px);\n right: 0.5rem;\n bottom: auto;\n left: 57%;\n inset: calc(3.6rem + 0.5px) 0.5rem auto 57%;\n\n background-color: ${({ theme }) => theme.colors.backgroundLight};\n height: calc(100% - 3.6rem - 1.5rem - 0.5px);\n\n li {\n list-style: none;\n padding-block-end: 0.8rem;\n }\n\n li > a {\n font-family: ${({ theme }) => theme.typography.fontFamilyHeadings};\n text-decoration: none;\n color: ${({ theme }) => theme.colors.textDark};\n transition: color 250ms ease, text-decoration-color 250ms ease;\n }\n\n @media (width < 380px) {\n padding-block-start: unset;\n padding-inline: 0.5rem;\n\n li {\n padding-block-end: 0.5rem;\n }\n }\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n display: none;\n }\n`;\n\ntype MobileSubMenuItemProp = {\n category: MenuItemContent;\n};\n\nconst MobileSubMenuItem = ({ category }: MobileSubMenuItemProp) => (\n
  • \n {category.label}\n
  • \n);\n\ntype SubMenuProps = {\n content: MenuItem[\"subMenu\"];\n};\n\nconst SubMenu = ({ content: categories }: SubMenuProps) => (\n \n {categories.map(({ label, content }) => (\n \n ))}\n \n);\n\nconst SubMenuContainer = styled.div<{ isVisible?: boolean }>`\n ${({ isVisible }) => (isVisible ? \"--sub-menu-display: block;\" : \"\")}\n display: var(--sub-menu-display);\n`;\n\ntype NavLinkProps = {\n content: MenuItem;\n id: string;\n isSelected: boolean;\n selectedLinkHandler: (label: string) => void;\n};\n\ntype MobileSubMenuProps = SubMenuProps;\n\nconst MobileSubMenu = ({ content: categories }: MobileSubMenuProps) => (\n \n {categories.map(({ label, content }) => (\n \n ))}\n \n);\n\nconst isBigScreen = () =>\n typeof window !== \"undefined\" &&\n window.matchMedia(`(min-width: ${crukTheme.breakpoint.tablet})`).matches;\n\nconst NavLink = ({\n content,\n id,\n isSelected,\n selectedLinkHandler,\n}: NavLinkProps): ReactElement => (\n \n {\n if (!isBigScreen() && !isSelected) {\n e.preventDefault();\n selectedLinkHandler(id);\n }\n }}\n >\n {content.title.label}\n \n \n \n \n {isSelected && (\n \n \n \n )}\n \n \n \n \n);\n\ntype NavLinksProps = {\n menuItems: Array;\n selectedLink: string;\n selectedLinkHandler: (label: string) => void;\n};\n\nconst NavLinks = ({\n menuItems,\n selectedLink,\n selectedLinkHandler,\n}: NavLinksProps): ReactElement => (\n <>\n {menuItems.map((item) => (\n \n ))}\n \n);\n\nconst NavToggle = styled(Button)`\n min-height: max-content;\n padding-block: 0.5rem;\n padding-inline-start: 0.5rem;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n display: none;\n }\n\n span svg {\n transform: rotate(var(--rotation));\n transition: transform 0.2s ease-in-out;\n }\n`;\n\n// TODO Consider switching to JS approach and calculate element height: https://carlanderson.xyz/how-to-animate-on-height-auto/\nconst NavBar = (): ReactElement => {\n const [menuOpen, setMenuOpen] = useState(false);\n const [selectedLink, setSelectedLink] = useState(\"\");\n return (\n \n );\n};\n\n// TODO Consider using container queries instead of media queries\nconst horizontalGridTemplateArea = (rightAlignImage: boolean) => {\n const style = rightAlignImage\n ? `\"heading image\"\n \"text image\"\n `\n : `\"image heading\"\n \"image text\"\n `;\n\n return `grid-template-areas: ${style};`;\n};\n\nconst Block = styled(Box)<{\n rightAlignImage: boolean;\n titleFirst: boolean;\n vertical: boolean;\n block: boolean;\n smallGap: boolean;\n}>`\n --horizontal-gap: ${({ smallGap }) => (smallGap ? \"2.5rem\" : \"4rem\")};\n display: grid;\n gap: 1rem;\n\n grid-template-areas:\n \"${({ titleFirst }) => (titleFirst ? \"heading\" : \"image\")}\"\n \"${({ titleFirst }) => (titleFirst ? \"image\" : \"heading\")}\"\n \"text\";\n\n ${({ block }) =>\n block\n ? css`\n ${horizontalGridTemplateArea(false)}\n `\n : \"\"}\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n gap: 1rem var(--horizontal-gap);\n ${({ vertical, rightAlignImage }) =>\n vertical ? \"\" : horizontalGridTemplateArea(rightAlignImage)}\n }\n`;\n\ntype ContentBlockProps = {\n imageSrc?: string | number;\n imageAlt?: string;\n hasIcon?: boolean;\n title?: string;\n asH3?: boolean;\n large?: boolean;\n children: ReactNode;\n rightAlignImage?: boolean;\n titleFirst?: boolean;\n vertical?: boolean;\n block?: boolean;\n imageSize?: \"normal\" | \"small\";\n smallGap?: boolean;\n bubble?: boolean;\n};\n\nconst BlockImage = styled.div<{\n vertical: boolean;\n rightAlignImage: boolean;\n block: boolean;\n}>`\n grid-area: image;\n margin-inline: auto;\n width: auto;\n text-align: center;\n\n ${({ block }) =>\n block\n ? css`\n align-self: center;\n `\n : \"\"}\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n text-align: ${({ vertical, rightAlignImage }) =>\n vertical ? \"center\" : rightAlignImage ? \"start\" : \"end\"};\n }\n`;\n\nconst ContentAmountIcon = styled.div<{ isIcon: boolean }>`\n --size: 6rem;\n border-radius: 50%;\n width: var(--size);\n aspect-ratio: 1;\n margin-inline: auto;\n\n ${({ isIcon }) =>\n isIcon\n ? css`\n background-color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n `\n : \"\"}\n\n * {\n line-height: var(--size);\n }\n`;\n\nconst ContentAmount = styled.p`\n margin: unset;\n font-family: ${({ theme }) => theme.typography.fontFamilyHeadings};\n font-size: 2rem;\n color: ${({ theme }) => theme.tokenColors.white};\n font-weight: ${({ theme }) => theme.typography.fontWeightHeavy};\n text-align: center;\n`;\n\nconst RoundImage = styled.img<{ size: \"normal\" | \"small\" }>`\n object-fit: cover;\n ${({ theme }) => (theme.name === \"new_cruk\" ? \"\" : \"border-radius: 50%;\")}\n width: ${({ size }) => (size === \"normal\" ? \"min(80vw, 250px)\" : \"10rem\")};\n max-width: ${({ size }) => (size === \"normal\" ? \"250px\" : \"10rem\")};\n aspect-ratio: 1;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n width: ${({ size }) => (size === \"normal\" ? \"min(35vw, 250px)\" : \"10rem\")};\n }\n`;\n\nconst RoundIcon = styled.div<{ size: \"normal\" | \"small\" }>`\n --size: ${({ size }) => (size === \"normal\" ? \"min(100%, 175px)\" : \"8rem\")};\n\n ${({ theme }) => (theme.name === \"new_cruk\" ? \"\" : \"border-radius: 50%;\")}\n width: var(--size);\n height: var(--size);\n ${({ theme }) =>\n theme.name === \"new_cruk\"\n ? \"\"\n : css`\n background-color: ${theme.tokenColors.darkBlue_100};\n `}\n margin-inline: auto;\n\n img {\n object-fit: cover;\n object-position: center;\n width: var(--size);\n aspect-ratio: 1;\n\n ${({ theme }) =>\n theme.name === \"new_cruk\" ? \"\" : \"transform: scale(125%);\"}\n }\n`;\n\ntype ContentImageProps = {\n isIcon: boolean;\n size: \"normal\" | \"small\";\n src: string;\n alt: string;\n};\n\nconst ContentImage = ({\n src,\n alt,\n isIcon,\n size,\n}: ContentImageProps): ReactElement => {\n if (isIcon) {\n return (\n \n {alt}\n \n );\n }\n\n return ;\n};\n\nconst BlockHeading = styled(Heading)`\n grid-area: heading;\n align-self: end;\n`;\n\nconst BlockH3StyledHeading = styled(Heading)`\n grid-area: heading;\n align-self: end;\n\n font-size: ${({ theme }) => theme.fontSizes.l};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.desktop}) {\n font-size: ${({ theme }) => theme.fontSizes.xl};\n }\n`;\n\nconst BlockText = styled.div`\n grid-area: text;\n overflow: hidden;\n`;\n\nconst BubbleContainer = styled.div`\n position: relative;\n isolation: isolate;\n`;\n\nconst Bubble = styled.div`\n --size: 1rem;\n\n position: absolute;\n z-index: -1;\n\n top: 50%;\n right: 50%;\n bottom: 50%;\n left: 50%;\n inset: 50%;\n\n width: var(--size);\n aspect-ratio: 1;\n border-radius: 50%;\n background-color: var(--bubble-color);\n\n transform-origin: center;\n transform: var(--bubble-transform);\n`;\n\n// TODO Remove additional debugging div\nconst BubbleImage = ({ children }: { children: ReactNode }): ReactElement => (\n \n \n \n \n\n {children}\n \n);\n\nconst ContentBlock = ({\n imageSrc,\n imageAlt = \"\",\n title,\n asH3 = false,\n children,\n rightAlignImage = false,\n titleFirst = false,\n vertical = false,\n block = false,\n large = false,\n hasIcon = false,\n imageSize = \"normal\",\n smallGap = false,\n bubble = false,\n}: ContentBlockProps): ReactElement => (\n \n \n {imageSrc && typeof imageSrc === \"string\" ? (\n bubble ? (\n \n \n \n ) : (\n \n )\n ) : typeof imageSrc === \"number\" ? (\n \n £{imageSrc}\n \n ) : (\n \n )}\n \n {asH3 ? (\n \n {title}\n \n ) : (\n \n {title}\n \n )}\n {children}\n \n);\n\nconst SkeletonImage = styled.div<{ width: number }>`\n width: clamp(100px, 100%, ${({ width }) => width}px);\n aspect-ratio: 1 / 1;\n background-color: ${({ theme }) => theme.tokenColors.darkBlue_500};\n border-radius: 50%;\n`;\n\nconst MissionBlock = (): ReactElement => (\n \n <>\n \n Oliver was diagnosed with tonsil cancer in 2009 after spotting swollen\n glands under his jaw. He then had a tonsillectomy followed by\n chemotherapy.\n \n \n Oliver also took part in a trial we funded, which investigated whether a\n new type of radiotherapy caused fewer side effects and if it worked as\n well as standard radiotherapy for head and neck cancers.\n \n \n “I feel fortunate to have been offered the chance to help medical\n research. It’s an exciting time – we need the investment and\n the funds now.” – Oliver\n \n \n \n);\n\ntype MultiColumnContainerProps = {\n children: Array;\n columnIds: Array;\n};\n\nconst MultiColumnContainer = ({\n children,\n columnIds,\n}: MultiColumnContainerProps): ReactElement => {\n if (children.length !== columnIds.length) {\n return null;\n }\n\n return (\n \n {children.map((child, i) => (\n
    \n {child}\n
    \n ))}\n
    \n );\n};\n\nconst MultiColumnDiv = styled.div`\n display: grid;\n gap: 2.5rem;\n grid-auto-columns: 1fr;\n padding-top: 1.5rem;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n grid-template-columns: repeat(3, 1fr);\n }\n`;\n\nconst CtaButton = styled(Button)`\n display: block;\n margin-inline: auto;\n`;\n\ntype SectionProps = {\n title?: string;\n children: ReactNode;\n};\n\nconst SectionContent = styled.div<{ narrow?: boolean }>`\n max-width: ${({ theme }) => theme.breakpoint.tablet};\n margin-inline: auto;\n\n ${({ narrow }) =>\n narrow\n ? css`\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n padding-inline: 6rem;\n }\n `\n : \"\"}\n`;\n\nconst SectionHeading = styled(Heading)`\n font-size: ${({ theme }) => theme.fontSizes.xl};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n font-size: ${({ theme }) => theme.fontSizes.xxl};\n }\n`;\n\nconst Section = ({ title, children }: SectionProps): ReactElement => (\n <>\n {title && (\n \n {title}\n \n )}\n {children}\n \n);\n\nconst ImportanceBlock = (): ReactElement => {\n const router = useRouter();\n const { pushDonatePageInteraction } = useDataLayer();\n\n return (\n
    \n \n \n \n Every pound matters. But when you make a regular donation, even if\n it’s a small amount, your impact builds up over time to help\n more people like Alfred.\n \n \n \n \n A reliable income means we can plan ahead and commit to long-term\n research projects with huge potential to help beat cancer.\n \n \n \n \n Your regular donations support over 4,000 researchers, clinicians\n and nurses to transform how we prevent, diagnose and treat cancer,\n bringing hope to millions of people like Mei-Ling, now and in the\n future.\n \n \n \n \n {\n pushDonatePageInteraction(\"button click\", \"donate monthly cta\");\n\n router\n .push(\"/support-us/your-donation?type=regular\")\n .catch(console.error);\n }}\n >\n Donate monthly\n \n \n \n <>\n \n {\n pushDonatePageInteraction(\n \"link click\",\n \"increase regular gift\"\n );\n }}\n href=\"https://www.cancerresearchuk.org/get-involved/donate/manage-your-donation\"\n >\n Manage your regular donation here.\n \n \n \n If you’d like to decrease or stop your regular donation,\n please call us on 0300 123 1861 or email{\" \"}\n supporter.services@cancer.org.uk. We are so grateful\n for whatever support you can offer to help beat cancer.\n \n \n \n
    \n );\n};\n\nconst WhereYourDonationGoesBlock = (): ReactElement => (\n
    \n \n \n £10 a month for a year could fund a research nurse for one day to raise\n awareness of our trials and support and monitor patients during their\n treatment.\n \n \n £25 a month for a year could buy a special machine used to spin blood\n samples until they separate. Our scientists can then study cancerous\n cells to find out more about them and target their weak spots.\n \n \n £40 a month could run Cancer Chat for a whole day – our safe\n online space open to everyone affected by cancer. Cancer is\n unpredictable, so let’s give people affected by cancer the support\n they need at every turn.\n \n \n £50 a month for a year could fund a research assistant for a week,\n bringing us closer to the next cancer research breakthrough by helping\n to carry out important experiments.\n \n \n
    \n);\n\nconst RestrictedForm = styled.form`\n padding: unset;\n\n div:first-child > label {\n margin: unset;\n padding-block-end: 2.5rem;\n }\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n display: flex;\n gap: 1rem;\n\n div:first-child {\n width: 70%;\n }\n\n div:first-child > label {\n padding-block-end: unset;\n }\n\n div:last-child {\n align-self: end;\n flex-grow: 1;\n flex-basis: 11rem;\n }\n }\n`;\n\n// TODO Update researchAreas to include where the need is greatest\nconst ChooseWhereYourDonationGoesBlock = (): ReactElement => {\n const [restriction, setRestriction] = useState(\"\");\n const [showError, setShowError] = useState(false);\n\n const router = useRouter();\n const { pushDonatePageInteraction } = useDataLayer();\n\n return (\n
    \n \n \n We’re the only charity fighting over 200 types of cancer. So\n when you give to Cancer Research UK, we think carefully about where we\n spend the income across all cancer types.\n \n \n We have 17 areas of research you can choose to fund online. From bowel\n cancer to children’s cancers or simply where the need is\n greatest.\n \n \n For every pound we receive, 81p is available to beat cancer.\n \n {\n e.preventDefault();\n\n pushDonatePageInteraction(\"button click\", \"donate now cta\");\n\n const formEl = e.target as HTMLFormElement;\n const rawFormData = new FormData(formEl);\n const formData = Object.fromEntries(\n Array.from(rawFormData.entries()).filter(([, value]) => !!value)\n );\n\n const baseUrl = \"/support-us/your-donation\";\n const restrictionQuery =\n formData.restriction && formData.restriction !== \"GREATEST\"\n ? `?restriction=${formData.restriction.toString()}`\n : \"\";\n const url = `${baseUrl}${restrictionQuery}`;\n router.push(url).catch(console.error);\n }}\n >\n
    \n {\n const res = e.target.value;\n if (res === \"Unlisted\") {\n setShowError(true);\n setRestriction(\"GREATEST\");\n } else {\n setShowError(false);\n setRestriction(e.target.value);\n }\n }}\n name=\"restriction\"\n >\n \n \n
    \n \n Donate now\n \n \n {showError && (\n \n

    \n We’re not able to list all areas of research here, if you\n can’t find what you’re looking for please call us on{\" \"}\n 0300 123 1022 to complete your\n donation.\n

    \n
    \n )}\n
    \n
    \n );\n};\n\nconst ErrorBox = styled(Box)`\n border: 4px solid ${({ theme }) => theme.tokenColors.darkBlue_100};\n background-color: ${({ theme }) => theme.tokenColors.darkBlue_100};\n padding: 0 ${({ theme }) => theme.spacing.s};\n font-weight: bold;\n a {\n text-decoration: none;\n &:hover {\n text-decoration: underline;\n }\n }\n`;\n\nconst DonateHowYouWant = (): ReactElement => {\n const { pushDonatePageInteraction } = useDataLayer();\n\n return (\n
    \n \n \n In the UK, someone is diagnosed with cancer every two minutes and your\n donation will make a real difference to those affected by cancer, now\n and in the future.\n \n \n Every pound is important. We committed £443m to research in 2021\n thanks to our supporters.\n \n \n \n \n <>\n \n Donating online is the quickest way to give. To donate by cheque\n or to set up a regular gift by post, download and print the\n relevant form below and send your donation to us.\n \n {\n pushDonatePageInteraction(\n \"file download\",\n \"regular donation form\"\n );\n }}\n >\n Regular donation form\n \n {\n pushDonatePageInteraction(\n \"file download\",\n \"single donation form\"\n );\n }}\n >\n Single donation form\n \n \n \n \n <>\n \n Congrats! If you’ve finished fundraising, send us the money\n you’ve raised so we can use it to help beat cancer now and\n in the future.\n \n {\n pushDonatePageInteraction(\"link click\", \"send your money\");\n }}\n >\n Send us your fundraising money\n \n \n \n \n <>\n \n To support your friends and family’s fundraising, search for\n their giving page and donate to help change lives.\n \n {\n pushDonatePageInteraction(\"link click\", \"find a giving page\");\n }}\n >\n Find a giving page\n \n \n \n \n
    \n );\n};\n\nconst BlockLink = styled(Link)<{ spaced?: boolean }>`\n display: block;\n padding: unset;\n ${({ spaced }) =>\n spaced\n ? css`\n padding-block-end: 0.8rem;\n `\n : \"\"}\n`;\n\nconst LinkList = styled.li`\n list-style: none;\n padding-block-end: 0.8rem;\n`;\n\nconst UnorderedList = styled.ul`\n padding: unset;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n padding-inline-start: 2.5rem;\n }\n`;\n\nconst OtherWaysToDonate = (): ReactElement => (\n
    \n \n \n If you’re not looking to give an online donation today there are\n other things you can do to support our amazing research.\n \n \n \n \n Donate goods to a shop\n \n \n \n \n Donate in memory\n \n \n \n \n Leave a gift in your Will\n \n \n \n \n Fundraise at celebrations and special occasions\n \n \n \n \n Fundraise through your own giving page\n \n \n \n \n Explore philanthropy with Cancer Research UK\n \n \n \n \n Give your shares to support our work\n \n \n \n \n Learn about payroll giving\n \n \n \n \n Find out about Gift Aid\n \n \n \n \n
    \n);\n\nconst SectionContainer = styled.div<{ fullBleed?: boolean }>`\n padding-inline: ${({ fullBleed, theme }) =>\n fullBleed ? \"unset\" : theme.spacing.s};\n padding-block-start: ${({ theme }) => theme.spacing.m};\n padding-block-end: ${({ theme }) => theme.spacing.xl};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n padding-block-start: ${({ theme }) => theme.spacing.l};\n padding-block-end: ${({ theme }) => theme.spacing.xxl};\n }\n`;\n\nconst DonatePageContent = (): ReactElement => (\n <>\n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n);\n\nconst DonatePage = ({\n headerConfig,\n theme,\n}: {\n headerConfig: any;\n theme: ThemeType;\n}): ReactElement => {\n const [optimizelyContext] = useContext(OptimizelyContext);\n const { optimizely, optimizelyUserContext } = optimizelyContext;\n\n useOptimizelyTrack({\n event: \"start_donate_page\",\n client: optimizely,\n user: optimizelyUserContext,\n });\n\n return (\n \n \n \n \n \n Search\n \n \n \n
    \n

    Donate to Cancer Research UK

    \n \n
    \n