@newskit-render/core 0.0.0-d55b7d88

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.
Files changed (456) hide show
  1. package/.ci/trigger-circleci-workflow.sh +37 -0
  2. package/.eslintignore +23 -0
  3. package/.eslintrc +74 -0
  4. package/.prettierignore +19 -0
  5. package/.prettierrc +7 -0
  6. package/CHANGELOG.md +7638 -0
  7. package/Dockerfile +14 -0
  8. package/Dockerfile.withNewRelic +15 -0
  9. package/README.md +274 -0
  10. package/__tests__/pages/__snapshots__/brightcove.test.tsx.snap +20 -0
  11. package/__tests__/pages/__snapshots__/home.test.tsx.snap +1195 -0
  12. package/__tests__/pages/brightcove.test.tsx +34 -0
  13. package/__tests__/pages/empty.test.tsx +10 -0
  14. package/__tests__/pages/home.test.tsx +16 -0
  15. package/app-context/InstrumentationContextProvider.tsx +36 -0
  16. package/assets/fontFamily.ts +416 -0
  17. package/assets/fonts/Graphik-Black-App.ttf +0 -0
  18. package/assets/fonts/Graphik-BlackItalic-App.ttf +0 -0
  19. package/assets/fonts/Graphik-Bold-App.ttf +0 -0
  20. package/assets/fonts/Graphik-BoldItalic-App.ttf +0 -0
  21. package/assets/fonts/Graphik-Extralight-App.ttf +0 -0
  22. package/assets/fonts/Graphik-ExtralightItalic-App.ttf +0 -0
  23. package/assets/fonts/Graphik-Light-App.ttf +0 -0
  24. package/assets/fonts/Graphik-LightItalic-App.ttf +0 -0
  25. package/assets/fonts/Graphik-Medium-App.ttf +0 -0
  26. package/assets/fonts/Graphik-Medium-Web.woff2 +0 -0
  27. package/assets/fonts/Graphik-MediumItalic-App.ttf +0 -0
  28. package/assets/fonts/Graphik-Regular-App.ttf +0 -0
  29. package/assets/fonts/Graphik-Regular-Web.woff2 +0 -0
  30. package/assets/fonts/Graphik-RegularItalic-App.ttf +0 -0
  31. package/assets/fonts/Graphik-Semibold-App.ttf +0 -0
  32. package/assets/fonts/Graphik-Semibold-Web.woff2 +0 -0
  33. package/assets/fonts/Graphik-SemiboldItalic-App.ttf +0 -0
  34. package/assets/fonts/Graphik-Super-App.ttf +0 -0
  35. package/assets/fonts/Graphik-SuperItalic-App.ttf +0 -0
  36. package/assets/fonts/Graphik-Thin-App.ttf +0 -0
  37. package/assets/fonts/Graphik-ThinItalic-App.ttf +0 -0
  38. package/assets/fonts/Montserrat-Black.ttf +0 -0
  39. package/assets/fonts/Montserrat-BlackItalic.ttf +0 -0
  40. package/assets/fonts/Montserrat-Bold.ttf +0 -0
  41. package/assets/fonts/Montserrat-BoldItalic.ttf +0 -0
  42. package/assets/fonts/Montserrat-ExtraBold.ttf +0 -0
  43. package/assets/fonts/Montserrat-ExtraBoldItalic.ttf +0 -0
  44. package/assets/fonts/Montserrat-ExtraLight.ttf +0 -0
  45. package/assets/fonts/Montserrat-ExtraLightItalic.ttf +0 -0
  46. package/assets/fonts/Montserrat-Italic.ttf +0 -0
  47. package/assets/fonts/Montserrat-Light.ttf +0 -0
  48. package/assets/fonts/Montserrat-LightItalic.ttf +0 -0
  49. package/assets/fonts/Montserrat-Medium.ttf +0 -0
  50. package/assets/fonts/Montserrat-MediumItalic.ttf +0 -0
  51. package/assets/fonts/Montserrat-Regular.ttf +0 -0
  52. package/assets/fonts/Montserrat-SemiBold.ttf +0 -0
  53. package/assets/fonts/Montserrat-SemiBoldItalic.ttf +0 -0
  54. package/assets/fonts/Montserrat-Thin.ttf +0 -0
  55. package/assets/fonts/Montserrat-ThinItalic.ttf +0 -0
  56. package/assets/fonts/PublicoHeadline-Black-App.ttf +0 -0
  57. package/assets/fonts/PublicoHeadline-BlackItalic-App.ttf +0 -0
  58. package/assets/fonts/PublicoHeadline-Bold-App.ttf +0 -0
  59. package/assets/fonts/PublicoHeadline-Bold-Web.woff2 +0 -0
  60. package/assets/fonts/PublicoHeadline-BoldItalic-App.ttf +0 -0
  61. package/assets/fonts/PublicoHeadline-Extrabold-App.ttf +0 -0
  62. package/assets/fonts/PublicoHeadline-ExtraboldItalic-App.ttf +0 -0
  63. package/assets/fonts/PublicoHeadline-Italic-App.ttf +0 -0
  64. package/assets/fonts/PublicoHeadline-Light-App.ttf +0 -0
  65. package/assets/fonts/PublicoHeadline-LightItalic-App.ttf +0 -0
  66. package/assets/fonts/PublicoHeadline-Medium-App.ttf +0 -0
  67. package/assets/fonts/PublicoHeadline-MediumItalic-App.ttf +0 -0
  68. package/assets/fonts/PublicoHeadline-Roman-App.ttf +0 -0
  69. package/assets/fonts/PublicoHeadline-Roman-Web.woff2 +0 -0
  70. package/assets/fonts/PublicoText-Bold-App.ttf +0 -0
  71. package/assets/fonts/PublicoText-BoldItalic-App.ttf +0 -0
  72. package/assets/fonts/PublicoText-Italic-App.ttf +0 -0
  73. package/assets/fonts/PublicoText-Italic-Web.woff2 +0 -0
  74. package/assets/fonts/PublicoText-Roman-App.ttf +0 -0
  75. package/assets/fonts/PublicoText-Roman-Web.woff2 +0 -0
  76. package/assets/fonts/PublicoText-Semibold-App.ttf +0 -0
  77. package/assets/fonts/PublicoText-SemiboldItalic-App.ttf +0 -0
  78. package/assets/fonts/Roboto-Bold.ttf +0 -0
  79. package/assets/fonts/Roboto-Light.ttf +0 -0
  80. package/assets/fonts/Roboto-Medium.ttf +0 -0
  81. package/assets/fonts/Roboto-Regular.ttf +0 -0
  82. package/assets/fonts/TheSun-Bold.ttf +0 -0
  83. package/assets/fonts/TheSun-BoldItalic.ttf +0 -0
  84. package/assets/fonts/TheSun-HeavyCondensed.ttf +0 -0
  85. package/assets/fonts/TheSun-HeavyNarrow.ttf +0 -0
  86. package/assets/fonts/TheSun-Italic.ttf +0 -0
  87. package/assets/fonts/TheSun-Medium.ttf +0 -0
  88. package/assets/fonts/TheSun-MediumItalic.ttf +0 -0
  89. package/assets/fonts/TheSun-Regular.ttf +0 -0
  90. package/assets/fonts/TimesDigital-Bold.ttf +0 -0
  91. package/assets/fonts/TimesDigital-BoldItalic.ttf +0 -0
  92. package/assets/fonts/TimesDigital-BoldSC.ttf +0 -0
  93. package/assets/fonts/TimesDigital-Italic.ttf +0 -0
  94. package/assets/fonts/TimesDigital-Regular.ttf +0 -0
  95. package/assets/fonts/TimesDigital-RegularSC.ttf +0 -0
  96. package/assets/fonts/TimesDigitalW04-Bold.ttf +0 -0
  97. package/assets/fonts/TimesDigitalW04-BoldItalic.ttf +0 -0
  98. package/assets/fonts/TimesDigitalW04-BoldSC.ttf +0 -0
  99. package/assets/fonts/TimesDigitalW04-Italic.ttf +0 -0
  100. package/assets/fonts/TimesDigitalW04-Regular.ttf +0 -0
  101. package/assets/fonts/TimesDigitalW04-RegularSC.ttf +0 -0
  102. package/assets/fonts/TimesModern-Regular.otf +0 -0
  103. package/assets/fonts/attribuitions.mdx +35 -0
  104. package/assets/fonts/bitter-medium.woff +0 -0
  105. package/assets/fonts/bitter-medium.woff2 +0 -0
  106. package/assets/fonts/bitter-mediumitalic.woff +0 -0
  107. package/assets/fonts/bitter-mediumitalic.woff2 +0 -0
  108. package/assets/fonts/bitter-regular.woff +0 -0
  109. package/assets/fonts/bitter-regular.woff2 +0 -0
  110. package/assets/fonts/bitter-semibold.woff +0 -0
  111. package/assets/fonts/bitter-semibold.woff2 +0 -0
  112. package/assets/fonts/dmmono-medium.woff +0 -0
  113. package/assets/fonts/dmmono-medium.woff2 +0 -0
  114. package/assets/fonts/dmsans-bold-webfont.woff +0 -0
  115. package/assets/fonts/dmsans-bold-webfont.woff2 +0 -0
  116. package/assets/fonts/dmsans-bolditalic-webfont.woff +0 -0
  117. package/assets/fonts/dmsans-bolditalic-webfont.woff2 +0 -0
  118. package/assets/fonts/dmsans-italic-webfont.woff +0 -0
  119. package/assets/fonts/dmsans-italic-webfont.woff2 +0 -0
  120. package/assets/fonts/dmsans-medium-webfont.woff +0 -0
  121. package/assets/fonts/dmsans-medium-webfont.woff2 +0 -0
  122. package/assets/fonts/dmsans-mediumitalic-webfont.woff +0 -0
  123. package/assets/fonts/dmsans-mediumitalic-webfont.woff2 +0 -0
  124. package/assets/fonts/dmsans-regular-webfont.woff +0 -0
  125. package/assets/fonts/dmsans-regular-webfont.woff2 +0 -0
  126. package/assets/fonts/notosans-bold-webfont.woff +0 -0
  127. package/assets/fonts/notosans-bold-webfont.woff2 +0 -0
  128. package/assets/fonts/notosans-italic-webfont.woff +0 -0
  129. package/assets/fonts/notosans-italic-webfont.woff2 +0 -0
  130. package/assets/fonts/notosans-medium-webfont.woff +0 -0
  131. package/assets/fonts/notosans-medium-webfont.woff2 +0 -0
  132. package/assets/fonts/notosans-regular-webfont.woff +0 -0
  133. package/assets/fonts/notosans-regular-webfont.woff2 +0 -0
  134. package/assets/fonts/poppins-bold-webfont.woff +0 -0
  135. package/assets/fonts/poppins-bold-webfont.woff2 +0 -0
  136. package/assets/fonts/poppins-bolditalic-webfont.woff +0 -0
  137. package/assets/fonts/poppins-bolditalic-webfont.woff2 +0 -0
  138. package/assets/fonts/poppins-extrabold-webfont.woff +0 -0
  139. package/assets/fonts/poppins-extrabold-webfont.woff2 +0 -0
  140. package/assets/fonts/poppins-extrabolditalic-webfont.woff +0 -0
  141. package/assets/fonts/poppins-extrabolditalic-webfont.woff2 +0 -0
  142. package/assets/fonts/poppins-italic-webfont.woff +0 -0
  143. package/assets/fonts/poppins-italic-webfont.woff2 +0 -0
  144. package/assets/fonts/poppins-light-webfont.woff +0 -0
  145. package/assets/fonts/poppins-light-webfont.woff2 +0 -0
  146. package/assets/fonts/poppins-lightitalic-webfont.woff +0 -0
  147. package/assets/fonts/poppins-lightitalic-webfont.woff2 +0 -0
  148. package/assets/fonts/poppins-medium-webfont.woff +0 -0
  149. package/assets/fonts/poppins-medium-webfont.woff2 +0 -0
  150. package/assets/fonts/poppins-mediumitalic-webfont.woff +0 -0
  151. package/assets/fonts/poppins-mediumitalic-webfont.woff2 +0 -0
  152. package/assets/fonts/poppins-regular-webfont.woff +0 -0
  153. package/assets/fonts/poppins-regular-webfont.woff2 +0 -0
  154. package/assets/fonts/poppins-semibold-webfont.woff +0 -0
  155. package/assets/fonts/poppins-semibold-webfont.woff2 +0 -0
  156. package/assets/fonts/poppins-semibolditalic-webfont.woff +0 -0
  157. package/assets/fonts/poppins-semibolditalic-webfont.woff2 +0 -0
  158. package/assets/fonts/source-serif-pro-600.woff +0 -0
  159. package/assets/fonts/source-serif-pro-600.woff2 +0 -0
  160. package/assets/fonts/source-serif-pro-600italic.woff +0 -0
  161. package/assets/fonts/source-serif-pro-600italic.woff2 +0 -0
  162. package/assets/fonts/source-serif-pro-700.woff +0 -0
  163. package/assets/fonts/source-serif-pro-700.woff2 +0 -0
  164. package/assets/fonts/source-serif-pro-700italic.woff +0 -0
  165. package/assets/fonts/source-serif-pro-700italic.woff2 +0 -0
  166. package/assets/fonts/source-serif-pro-italic.woff +0 -0
  167. package/assets/fonts/source-serif-pro-italic.woff2 +0 -0
  168. package/assets/fonts/source-serif-pro-regular.woff +0 -0
  169. package/assets/fonts/source-serif-pro-regular.woff2 +0 -0
  170. package/components/AccountDropdown/AccountDropdown.tsx +65 -0
  171. package/components/AccountDropdown/__tests__/AcountDropdown.test.tsx +83 -0
  172. package/components/AccountDropdown/accounts.ts +47 -0
  173. package/components/AccountDropdown/index.tsx +2 -0
  174. package/components/AccountDropdown/utils.ts +21 -0
  175. package/components/ErrorPage/ErrorPage.tsx +135 -0
  176. package/components/ad/index.tsx +35 -0
  177. package/components/article/Highlights.tsx +77 -0
  178. package/components/article/MetaBox.tsx +50 -0
  179. package/components/article/RelatedArticles.tsx +53 -0
  180. package/components/article/RelatedTopics.tsx +59 -0
  181. package/components/article/ShareBarComponent.tsx +53 -0
  182. package/components/article/__tests__/__snapshots__/index.test.tsx.snap +1568 -0
  183. package/components/article/__tests__/index.test.tsx +171 -0
  184. package/components/article/__tests__/mocks.ts +105 -0
  185. package/components/article/index.tsx +320 -0
  186. package/components/common/BackToHomepage.tsx +37 -0
  187. package/components/common/NavLink.tsx +26 -0
  188. package/components/common/NewskitLogo.tsx +52 -0
  189. package/components/common/NewskitLogoShort.tsx +48 -0
  190. package/components/common/SectionTitleBar.tsx +57 -0
  191. package/components/common/ShareButton.tsx +18 -0
  192. package/components/common/ViewMoreButton.tsx +20 -0
  193. package/components/common/iconNavLink/IconNavLink.tsx +70 -0
  194. package/components/common/iconNavLink/__tests__/IconNavLink.test.tsx +35 -0
  195. package/components/common/iconNavLink/index.ts +3 -0
  196. package/components/common/iconNavLink/types.ts +24 -0
  197. package/components/common/icons/IconAccount.tsx +13 -0
  198. package/components/common/icons/IconFilledTwitter.tsx +14 -0
  199. package/components/common/icons/StyledIconFilledChevronRight.tsx +12 -0
  200. package/components/footer/__snapshots__/index.test.tsx.snap +192 -0
  201. package/components/footer/index.test.tsx +13 -0
  202. package/components/footer/index.tsx +151 -0
  203. package/components/header/banner-messages.ts +39 -0
  204. package/components/header/index.tsx +52 -0
  205. package/components/header/navigation-links.ts +20 -0
  206. package/components/layout/Gutter.tsx +11 -0
  207. package/components/layout/LayoutTemplate.tsx +26 -0
  208. package/components/layout/MainGrid.tsx +66 -0
  209. package/components/layout/index.tsx +3 -0
  210. package/components/layout/layoutTypes.ts +13 -0
  211. package/components/section/ArticleSlice.tsx +35 -0
  212. package/components/section/CollectionBlock.tsx +54 -0
  213. package/components/section/SectionContext.tsx +9 -0
  214. package/components/section/__tests__/ArticleSlice.test.tsx +128 -0
  215. package/components/section/__tests__/CollectionBlock.test.tsx +83 -0
  216. package/components/section/__tests__/pageBlock.test.tsx +24 -0
  217. package/components/section/__tests__/sectionUtils.test.ts +94 -0
  218. package/components/section/index.tsx +39 -0
  219. package/components/section/layouts/Block.tsx +79 -0
  220. package/components/section/layouts/FallBack.tsx +24 -0
  221. package/components/section/layouts/Lead.tsx +43 -0
  222. package/components/section/layouts/Rows.tsx +82 -0
  223. package/components/section/layouts/SectionTitle.tsx +57 -0
  224. package/components/section/layouts/__tests__/Lead.test.tsx +37 -0
  225. package/components/section/layouts/__tests__/Rows.test.tsx +40 -0
  226. package/components/section/layouts/__tests__/SectionTitle.test.tsx +37 -0
  227. package/components/section/layouts/__tests__/__snapshots__/Lead.test.tsx.snap +180 -0
  228. package/components/section/layouts/__tests__/__snapshots__/SectionTitle.test.tsx.snap +354 -0
  229. package/components/section/layouts/gridUtils.ts +21 -0
  230. package/components/section/layouts/index.tsx +4 -0
  231. package/components/section/layouts/types.ts +13 -0
  232. package/components/section/pageBlock.tsx +23 -0
  233. package/components/section/sectionUtils.ts +61 -0
  234. package/components/teaser/index.test.tsx +50 -0
  235. package/components/teaser/index.tsx +64 -0
  236. package/components/teaser/teaserVariants.ts +33 -0
  237. package/components/teaser/variant-types.ts +49 -0
  238. package/components/teaser/variants/featureVariant.ts +42 -0
  239. package/components/teaser/variants/horizontal.ts +14 -0
  240. package/components/teaser/variants/titleTeaserVariant.ts +32 -0
  241. package/components/teaser/variants/titleVertical.ts +24 -0
  242. package/components/utils/index.test.ts +12 -0
  243. package/components/utils/index.ts +6 -0
  244. package/config/__tests__/index.test.ts +54 -0
  245. package/config/environment.ts +80 -0
  246. package/config/index.ts +2 -0
  247. package/config/multiTenancy.ts +11 -0
  248. package/constants/index.ts +2 -0
  249. package/context/app-context/AppContext.test.tsx +56 -0
  250. package/context/app-context/holidayStopListContextOverrides.ts +18 -0
  251. package/context/app-context/index.tsx +34 -0
  252. package/context/app-context/paymentMethodContext.tsx +70 -0
  253. package/context/index.tsx +2 -0
  254. package/context/multi-tenancy/MultiTenancy.test.tsx +48 -0
  255. package/context/multi-tenancy/index.tsx +32 -0
  256. package/css/index.ts +15 -0
  257. package/cypress/axe/terminal-log.js +19 -0
  258. package/cypress/config/visual.config.ts +11 -0
  259. package/cypress/config/visual.skip.config.ts +10 -0
  260. package/cypress/e2e/account/accessibility.cy.js +88 -0
  261. package/cypress/e2e/account/banners.cy.js +169 -0
  262. package/cypress/e2e/account/cancellation.cy.js +219 -0
  263. package/cypress/e2e/account/holiday-stops.cy.js +109 -0
  264. package/cypress/e2e/account/main-api.cy.js +102 -0
  265. package/cypress/e2e/account/newsletters-and-alerts.cy.js +149 -0
  266. package/cypress/e2e/account/newsletters-page.cy.js +69 -0
  267. package/cypress/e2e/account/payment-page.cy.js +98 -0
  268. package/cypress/e2e/account/personal-details.cy.js +1161 -0
  269. package/cypress/e2e/account/subscription-and-billing.cy.js +434 -0
  270. package/cypress/e2e/checkout/account-creation.cy.js +8 -0
  271. package/cypress/e2e/checkout/payment-details.cy.js +19 -0
  272. package/cypress/e2e/core/home-page.cy.js +6 -0
  273. package/cypress/e2e/help-hub/accessibility.cy.js +35 -0
  274. package/cypress/e2e/help-hub/article-page.cy.js +115 -0
  275. package/cypress/e2e/help-hub/landing-page.cy.js +94 -0
  276. package/cypress/e2e/help-hub/result-page.cy.js +117 -0
  277. package/cypress/fixtures/empty.html +10 -0
  278. package/cypress/fixtures/example.json +5 -0
  279. package/cypress/fixtures/holiday-stops.json +40 -0
  280. package/cypress/fixtures/paymentFailure.js +24 -0
  281. package/cypress/fixtures/testDates.js +26 -0
  282. package/cypress/support/commands.js +125 -0
  283. package/cypress/support/consentValues.js +5839 -0
  284. package/cypress/support/e2e.js +22 -0
  285. package/cypress/support/users.js +58 -0
  286. package/cypress/visual/account/print-visual-regression.cy.js +9 -0
  287. package/cypress/visual/account/visual-regression.cy.js +40 -0
  288. package/cypress/visual/empty/empty.cy.js +5 -0
  289. package/cypress.config.ts +38 -0
  290. package/helpers/__tests__/getUser.test.ts +45 -0
  291. package/helpers/__tests__/logger.test.ts +62 -0
  292. package/helpers/__tests__/useThemeDropdownObject.test.ts +49 -0
  293. package/helpers/a11y.ts +7 -0
  294. package/helpers/addCacheHeaders.ts +8 -0
  295. package/helpers/getUser.ts +37 -0
  296. package/helpers/getYear.ts +1 -0
  297. package/helpers/global-types.ts +186 -0
  298. package/helpers/logger/getWinstonLogger.ts +19 -0
  299. package/helpers/logger/index.ts +20 -0
  300. package/helpers/logger/replaceConsoleWithLogger.ts +14 -0
  301. package/helpers/mocks/articleMock.ts +50 -0
  302. package/helpers/mocks/getPageMock.ts +369 -0
  303. package/helpers/mocks/getRadioPostMock.ts +71 -0
  304. package/helpers/mocks/getRadioPostsMock.ts +26 -0
  305. package/helpers/mocks/getRecommendationsMock.ts +20 -0
  306. package/helpers/mocks/index.ts +7 -0
  307. package/helpers/multiTenancy.ts +19 -0
  308. package/helpers/setupTests.ts +5 -0
  309. package/helpers/test-utils.tsx +33 -0
  310. package/helpers/useThemeDropdownObject.tsx +73 -0
  311. package/infrastructure/.circleci/config.yml +1187 -0
  312. package/infrastructure/INFRASTRUCTURE.md +142 -0
  313. package/infrastructure/build_and_deploy.png +0 -0
  314. package/infrastructure/helm/Chart.yaml +21 -0
  315. package/infrastructure/helm/templates/_helpers.tpl +87 -0
  316. package/infrastructure/helm/templates/deployment.yaml +45 -0
  317. package/infrastructure/helm/templates/horizontalpodautoscaler.yaml +21 -0
  318. package/infrastructure/helm/templates/ingress.yaml +31 -0
  319. package/infrastructure/helm/templates/networkpolicy.yaml +26 -0
  320. package/infrastructure/helm/templates/secret.yaml +12 -0
  321. package/infrastructure/helm/templates/service.yaml +15 -0
  322. package/infrastructure/helm/values-dev.yaml +39 -0
  323. package/infrastructure/helm/values-local.yaml +30 -0
  324. package/infrastructure/helm/values-pr.yaml +40 -0
  325. package/infrastructure/helm/values-prod.yaml +39 -0
  326. package/infrastructure/helm/values-staging.yaml +39 -0
  327. package/infrastructure/helm/values.yaml +44 -0
  328. package/infrastructure/pull_request.png +0 -0
  329. package/infrastructure/release-documentation-cli.config.json +18 -0
  330. package/infrastructure/remove_pr.png +0 -0
  331. package/infrastructure/terraform-ecr/dev.tfvars +3 -0
  332. package/infrastructure/terraform-ecr/ecr.tf +69 -0
  333. package/infrastructure/terraform-ecr/main.tf +3 -0
  334. package/infrastructure/terraform-ecr/variables.tf +19 -0
  335. package/infrastructure/terraform-ecr/versions.tf +12 -0
  336. package/infrastructure/terraform-newrelic/alerts.tf +290 -0
  337. package/infrastructure/terraform-newrelic/dashboards.tf +347 -0
  338. package/infrastructure/terraform-newrelic/dev.tfvars +3 -0
  339. package/infrastructure/terraform-newrelic/lighthouse-script-dev.js +53 -0
  340. package/infrastructure/terraform-newrelic/lighthouse-script-prod.js +54 -0
  341. package/infrastructure/terraform-newrelic/lighthouse-script-stage.js +54 -0
  342. package/infrastructure/terraform-newrelic/main.tf +11 -0
  343. package/infrastructure/terraform-newrelic/monitors.tf +11 -0
  344. package/infrastructure/terraform-newrelic/prod.tfvars +3 -0
  345. package/infrastructure/terraform-newrelic/staging.tfvars +3 -0
  346. package/infrastructure/terraform-newrelic/variables.tf +33 -0
  347. package/infrastructure/terraform-newrelic/versions.tf +18 -0
  348. package/jest.config.js +40 -0
  349. package/jest.config.pact.js +18 -0
  350. package/newrelic.js +86 -0
  351. package/next-env.d.ts +5 -0
  352. package/next.config.js +95 -0
  353. package/package.json +127 -0
  354. package/pages/_app.tsx +117 -0
  355. package/pages/_document.tsx +112 -0
  356. package/pages/_error.tsx +68 -0
  357. package/pages/account/add/[field].tsx +34 -0
  358. package/pages/account/cancellation/index.tsx +22 -0
  359. package/pages/account/delete/confirm/index.tsx +16 -0
  360. package/pages/account/delete/error/index.tsx +16 -0
  361. package/pages/account/delete/index.tsx +16 -0
  362. package/pages/account/delete/success/index.tsx +16 -0
  363. package/pages/account/dream-team/index.tsx +19 -0
  364. package/pages/account/edit/[field].tsx +45 -0
  365. package/pages/account/family/index.tsx +19 -0
  366. package/pages/account/holiday-stop/index.tsx +19 -0
  367. package/pages/account/holiday-stop/previous-holiday-stops.tsx +19 -0
  368. package/pages/account/holiday-stop/upcoming-holiday-stops.tsx +19 -0
  369. package/pages/account/index.tsx +33 -0
  370. package/pages/account/newsletters/index.tsx +19 -0
  371. package/pages/account/newsletters-and-alerts/index.tsx +24 -0
  372. package/pages/account/payment/[paymentMethod].tsx +37 -0
  373. package/pages/account/payment/index.tsx +23 -0
  374. package/pages/account/payment-methods/index.tsx +21 -0
  375. package/pages/account/subscription-and-billing/index.tsx +29 -0
  376. package/pages/api/account/get-session/index.ts +33 -0
  377. package/pages/api/account/invoice/index.ts +35 -0
  378. package/pages/api/account/mutate/index.ts +8 -0
  379. package/pages/api/account/query/index.ts +7 -0
  380. package/pages/api/auth/[...nextauth].ts +11 -0
  381. package/pages/api/competitions-sitemap.ts +19 -0
  382. package/pages/api/feed.ts +23 -0
  383. package/pages/api/health-check.ts +7 -0
  384. package/pages/api/news-sitemap.ts +18 -0
  385. package/pages/api/pages-sitemap.ts +27 -0
  386. package/pages/api/robots.ts +19 -0
  387. package/pages/api/sitemap.ts +24 -0
  388. package/pages/checkout/account-creation/index.tsx +13 -0
  389. package/pages/checkout/payment-details/index.tsx +10 -0
  390. package/pages/empty.tsx +6 -0
  391. package/pages/help-hub/article/[title]/index.tsx +25 -0
  392. package/pages/help-hub/error.tsx +23 -0
  393. package/pages/help-hub/index.tsx +51 -0
  394. package/pages/help-hub/results.tsx +25 -0
  395. package/pages/index.tsx +19 -0
  396. package/pages/player/brightcove.tsx +19 -0
  397. package/pages/rss/create/index.tsx +18 -0
  398. package/pages/rss/feed/[feedId]/index.tsx +21 -0
  399. package/pages/rss/index.tsx +18 -0
  400. package/public/ads.min.js +8175 -0
  401. package/public/assets/display-base-header.svg +25 -0
  402. package/public/assets/display-personalDetails-header-sun.svg +55 -0
  403. package/public/assets/display-personalDetails-header-times.svg +90 -0
  404. package/public/assets/display-personalDetails-header-vr.svg +46 -0
  405. package/public/assets/dream-team.svg +10 -0
  406. package/public/assets/navigationPrimary-brandMark-sun.svg +9 -0
  407. package/public/assets/navigationPrimary-brandMark-times.svg +18 -0
  408. package/public/assets/navigationPrimary-brandMark-vr.svg +10 -0
  409. package/public/assets/newsletters/bestoftimes-101.png +0 -0
  410. package/public/assets/newsletters/books-115.png +0 -0
  411. package/public/assets/newsletters/environment-140.png +0 -0
  412. package/public/assets/newsletters/fashion-108.png +0 -0
  413. package/public/assets/newsletters/food-106.png +0 -0
  414. package/public/assets/newsletters/football-111.png +0 -0
  415. package/public/assets/newsletters/ireland-152.png +0 -0
  416. package/public/assets/newsletters/law-121.png +0 -0
  417. package/public/assets/newsletters/money-107.png +0 -0
  418. package/public/assets/newsletters/moneymentor-150.png +0 -0
  419. package/public/assets/newsletters/placeholder.png +0 -0
  420. package/public/assets/newsletters/politics-119.png +0 -0
  421. package/public/assets/newsletters/property-113.png +0 -0
  422. package/public/assets/newsletters/puzzles-125.png +0 -0
  423. package/public/assets/newsletters/scotland-134.png +0 -0
  424. package/public/assets/newsletters/theatre-127.png +0 -0
  425. package/public/assets/newsletters/travel-149.png +0 -0
  426. package/public/assets/newsletters/tv-133.png +0 -0
  427. package/public/assets/newsletters/us-153.png +0 -0
  428. package/public/assets/no-subscription.svg +15 -0
  429. package/public/assets/pending-activation.svg +16 -0
  430. package/public/assets/personal-details-header.svg +91 -0
  431. package/public/assets/plchldr150x100.png +0 -0
  432. package/public/assets/previous-subscription.svg +15 -0
  433. package/public/assets/primary-navigation-logo-white.svg +6 -0
  434. package/public/assets/primary-navigation-logo.svg +6 -0
  435. package/public/assets/tls-logo-white.svg +3 -0
  436. package/public/favicon.ico +0 -0
  437. package/public/icon.png +0 -0
  438. package/public/prebid.min.js +1 -0
  439. package/queries/getPage.ts +100 -0
  440. package/queries/getRadioPost.ts +61 -0
  441. package/queries/getRadioPosts.ts +16 -0
  442. package/queries/getUserSubscription.ts +9 -0
  443. package/queries/index.ts +3 -0
  444. package/scripts/k8s-local.sh +137 -0
  445. package/scripts/nr-exports.sh +7 -0
  446. package/temp/_app.tsx +15 -0
  447. package/temp/_document.tsx +61 -0
  448. package/temp/app-context-test.tsx +51 -0
  449. package/temp/app-context.tsx +25 -0
  450. package/temp/config-index.ts +1 -0
  451. package/temp/context-index.tsx +1 -0
  452. package/temp/header.tsx +45 -0
  453. package/temp/next.config.js +56 -0
  454. package/tsconfig.json +51 -0
  455. package/tsconfig.test.json +6 -0
  456. package/validation/index.tsx +24 -0
@@ -0,0 +1,1568 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Article should render tile and sub title 1`] = `
4
+ <DocumentFragment>
5
+ <header
6
+ class="css-1d2q07x"
7
+ >
8
+ <div
9
+ class="css-hpal4s"
10
+ data-testid="NavigationPrimary"
11
+ >
12
+ <div
13
+ class="css-11pbejy"
14
+ >
15
+ <div
16
+ class="css-1mi1ly6"
17
+ >
18
+ <a
19
+ aria-label="Logo Link"
20
+ class="css-1ulbpfm"
21
+ href="/"
22
+ >
23
+ <span
24
+ class="css-17x5lw"
25
+ >
26
+ <div
27
+ class="css-swzsha"
28
+ >
29
+ <figure
30
+ class="css-x0vdlo"
31
+ >
32
+ <img
33
+ alt=""
34
+ data-nimg="1"
35
+ data-testid="Nav-Prm-logo"
36
+ decoding="async"
37
+ fetchpriority="high"
38
+ height="32.5"
39
+ src="/assets/primary-navigation-logo-white.svg"
40
+ style="color: transparent; object-fit: contain;"
41
+ width="150"
42
+ />
43
+ </figure>
44
+ </div>
45
+ </span>
46
+ </a>
47
+ <a
48
+ class="css-1aup117"
49
+ data-testid="skip-to-content"
50
+ href="#main"
51
+ >
52
+ Skip to main content
53
+ </a>
54
+ </div>
55
+ </div>
56
+ <div
57
+ class="css-55favz"
58
+ >
59
+ <div
60
+ class="css-1k3e0au"
61
+ >
62
+ <button
63
+ aria-label="Mobile Menu Button"
64
+ class="css-h8miwj"
65
+ data-testid="mobile-menu-btn"
66
+ type="button"
67
+ >
68
+ <svg
69
+ aria-hidden="true"
70
+ class="css-11lepi0 css-18cthx4-EmotionIconBase ex0cdmw0"
71
+ fill="currentColor"
72
+ focusable="false"
73
+ overrides="[object Object]"
74
+ viewBox="0 0 24 24"
75
+ xmlns="http://www.w3.org/2000/svg"
76
+ >
77
+ <path
78
+ d="M0 0h24v24H0z"
79
+ fill="none"
80
+ />
81
+ <path
82
+ d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"
83
+ />
84
+ </svg>
85
+ </button>
86
+ </div>
87
+ </div>
88
+ <div
89
+ class="css-mniw6m"
90
+ >
91
+ <nav
92
+ class="css-1le7q07"
93
+ >
94
+ <div
95
+ class="css-16ctgp1"
96
+ data-testid="action-links-desktop"
97
+ >
98
+ <div
99
+ class="css-mycqxl"
100
+ >
101
+ <a
102
+ aria-label="Section One Link"
103
+ class="css-1ulbpfm"
104
+ href="/section-one"
105
+ type="standalone"
106
+ >
107
+ <span
108
+ class="css-1xnclyu"
109
+ >
110
+ <span
111
+ class="css-1o99qvy"
112
+ >
113
+ <span
114
+ class="css-8r74mr"
115
+ >
116
+ Section One
117
+ </span>
118
+ </span>
119
+ </span>
120
+ </a>
121
+ </div>
122
+ <div
123
+ class="css-mycqxl"
124
+ >
125
+ <a
126
+ aria-label="Section Two Link"
127
+ class="css-1ulbpfm"
128
+ href="/section-two"
129
+ type="standalone"
130
+ >
131
+ <span
132
+ class="css-1xnclyu"
133
+ >
134
+ <span
135
+ class="css-1o99qvy"
136
+ >
137
+ <span
138
+ class="css-8r74mr"
139
+ >
140
+ Section Two
141
+ </span>
142
+ </span>
143
+ </span>
144
+ </a>
145
+ </div>
146
+ <div
147
+ class="css-mycqxl"
148
+ >
149
+ <a
150
+ aria-label="Section Three Link"
151
+ class="css-1ulbpfm"
152
+ href="/section-three"
153
+ type="standalone"
154
+ >
155
+ <span
156
+ class="css-1xnclyu"
157
+ >
158
+ <span
159
+ class="css-1o99qvy"
160
+ >
161
+ <span
162
+ class="css-8r74mr"
163
+ >
164
+ Section Three
165
+ </span>
166
+ </span>
167
+ </span>
168
+ </a>
169
+ </div>
170
+ </div>
171
+ </nav>
172
+ </div>
173
+ <div
174
+ class="css-l657h8"
175
+ >
176
+ <div
177
+ class="css-13byt3y"
178
+ />
179
+ </div>
180
+ </div>
181
+ </header>
182
+ <div
183
+ class="css-1ce0b49"
184
+ >
185
+ <div
186
+ class="css-8atxkm"
187
+ >
188
+ <div
189
+ class="css-11sfip2"
190
+ data-testid="PageLayout"
191
+ >
192
+ <div
193
+ class="css-18d6eiw"
194
+ data-testid="PageLayout"
195
+ >
196
+ <div
197
+ class="css-m5rxur"
198
+ />
199
+ </div>
200
+ <div
201
+ class="css-18d6eiw"
202
+ data-testid="PageLayout"
203
+ >
204
+ <div
205
+ class="css-1hoolz9"
206
+ data-testid="PageLayout"
207
+ >
208
+ <div
209
+ class="css-13p0b4b"
210
+ data-testid="HeadLine"
211
+ >
212
+ <section
213
+ class="css-13rwor7"
214
+ >
215
+ <h1
216
+ class="nk-headline-heading css-b3iww6"
217
+ >
218
+ Mock Article: Lorem ipsum dolor sit amet consectetur adipiscing elit
219
+ </h1>
220
+ </section>
221
+ </div>
222
+ <div
223
+ class="css-11s9frs"
224
+ data-testid="Kicker"
225
+ >
226
+ <section
227
+ class="css-k0zmqb"
228
+ >
229
+ <h2
230
+ class="nk-headline-heading css-17onjfr"
231
+ >
232
+ Kicker title
233
+ </h2>
234
+ </section>
235
+ </div>
236
+ <div
237
+ class="css-1lkrnf8"
238
+ >
239
+ <div
240
+ class="css-1k3e0au"
241
+ >
242
+ <div
243
+ class="css-1rf5c0"
244
+ >
245
+ <div
246
+ class="css-13byt3y"
247
+ >
248
+ <div
249
+ aria-label="Byline"
250
+ class="css-1jjwo6p"
251
+ >
252
+ <div
253
+ class="css-y9mnp9"
254
+ >
255
+ <span
256
+ class="css-jov9vl"
257
+ >
258
+ <a
259
+ aria-label="more by John Smith"
260
+ class="css-14yas4a"
261
+ data-author="John Smith"
262
+ href="https://www.newskit.co.uk/components/navigation/link"
263
+ rel="author"
264
+ >
265
+ <span
266
+ class="css-pqzzby"
267
+ >
268
+ <span
269
+ class="css-1xzc2un"
270
+ >
271
+ <span
272
+ class="css-1nc37u6"
273
+ >
274
+ John Smith
275
+ </span>
276
+ </span>
277
+ <span
278
+ class="css-1xzc2un"
279
+ >
280
+ <svg
281
+ class="css-gthb6q-EmotionIconBase ex0cdmw0"
282
+ fill="currentColor"
283
+ focusable="false"
284
+ role="img"
285
+ viewBox="0 0 24 24"
286
+ xmlns="http://www.w3.org/2000/svg"
287
+ >
288
+ <title>
289
+ External link
290
+ </title>
291
+ <path
292
+ d="M0 0h24v24H0z"
293
+ fill="none"
294
+ />
295
+ <path
296
+ d="M19 19H5V5h7V3H5a2 2 0 00-2 2v14a2 2 0 002 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"
297
+ />
298
+ </svg>
299
+ </span>
300
+ </span>
301
+ </a>
302
+ <span
303
+ aria-hidden="true"
304
+ class="css-jov9vl"
305
+ >
306
+
307
+ </span>
308
+ Еditor, UK
309
+ </span>
310
+ </div>
311
+ </div>
312
+ <div
313
+ class="css-13byt3y"
314
+ >
315
+ <span
316
+ class="css-7zhfhb"
317
+ >
318
+ <time
319
+ class="css-2pl38e"
320
+ datetime="2019-02-14 12:37:17+00"
321
+ >
322
+ Thu February 14 2019, 12:37am
323
+ </time>
324
+ </span>
325
+ </div>
326
+ </div>
327
+ </div>
328
+ <div
329
+ class="css-1rf5c0"
330
+ >
331
+ <hr
332
+ aria-hidden="true"
333
+ class="css-80khzk"
334
+ data-testid="divider"
335
+ />
336
+ </div>
337
+ <div
338
+ class="css-13p0b4b"
339
+ >
340
+ <a
341
+ class="css-lgi6t1"
342
+ data-testid="buttonLink"
343
+ href="https://www.newskit.co.uk/"
344
+ >
345
+ <svg
346
+ aria-hidden="true"
347
+ class="css-hj2ugy-EmotionIconBase ex0cdmw0"
348
+ fill="currentColor"
349
+ focusable="false"
350
+ viewBox="0 0 24 24"
351
+ xmlns="http://www.w3.org/2000/svg"
352
+ >
353
+ <path
354
+ d="M0 0h24v24H0z"
355
+ fill="none"
356
+ />
357
+ <path
358
+ d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"
359
+ />
360
+ </svg>
361
+ <span
362
+ class="css-1v8h4au"
363
+ >
364
+ Share
365
+ </span>
366
+ </a>
367
+ </div>
368
+ </div>
369
+ <div
370
+ class="css-1nlep1q"
371
+ >
372
+ <div
373
+ class="css-15zrtsn"
374
+ data-testid="MetaBox"
375
+ >
376
+ <div
377
+ class="css-13byt3y"
378
+ >
379
+ <div
380
+ aria-label="Byline"
381
+ class="css-1jjwo6p"
382
+ >
383
+ <div
384
+ class="css-y9mnp9"
385
+ >
386
+ <span
387
+ class="css-jov9vl"
388
+ >
389
+ <a
390
+ aria-label="more by John Smith"
391
+ class="css-14yas4a"
392
+ data-author="John Smith"
393
+ href="https://www.newskit.co.uk/components/navigation/link"
394
+ rel="author"
395
+ >
396
+ <span
397
+ class="css-pqzzby"
398
+ >
399
+ <span
400
+ class="css-1xzc2un"
401
+ >
402
+ <span
403
+ class="css-1nc37u6"
404
+ >
405
+ John Smith
406
+ </span>
407
+ </span>
408
+ <span
409
+ class="css-1xzc2un"
410
+ >
411
+ <svg
412
+ class="css-gthb6q-EmotionIconBase ex0cdmw0"
413
+ fill="currentColor"
414
+ focusable="false"
415
+ role="img"
416
+ viewBox="0 0 24 24"
417
+ xmlns="http://www.w3.org/2000/svg"
418
+ >
419
+ <title>
420
+ External link
421
+ </title>
422
+ <path
423
+ d="M0 0h24v24H0z"
424
+ fill="none"
425
+ />
426
+ <path
427
+ d="M19 19H5V5h7V3H5a2 2 0 00-2 2v14a2 2 0 002 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"
428
+ />
429
+ </svg>
430
+ </span>
431
+ </span>
432
+ </a>
433
+ <span
434
+ aria-hidden="true"
435
+ class="css-jov9vl"
436
+ >
437
+
438
+ </span>
439
+ Еditor, UK
440
+ </span>
441
+ </div>
442
+ </div>
443
+ <div
444
+ class="css-13byt3y"
445
+ >
446
+ <span
447
+ class="css-7zhfhb"
448
+ >
449
+ <time
450
+ class="css-2pl38e"
451
+ datetime="2019-02-14 12:37:17+00"
452
+ >
453
+ Thu February 14 2019, 12:37am
454
+ </time>
455
+ </span>
456
+ </div>
457
+ </div>
458
+ <div
459
+ class="css-tn48k3"
460
+ >
461
+ <div
462
+ class="css-1mvna34"
463
+ orientation="horizontal"
464
+ role="region"
465
+ >
466
+ <span
467
+ class="css-py41cc"
468
+ orientation="horizontal"
469
+ >
470
+ Share
471
+ </span>
472
+ <div
473
+ class="css-18bz6hs"
474
+ >
475
+ <div
476
+ class="css-7i4qsc"
477
+ >
478
+ <svg
479
+ aria-hidden="true"
480
+ class="css-43l4uo-EmotionIconBase ex0cdmw0"
481
+ fill="currentColor"
482
+ focusable="false"
483
+ overrides="[object Object]"
484
+ viewBox="0 0 24 24"
485
+ xmlns="http://www.w3.org/2000/svg"
486
+ >
487
+ <path
488
+ d="M0 0h24v24H0V0z"
489
+ fill="none"
490
+ />
491
+ <path
492
+ d="M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z"
493
+ />
494
+ </svg>
495
+ </div>
496
+ <div
497
+ class="css-7i4qsc"
498
+ >
499
+ <svg
500
+ aria-hidden="true"
501
+ class="css-ktpdfl"
502
+ fill="currentColor"
503
+ viewBox="0 0 24 24"
504
+ xmlns="http://www.w3.org/2000/svg"
505
+ >
506
+ <path
507
+ d="M8.28984,21 C15.83736,21 19.96472,14.4602319 19.96472,8.78946539 C19.96472,8.60363327 19.96112,8.41863784 19.95296,8.23464647 C20.75408,7.62895589 21.45056,6.87316048 22,6.01260963 C21.26472,6.35415252 20.47352,6.58441367 19.64352,6.68816506 C20.49072,6.15702487 21.14112,5.31630393 21.44784,4.31426631 C20.65488,4.80583036 19.77704,5.1633543 18.8424,5.35588007 C18.09368,4.52176909 17.02728,4 15.84728,4 C13.58104,4 11.74336,5.92199451 11.74336,8.29129138 C11.74336,8.62814872 11.77944,8.95555129 11.84976,9.2698176 C8.4396,9.09051177 5.4156,7.38271368 3.392,4.78600045 C3.03928,5.42005532 2.83632,6.15702487 2.83632,6.94294166 C2.83632,8.43194145 3.56072,9.74632096 4.66224,10.5152526 C3.98928,10.493582 3.35688,10.3001358 2.80384,9.97833919 C2.80288,9.99624467 2.80288,10.0142338 2.80288,10.0330597 C2.80288,12.111769 4.21752,13.8469273 6.09488,14.2404296 C5.75032,14.3384914 5.3876,14.3913711 5.0132,14.3913711 C4.74888,14.3913711 4.49176,14.3640109 4.24184,14.3139759 C4.76424,16.0190129 6.27896,17.2597624 8.07512,17.2947366 C6.67048,18.4457914 4.90136,19.1317219 2.97888,19.1317219 C2.64776,19.1317219 2.3212,19.1119757 2,19.0723159 C3.81608,20.2894703 5.97224,21 8.28984,21"
508
+ fill-rule="nonzero"
509
+ />
510
+ </svg>
511
+ </div>
512
+ <div
513
+ class="css-7i4qsc"
514
+ >
515
+ <svg
516
+ aria-hidden="true"
517
+ class="css-43l4uo-EmotionIconBase ex0cdmw0"
518
+ fill="currentColor"
519
+ focusable="false"
520
+ overrides="[object Object]"
521
+ viewBox="0 0 24 24"
522
+ xmlns="http://www.w3.org/2000/svg"
523
+ >
524
+ <rect
525
+ fill="none"
526
+ height="24"
527
+ width="24"
528
+ />
529
+ <path
530
+ d="M22 12c0-5.52-4.48-10-10-10S2 6.48 2 12c0 4.84 3.44 8.87 8 9.8V15H8v-3h2V9.5C10 7.57 11.57 6 13.5 6H16v3h-2c-.55 0-1 .45-1 1v2h3v3h-3v6.95c5.05-.5 9-4.76 9-9.95z"
531
+ />
532
+ </svg>
533
+ </div>
534
+ <div
535
+ class="css-7i4qsc"
536
+ >
537
+ <svg
538
+ aria-hidden="true"
539
+ class="css-43l4uo-EmotionIconBase ex0cdmw0"
540
+ fill="currentColor"
541
+ focusable="false"
542
+ overrides="[object Object]"
543
+ viewBox="0 0 24 24"
544
+ xmlns="http://www.w3.org/2000/svg"
545
+ >
546
+ <path
547
+ d="M0 0h24v24H0V0z"
548
+ fill="none"
549
+ />
550
+ <path
551
+ d="M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8z"
552
+ />
553
+ </svg>
554
+ </div>
555
+ </div>
556
+ </div>
557
+ </div>
558
+ </div>
559
+ </div>
560
+ </div>
561
+ <div
562
+ class="css-1sny7re"
563
+ >
564
+ <figure
565
+ class="css-6wv8o"
566
+ >
567
+ <img
568
+ alt="testIMG"
569
+ data-nimg="fill"
570
+ decoding="async"
571
+ loading="lazy"
572
+ sizes="(max-width: 768px) 100vw,
573
+ (max-width: 1200px) 50vw,
574
+ 33vw"
575
+ src="/_next/image?url=%2Fimg%2Furl&w=3840&q=75"
576
+ srcset="/_next/image?url=%2Fimg%2Furl&w=256&q=75 256w, /_next/image?url=%2Fimg%2Furl&w=384&q=75 384w, /_next/image?url=%2Fimg%2Furl&w=640&q=75 640w, /_next/image?url=%2Fimg%2Furl&w=750&q=75 750w, /_next/image?url=%2Fimg%2Furl&w=828&q=75 828w, /_next/image?url=%2Fimg%2Furl&w=1080&q=75 1080w, /_next/image?url=%2Fimg%2Furl&w=1200&q=75 1200w, /_next/image?url=%2Fimg%2Furl&w=1920&q=75 1920w, /_next/image?url=%2Fimg%2Furl&w=2048&q=75 2048w, /_next/image?url=%2Fimg%2Furl&w=3840&q=75 3840w"
577
+ style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; right: 0px; bottom: 0px; object-fit: contain; color: transparent;"
578
+ />
579
+ </figure>
580
+ </div>
581
+ <div
582
+ class="css-fs1usj"
583
+ data-testid="ArticleContent"
584
+ >
585
+ <div
586
+ class="css-1wqa6bx"
587
+ data-testid="ArticleParagraph"
588
+ >
589
+ <p
590
+ class="css-161pzin"
591
+ >
592
+ paragraph one
593
+ </p>
594
+ </div>
595
+ <div
596
+ class="css-1wqa6bx"
597
+ data-testid="ArticleParagraph"
598
+ >
599
+ <p
600
+ class="css-161pzin"
601
+ >
602
+ paragraph two
603
+ </p>
604
+ </div>
605
+ <div
606
+ class="css-1wqa6bx"
607
+ data-testid="ArticleParagraph"
608
+ >
609
+ <p
610
+ class="css-161pzin"
611
+ >
612
+ paragraph three
613
+ </p>
614
+ </div>
615
+ <div
616
+ class="css-1wqa6bx"
617
+ data-testid="ArticleParagraph"
618
+ >
619
+ <p
620
+ class="css-161pzin"
621
+ >
622
+ paragraph four
623
+ </p>
624
+ </div>
625
+ </div>
626
+ <div
627
+ class="css-1k3e0au"
628
+ >
629
+ <div
630
+ class="css-13p0b4b"
631
+ >
632
+ <hr
633
+ aria-hidden="true"
634
+ class="css-80khzk"
635
+ data-testid="divider"
636
+ />
637
+ </div>
638
+ <div
639
+ class="css-81fbbu"
640
+ >
641
+ <a
642
+ class="css-lgi6t1"
643
+ data-testid="buttonLink"
644
+ href="https://www.newskit.co.uk/"
645
+ >
646
+ <svg
647
+ aria-hidden="true"
648
+ class="css-hj2ugy-EmotionIconBase ex0cdmw0"
649
+ fill="currentColor"
650
+ focusable="false"
651
+ viewBox="0 0 24 24"
652
+ xmlns="http://www.w3.org/2000/svg"
653
+ >
654
+ <path
655
+ d="M0 0h24v24H0z"
656
+ fill="none"
657
+ />
658
+ <path
659
+ d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"
660
+ />
661
+ </svg>
662
+ <span
663
+ class="css-1v8h4au"
664
+ >
665
+ Share
666
+ </span>
667
+ </a>
668
+ </div>
669
+ </div>
670
+ <div
671
+ class="css-1nlep1q"
672
+ >
673
+ <div
674
+ class="css-13p0b4b"
675
+ >
676
+ <hr
677
+ aria-hidden="true"
678
+ class="css-80khzk"
679
+ data-testid="divider"
680
+ />
681
+ </div>
682
+ <div
683
+ class="css-81fbbu"
684
+ >
685
+ <div
686
+ class="css-1pbg2cs"
687
+ >
688
+ <div
689
+ class="css-1chjujt"
690
+ >
691
+ <div
692
+ class="css-1mvna34"
693
+ orientation="horizontal"
694
+ role="region"
695
+ >
696
+ <span
697
+ class="css-py41cc"
698
+ orientation="horizontal"
699
+ >
700
+ Share
701
+ </span>
702
+ <div
703
+ class="css-18bz6hs"
704
+ >
705
+ <div
706
+ class="css-7i4qsc"
707
+ >
708
+ <svg
709
+ aria-hidden="true"
710
+ class="css-43l4uo-EmotionIconBase ex0cdmw0"
711
+ fill="currentColor"
712
+ focusable="false"
713
+ overrides="[object Object]"
714
+ viewBox="0 0 24 24"
715
+ xmlns="http://www.w3.org/2000/svg"
716
+ >
717
+ <path
718
+ d="M0 0h24v24H0V0z"
719
+ fill="none"
720
+ />
721
+ <path
722
+ d="M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z"
723
+ />
724
+ </svg>
725
+ </div>
726
+ <div
727
+ class="css-7i4qsc"
728
+ >
729
+ <svg
730
+ aria-hidden="true"
731
+ class="css-ktpdfl"
732
+ fill="currentColor"
733
+ viewBox="0 0 24 24"
734
+ xmlns="http://www.w3.org/2000/svg"
735
+ >
736
+ <path
737
+ d="M8.28984,21 C15.83736,21 19.96472,14.4602319 19.96472,8.78946539 C19.96472,8.60363327 19.96112,8.41863784 19.95296,8.23464647 C20.75408,7.62895589 21.45056,6.87316048 22,6.01260963 C21.26472,6.35415252 20.47352,6.58441367 19.64352,6.68816506 C20.49072,6.15702487 21.14112,5.31630393 21.44784,4.31426631 C20.65488,4.80583036 19.77704,5.1633543 18.8424,5.35588007 C18.09368,4.52176909 17.02728,4 15.84728,4 C13.58104,4 11.74336,5.92199451 11.74336,8.29129138 C11.74336,8.62814872 11.77944,8.95555129 11.84976,9.2698176 C8.4396,9.09051177 5.4156,7.38271368 3.392,4.78600045 C3.03928,5.42005532 2.83632,6.15702487 2.83632,6.94294166 C2.83632,8.43194145 3.56072,9.74632096 4.66224,10.5152526 C3.98928,10.493582 3.35688,10.3001358 2.80384,9.97833919 C2.80288,9.99624467 2.80288,10.0142338 2.80288,10.0330597 C2.80288,12.111769 4.21752,13.8469273 6.09488,14.2404296 C5.75032,14.3384914 5.3876,14.3913711 5.0132,14.3913711 C4.74888,14.3913711 4.49176,14.3640109 4.24184,14.3139759 C4.76424,16.0190129 6.27896,17.2597624 8.07512,17.2947366 C6.67048,18.4457914 4.90136,19.1317219 2.97888,19.1317219 C2.64776,19.1317219 2.3212,19.1119757 2,19.0723159 C3.81608,20.2894703 5.97224,21 8.28984,21"
738
+ fill-rule="nonzero"
739
+ />
740
+ </svg>
741
+ </div>
742
+ <div
743
+ class="css-7i4qsc"
744
+ >
745
+ <svg
746
+ aria-hidden="true"
747
+ class="css-43l4uo-EmotionIconBase ex0cdmw0"
748
+ fill="currentColor"
749
+ focusable="false"
750
+ overrides="[object Object]"
751
+ viewBox="0 0 24 24"
752
+ xmlns="http://www.w3.org/2000/svg"
753
+ >
754
+ <rect
755
+ fill="none"
756
+ height="24"
757
+ width="24"
758
+ />
759
+ <path
760
+ d="M22 12c0-5.52-4.48-10-10-10S2 6.48 2 12c0 4.84 3.44 8.87 8 9.8V15H8v-3h2V9.5C10 7.57 11.57 6 13.5 6H16v3h-2c-.55 0-1 .45-1 1v2h3v3h-3v6.95c5.05-.5 9-4.76 9-9.95z"
761
+ />
762
+ </svg>
763
+ </div>
764
+ <div
765
+ class="css-7i4qsc"
766
+ >
767
+ <svg
768
+ aria-hidden="true"
769
+ class="css-43l4uo-EmotionIconBase ex0cdmw0"
770
+ fill="currentColor"
771
+ focusable="false"
772
+ overrides="[object Object]"
773
+ viewBox="0 0 24 24"
774
+ xmlns="http://www.w3.org/2000/svg"
775
+ >
776
+ <path
777
+ d="M0 0h24v24H0V0z"
778
+ fill="none"
779
+ />
780
+ <path
781
+ d="M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8z"
782
+ />
783
+ </svg>
784
+ </div>
785
+ </div>
786
+ </div>
787
+ </div>
788
+ </div>
789
+ </div>
790
+ </div>
791
+ <div
792
+ class="css-13byt3y"
793
+ >
794
+ <div
795
+ class="css-13p0b4b"
796
+ >
797
+ <section
798
+ class="css-frq9nz"
799
+ >
800
+ <h1
801
+ class="nk-headline-heading css-17onjfr"
802
+ >
803
+ Related topics
804
+ </h1>
805
+ </section>
806
+ </div>
807
+ <div
808
+ class="css-1ms0cs2"
809
+ >
810
+ <div
811
+ class="css-mdhsjw"
812
+ data-testid="RelatedTopics"
813
+ >
814
+ <div
815
+ class="css-1th2wme"
816
+ >
817
+ <div
818
+ class="css-1pgtvq2"
819
+ >
820
+ <div
821
+ class="css-jvxuhi"
822
+ data-testid="tag"
823
+ >
824
+ <span
825
+ class="css-1erkh45"
826
+ >
827
+ Some topic one
828
+ </span>
829
+ </div>
830
+ </div>
831
+ </div>
832
+ <div
833
+ class="css-1th2wme"
834
+ >
835
+ <div
836
+ class="css-1pgtvq2"
837
+ >
838
+ <div
839
+ class="css-jvxuhi"
840
+ data-testid="tag"
841
+ >
842
+ <span
843
+ class="css-1erkh45"
844
+ >
845
+ Some topic one
846
+ </span>
847
+ </div>
848
+ </div>
849
+ </div>
850
+ </div>
851
+ </div>
852
+ <div
853
+ class="css-11s9frs"
854
+ >
855
+ <hr
856
+ aria-hidden="true"
857
+ class="css-80khzk"
858
+ data-testid="divider"
859
+ />
860
+ </div>
861
+ </div>
862
+ </div>
863
+ <div
864
+ class="css-1qobz4o"
865
+ data-testid="PageLayout"
866
+ >
867
+ <div
868
+ class="css-10qoq8r"
869
+ data-testid="Ads"
870
+ >
871
+ <div
872
+ class="css-1dl2ysh"
873
+ id="advert-article-sidebar"
874
+ />
875
+ </div>
876
+ <div
877
+ class="css-1ms0cs2"
878
+ data-testid="Highlights"
879
+ >
880
+ <div
881
+ class="css-1ms0cs2"
882
+ >
883
+ <div
884
+ class="css-1ujq44n"
885
+ >
886
+ <section
887
+ class="css-xrwffx"
888
+ >
889
+ <h1
890
+ class="nk-headline-heading css-b3iww6"
891
+ >
892
+ Highlights
893
+ </h1>
894
+ </section>
895
+ </div>
896
+ <div
897
+ class="css-1uo5aiw"
898
+ >
899
+ <div
900
+ class="css-w282mr"
901
+ >
902
+ <div
903
+ class="css-16bai6p"
904
+ >
905
+ <section
906
+ class="css-xrwffx"
907
+ >
908
+ <h3
909
+ class="nk-headline-heading css-b3iww6"
910
+ >
911
+ Highlights
912
+ </h3>
913
+ </section>
914
+ </div>
915
+ <div
916
+ class="css-1h0bvuz"
917
+ >
918
+ <a
919
+ class="css-13qmi9d"
920
+ data-testid="buttonLink"
921
+ href="/"
922
+ >
923
+ <span
924
+ class="css-3kpoql"
925
+ >
926
+ View all
927
+ </span>
928
+ <svg
929
+ aria-hidden="true"
930
+ class="css-178ehod-EmotionIconBase ex0cdmw0"
931
+ fill="currentColor"
932
+ focusable="false"
933
+ overrides="[object Object]"
934
+ viewBox="0 0 24 24"
935
+ xmlns="http://www.w3.org/2000/svg"
936
+ >
937
+ <path
938
+ d="M0 0h24v24H0z"
939
+ fill="none"
940
+ />
941
+ <path
942
+ d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
943
+ />
944
+ </svg>
945
+ </a>
946
+ </div>
947
+ </div>
948
+ </div>
949
+ </div>
950
+ <div
951
+ class="css-1pgtvq2"
952
+ >
953
+ <div
954
+ class="css-8atxkm"
955
+ >
956
+ <div
957
+ class="css-1ji12ea"
958
+ >
959
+ <div
960
+ class="css-1uc3gm0"
961
+ >
962
+ <div>
963
+ <div
964
+ class="css-1z995g"
965
+ data-testid="article-recommendation-small"
966
+ >
967
+ <div
968
+ class="css-14avdtw"
969
+ >
970
+ <figure
971
+ class="css-17136bt"
972
+ >
973
+ <img
974
+ alt="Prince Harry"
975
+ data-nimg="fill"
976
+ decoding="async"
977
+ loading="lazy"
978
+ sizes="(max-width: 768px) 100vw,
979
+ (max-width: 1200px) 50vw,
980
+ 33vw"
981
+ src="/_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=3840&q=75"
982
+ srcset="/_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=256&q=75 256w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=384&q=75 384w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=640&q=75 640w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=2048&q=75 2048w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=3840&q=75 3840w"
983
+ style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; right: 0px; bottom: 0px; object-fit: contain; color: transparent; background-size: contain; background-position: 50% 50%; background-repeat: no-repeat;"
984
+ />
985
+ </figure>
986
+ </div>
987
+ <div
988
+ class="css-1r2lt0d"
989
+ >
990
+ <div
991
+ class="css-13pp6jk"
992
+ >
993
+ <a
994
+ class="nk-card-link css-c1j6lb"
995
+ href="http://localhost"
996
+ >
997
+ <section
998
+ class="nk-card-headline css-v6h0se"
999
+ >
1000
+ <h4
1001
+ class="nk-headline-heading css-oeq8ks"
1002
+ >
1003
+ Prince Harry
1004
+ </h4>
1005
+ </section>
1006
+ </a>
1007
+ </div>
1008
+ </div>
1009
+ </div>
1010
+ </div>
1011
+ <div>
1012
+ <div
1013
+ class="css-1z995g"
1014
+ data-testid="article-recommendation-small"
1015
+ >
1016
+ <div
1017
+ class="css-14avdtw"
1018
+ >
1019
+ <figure
1020
+ class="css-17136bt"
1021
+ >
1022
+ <img
1023
+ alt="Meghan Markle"
1024
+ data-nimg="fill"
1025
+ decoding="async"
1026
+ loading="lazy"
1027
+ sizes="(max-width: 768px) 100vw,
1028
+ (max-width: 1200px) 50vw,
1029
+ 33vw"
1030
+ src="/_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=3840&q=75"
1031
+ srcset="/_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=256&q=75 256w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=384&q=75 384w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=640&q=75 640w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=2048&q=75 2048w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=3840&q=75 3840w"
1032
+ style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; right: 0px; bottom: 0px; object-fit: contain; color: transparent; background-size: contain; background-position: 50% 50%; background-repeat: no-repeat;"
1033
+ />
1034
+ </figure>
1035
+ </div>
1036
+ <div
1037
+ class="css-1r2lt0d"
1038
+ >
1039
+ <div
1040
+ class="css-13pp6jk"
1041
+ >
1042
+ <a
1043
+ class="nk-card-link css-c1j6lb"
1044
+ href="http://localhost"
1045
+ >
1046
+ <section
1047
+ class="nk-card-headline css-v6h0se"
1048
+ >
1049
+ <h4
1050
+ class="nk-headline-heading css-oeq8ks"
1051
+ >
1052
+ Meghan Markle
1053
+ </h4>
1054
+ </section>
1055
+ </a>
1056
+ </div>
1057
+ </div>
1058
+ </div>
1059
+ </div>
1060
+ </div>
1061
+ <div
1062
+ class="css-6gys8z"
1063
+ >
1064
+ <div
1065
+ class="css-1ujq44n"
1066
+ >
1067
+ <hr
1068
+ aria-hidden="true"
1069
+ class="css-80khzk"
1070
+ data-testid="divider"
1071
+ />
1072
+ <div
1073
+ class="css-1c2ypzx"
1074
+ >
1075
+ <div
1076
+ class="css-cprg63"
1077
+ >
1078
+ <a
1079
+ class="css-13qmi9d"
1080
+ data-testid="buttonLink"
1081
+ href="/"
1082
+ >
1083
+ <span
1084
+ class="css-3kpoql"
1085
+ >
1086
+ View all
1087
+ </span>
1088
+ <svg
1089
+ aria-hidden="true"
1090
+ class="css-178ehod-EmotionIconBase ex0cdmw0"
1091
+ fill="currentColor"
1092
+ focusable="false"
1093
+ overrides="[object Object]"
1094
+ viewBox="0 0 24 24"
1095
+ xmlns="http://www.w3.org/2000/svg"
1096
+ >
1097
+ <path
1098
+ d="M0 0h24v24H0z"
1099
+ fill="none"
1100
+ />
1101
+ <path
1102
+ d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
1103
+ />
1104
+ </svg>
1105
+ </a>
1106
+ </div>
1107
+ <hr
1108
+ aria-hidden="true"
1109
+ class="css-80khzk"
1110
+ data-testid="divider"
1111
+ />
1112
+ </div>
1113
+ </div>
1114
+ </div>
1115
+ </div>
1116
+ </div>
1117
+ </div>
1118
+ </div>
1119
+ </div>
1120
+ <div
1121
+ class="css-18d6eiw"
1122
+ data-testid="PageLayout"
1123
+ >
1124
+ <div
1125
+ class="css-13byt3y"
1126
+ data-testid="RelatedArticles"
1127
+ >
1128
+ <div
1129
+ class="css-11s9frs"
1130
+ >
1131
+ <div
1132
+ class="css-w282mr"
1133
+ >
1134
+ <div
1135
+ class="css-16bai6p"
1136
+ >
1137
+ <section
1138
+ class="css-3bvy7k"
1139
+ >
1140
+ <h3
1141
+ class="nk-headline-heading css-b3iww6"
1142
+ >
1143
+ Related
1144
+ </h3>
1145
+ </section>
1146
+ </div>
1147
+ <div
1148
+ class="css-1h0bvuz"
1149
+ >
1150
+ <a
1151
+ class="css-13qmi9d"
1152
+ data-testid="buttonLink"
1153
+ href="/relatedArticles"
1154
+ >
1155
+ <span
1156
+ class="css-3kpoql"
1157
+ >
1158
+ View all
1159
+ </span>
1160
+ <svg
1161
+ aria-hidden="true"
1162
+ class="css-178ehod-EmotionIconBase ex0cdmw0"
1163
+ fill="currentColor"
1164
+ focusable="false"
1165
+ overrides="[object Object]"
1166
+ viewBox="0 0 24 24"
1167
+ xmlns="http://www.w3.org/2000/svg"
1168
+ >
1169
+ <path
1170
+ d="M0 0h24v24H0z"
1171
+ fill="none"
1172
+ />
1173
+ <path
1174
+ d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
1175
+ />
1176
+ </svg>
1177
+ </a>
1178
+ </div>
1179
+ </div>
1180
+ </div>
1181
+ <div
1182
+ class="css-1qurk8n"
1183
+ >
1184
+ <div>
1185
+ <div
1186
+ class="css-1v4r5rv"
1187
+ data-testid="article-recommendation-large"
1188
+ >
1189
+ <div
1190
+ class="css-b5xivb"
1191
+ >
1192
+ <figure
1193
+ class="css-17136bt"
1194
+ >
1195
+ <img
1196
+ alt="Prince Harry"
1197
+ data-nimg="fill"
1198
+ decoding="async"
1199
+ loading="lazy"
1200
+ sizes="(max-width: 768px) 100vw,
1201
+ (max-width: 1200px) 50vw,
1202
+ 33vw"
1203
+ src="/_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=3840&q=75"
1204
+ srcset="/_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=256&q=75 256w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=384&q=75 384w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=640&q=75 640w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=2048&q=75 2048w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=3840&q=75 3840w"
1205
+ style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; right: 0px; bottom: 0px; object-fit: contain; color: transparent; background-size: contain; background-position: 50% 50%; background-repeat: no-repeat;"
1206
+ />
1207
+ </figure>
1208
+ </div>
1209
+ <div
1210
+ class="css-1shocxe"
1211
+ >
1212
+ <div
1213
+ class="css-l3wl0d"
1214
+ >
1215
+ <div
1216
+ class="css-1ms0cs2"
1217
+ >
1218
+ <div
1219
+ class="css-1u9vlr9"
1220
+ >
1221
+ <a
1222
+ class="nk-card-link css-c1j6lb"
1223
+ href="http://localhost"
1224
+ >
1225
+ <section
1226
+ class="nk-card-headline css-jdch7u"
1227
+ >
1228
+ <h6
1229
+ class="nk-headline-heading css-oeq8ks"
1230
+ >
1231
+ Prince Harry
1232
+ </h6>
1233
+ </section>
1234
+ </a>
1235
+ </div>
1236
+ <div
1237
+ class="css-1u9vlr9"
1238
+ >
1239
+ <p
1240
+ class="css-x4rcwg"
1241
+ >
1242
+ news
1243
+ </p>
1244
+ </div>
1245
+ </div>
1246
+ </div>
1247
+ </div>
1248
+ </div>
1249
+ </div>
1250
+ <div>
1251
+ <div
1252
+ class="css-1v4r5rv"
1253
+ data-testid="article-recommendation-large"
1254
+ >
1255
+ <div
1256
+ class="css-b5xivb"
1257
+ >
1258
+ <figure
1259
+ class="css-17136bt"
1260
+ >
1261
+ <img
1262
+ alt="Meghan Markle"
1263
+ data-nimg="fill"
1264
+ decoding="async"
1265
+ loading="lazy"
1266
+ sizes="(max-width: 768px) 100vw,
1267
+ (max-width: 1200px) 50vw,
1268
+ 33vw"
1269
+ src="/_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=3840&q=75"
1270
+ srcset="/_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=256&q=75 256w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=384&q=75 384w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=640&q=75 640w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=2048&q=75 2048w, /_next/image?url=https%3A%2F%2Fplchldr.co%2Fi%2F70x50&w=3840&q=75 3840w"
1271
+ style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; right: 0px; bottom: 0px; object-fit: contain; color: transparent; background-size: contain; background-position: 50% 50%; background-repeat: no-repeat;"
1272
+ />
1273
+ </figure>
1274
+ </div>
1275
+ <div
1276
+ class="css-1shocxe"
1277
+ >
1278
+ <div
1279
+ class="css-l3wl0d"
1280
+ >
1281
+ <div
1282
+ class="css-1ms0cs2"
1283
+ >
1284
+ <div
1285
+ class="css-1u9vlr9"
1286
+ >
1287
+ <a
1288
+ class="nk-card-link css-c1j6lb"
1289
+ href="http://localhost"
1290
+ >
1291
+ <section
1292
+ class="nk-card-headline css-jdch7u"
1293
+ >
1294
+ <h6
1295
+ class="nk-headline-heading css-oeq8ks"
1296
+ >
1297
+ Meghan Markle
1298
+ </h6>
1299
+ </section>
1300
+ </a>
1301
+ </div>
1302
+ <div
1303
+ class="css-1u9vlr9"
1304
+ >
1305
+ <p
1306
+ class="css-x4rcwg"
1307
+ >
1308
+ news
1309
+ </p>
1310
+ </div>
1311
+ </div>
1312
+ </div>
1313
+ </div>
1314
+ </div>
1315
+ </div>
1316
+ </div>
1317
+ <div
1318
+ class="css-75g92e"
1319
+ >
1320
+ <hr
1321
+ aria-hidden="true"
1322
+ class="css-80khzk"
1323
+ data-testid="divider"
1324
+ />
1325
+ <div
1326
+ class="css-1c2ypzx"
1327
+ >
1328
+ <div
1329
+ class="css-cprg63"
1330
+ >
1331
+ <a
1332
+ class="css-13qmi9d"
1333
+ data-testid="buttonLink"
1334
+ href="/relatedArticles"
1335
+ >
1336
+ <span
1337
+ class="css-3kpoql"
1338
+ >
1339
+ View all
1340
+ </span>
1341
+ <svg
1342
+ aria-hidden="true"
1343
+ class="css-178ehod-EmotionIconBase ex0cdmw0"
1344
+ fill="currentColor"
1345
+ focusable="false"
1346
+ overrides="[object Object]"
1347
+ viewBox="0 0 24 24"
1348
+ xmlns="http://www.w3.org/2000/svg"
1349
+ >
1350
+ <path
1351
+ d="M0 0h24v24H0z"
1352
+ fill="none"
1353
+ />
1354
+ <path
1355
+ d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
1356
+ />
1357
+ </svg>
1358
+ </a>
1359
+ </div>
1360
+ <hr
1361
+ aria-hidden="true"
1362
+ class="css-80khzk"
1363
+ data-testid="divider"
1364
+ />
1365
+ </div>
1366
+ </div>
1367
+ </div>
1368
+ </div>
1369
+ </div>
1370
+ <div
1371
+ class="css-18d6eiw"
1372
+ data-testid="PageLayout"
1373
+ >
1374
+ <div
1375
+ class="css-w4h16h"
1376
+ />
1377
+ </div>
1378
+ </div>
1379
+ </div>
1380
+ </div>
1381
+ <div
1382
+ class="css-sxhtf1"
1383
+ >
1384
+ <div
1385
+ class="css-8atxkm"
1386
+ >
1387
+ <div
1388
+ class="css-1w88buo"
1389
+ data-testid="PageLayout"
1390
+ >
1391
+ <div
1392
+ class="css-18d6eiw"
1393
+ data-testid="PageLayout"
1394
+ >
1395
+ <div
1396
+ class="css-2e5lv5"
1397
+ >
1398
+ <svg
1399
+ class="css-kgdu16"
1400
+ height="48px"
1401
+ viewBox="0 0 244 40"
1402
+ >
1403
+ <title>
1404
+ NewsKit Logo
1405
+ </title>
1406
+ <path
1407
+ d="M61.846.936c3.35.413 4.944 4.005 4.92 8.746l.017-.013c-5.497 4.462-16.323 7.515-26.958 1.71l.011-.016c1.568.832 3.224 1.475 5.172 1.715 2.386.294 4.303-1.023 6.043-2.889l.124-.134.062-.068.123-.137.123-.138.122-.14.121-.142.061-.071.121-.144.12-.145.146-.178.073-.09.182-.226.181-.228.144-.184.144-.185.143-.185.215-.279 1.091-1.431.209-.271.209-.269.14-.178.14-.177.14-.175.141-.173.141-.172.113-.136.113-.135.114-.133.114-.132.057-.065.114-.13.057-.064.115-.127.173-.187.116-.123.175-.18.117-.118C58.328 1.663 59.933.7 61.846.936z"
1408
+ fill="white"
1409
+ />
1410
+ <path
1411
+ d="M26.763 28.981l.011.013c-1.414-.671-2.883-1.176-4.519-1.378-1.738-.214-3.244.513-4.634 1.704l-.11.095-.163.146-.108.1-.108.101-.268.261-.106.107-.106.109-.106.11-.053.056-.105.112-.053.057-.125.136-.124.138-.124.139-.062.07-.123.142-.123.143-.122.145-.122.146-.061.073-.15.183-.075.092-.149.185-.075.093-.149.187-.149.188-.223.283-.296.38-.671.866-.222.285-.222.283-.148.188-.223.28-.149.185-.149.183-.149.182-.15.18-.117.139-.118.138-.118.136-.118.135-.119.133-.119.132-.119.13-.06.064-.12.127-.1.104-.1.103-.1.101-.151.15-.101.098-.102.096-.051.048-.102.094-.206.183-.103.089-.052.044-.104.086c-1.302 1.066-2.706 1.698-4.305 1.5-3.321-.41-4.98-3.93-5.064-8.601l-.097.09c6.351-5.963 17.155-6.757 26.506-2.264z"
1412
+ fill="white"
1413
+ fill-opacity="0.4"
1414
+ />
1415
+ <path
1416
+ d="M42.216 35.925c-2.861-.398-5.212-1.275-7.302-2.318l-.189-.095-.188-.096-.186-.097-.231-.122-.229-.123-.182-.099-.226-.125-.224-.126-.178-.101-.177-.102-.264-.153-.349-.205-.278-.166-.276-.166-.411-.249-1.214-.738-.334-.201-.333-.199-2.669-1.45-.012-.013c-9.258-4.447-19.94-3.714-26.315 2.087l-.095.088C.156 20.101 8.779 2.598 25.068 4.608c2.854.352 5.141 1.176 7.14 2.181l.178.09.177.091.175.092.087.046.173.093.172.094.17.095.085.048.211.12.209.121.166.097.165.098.164.098.163.099.162.099.161.099.16.1.261.164.13.082.258.164.256.164 1.137.733.25.161.25.159.312.197.312.194a31.02 31.02 0 0 0 1.568.911l.199.106c10.506 5.694 21.166 2.775 26.7-1.604l.149-.12c-.055 10.998-8.815 28.185-24.55 26.243z"
1417
+ fill="white"
1418
+ fill-opacity="0.701961"
1419
+ />
1420
+ </svg>
1421
+ </div>
1422
+ <div
1423
+ class="css-2e5lv5"
1424
+ >
1425
+ <hr
1426
+ aria-hidden="true"
1427
+ class="css-13iiewa"
1428
+ data-testid="divider"
1429
+ />
1430
+ </div>
1431
+ <div
1432
+ class="css-hx18jh"
1433
+ >
1434
+ <span
1435
+ class="css-1cpcft7"
1436
+ >
1437
+ <a
1438
+ aria-label="NavLink One"
1439
+ class="css-1ulbpfm"
1440
+ href="/link-one"
1441
+ >
1442
+ <span
1443
+ class="css-17x5lw"
1444
+ >
1445
+ <span
1446
+ class="css-yk25sg"
1447
+ >
1448
+ NavLink One
1449
+ </span>
1450
+ </span>
1451
+ </a>
1452
+ </span>
1453
+ <span
1454
+ class="css-1cpcft7"
1455
+ >
1456
+ <a
1457
+ aria-label="NavLink Two"
1458
+ class="css-1ulbpfm"
1459
+ href="/link-two"
1460
+ >
1461
+ <span
1462
+ class="css-17x5lw"
1463
+ >
1464
+ <span
1465
+ class="css-yk25sg"
1466
+ >
1467
+ NavLink Two
1468
+ </span>
1469
+ </span>
1470
+ </a>
1471
+ </span>
1472
+ <span
1473
+ class="css-1cpcft7"
1474
+ >
1475
+ <a
1476
+ aria-label="NavLink Three"
1477
+ class="css-1ulbpfm"
1478
+ href="/link-three"
1479
+ >
1480
+ <span
1481
+ class="css-17x5lw"
1482
+ >
1483
+ <span
1484
+ class="css-yk25sg"
1485
+ >
1486
+ NavLink Three
1487
+ </span>
1488
+ </span>
1489
+ </a>
1490
+ </span>
1491
+ <span
1492
+ class="css-1cpcft7"
1493
+ >
1494
+ <a
1495
+ aria-label="NavLink Four"
1496
+ class="css-1ulbpfm"
1497
+ href="/link-four"
1498
+ >
1499
+ <span
1500
+ class="css-17x5lw"
1501
+ >
1502
+ <span
1503
+ class="css-yk25sg"
1504
+ >
1505
+ NavLink Four
1506
+ </span>
1507
+ </span>
1508
+ </a>
1509
+ </span>
1510
+ <span
1511
+ class="css-1cpcft7"
1512
+ >
1513
+ <a
1514
+ aria-label="NavLink Five"
1515
+ class="css-1ulbpfm"
1516
+ href="/link-five"
1517
+ >
1518
+ <span
1519
+ class="css-17x5lw"
1520
+ >
1521
+ <span
1522
+ class="css-yk25sg"
1523
+ >
1524
+ NavLink Five
1525
+ </span>
1526
+ </span>
1527
+ </a>
1528
+ </span>
1529
+ <span
1530
+ class="css-1cpcft7"
1531
+ >
1532
+ <a
1533
+ aria-label="NavLink Six"
1534
+ class="css-1ulbpfm"
1535
+ href="/link-six"
1536
+ >
1537
+ <span
1538
+ class="css-17x5lw"
1539
+ >
1540
+ <span
1541
+ class="css-yk25sg"
1542
+ >
1543
+ NavLink Six
1544
+ </span>
1545
+ </span>
1546
+ </a>
1547
+ </span>
1548
+ </div>
1549
+ <div
1550
+ class="css-2e5lv5"
1551
+ >
1552
+ <hr
1553
+ aria-hidden="true"
1554
+ class="css-13iiewa"
1555
+ data-testid="divider"
1556
+ />
1557
+ </div>
1558
+ <p
1559
+ class="css-tiln3q"
1560
+ >
1561
+ Copyright © YYYY News Corp. All rights reserved.
1562
+ </p>
1563
+ </div>
1564
+ </div>
1565
+ </div>
1566
+ </div>
1567
+ </DocumentFragment>
1568
+ `;