diff --git a/dotcom-rendering/src/components/InteractiveLayoutAtom.stories.tsx b/dotcom-rendering/src/components/InteractiveLayoutAtom.stories.tsx index 42e17066399..27fd4e99906 100644 --- a/dotcom-rendering/src/components/InteractiveLayoutAtom.stories.tsx +++ b/dotcom-rendering/src/components/InteractiveLayoutAtom.stories.tsx @@ -21,7 +21,7 @@ export const InteractiveLayoutAtom = meta.story({ design: 0, theme: 0, }, - articleArrangement: 'interactive', + articleArrangement: 'interactiveStandard', }, decorators: (StoryComponent) => (
{ design: 0, theme: 0, }} - articleArrangement="interactive" + articleArrangement="interactiveStandard" />, ); diff --git a/dotcom-rendering/src/components/SeriesSectionLink.tsx b/dotcom-rendering/src/components/SeriesSectionLink.tsx index 3af813da98b..c632a50e2b3 100644 --- a/dotcom-rendering/src/components/SeriesSectionLink.tsx +++ b/dotcom-rendering/src/components/SeriesSectionLink.tsx @@ -470,13 +470,22 @@ export const SeriesSectionLink = ({ marginRight, fontStyles(format), breakWord, - css` - box-shadow: - -6px 0 0 0 - ${themePalette('--series-title-background')}, - 6px 0 0 0 - ${themePalette('--series-title-background')}; - `, + layoutType !== 'interactiveTopHatFull' && + css` + box-shadow: + -6px 0 0 0 + ${themePalette( + '--series-title-background', + )}, + 6px 0 0 0 + ${themePalette( + '--series-title-background', + )}; + `, + layoutType === 'interactiveTopHatFull' && + css` + padding: 0 4px; + `, ]} data-component="series" data-link-name="article series" diff --git a/dotcom-rendering/src/layouts/StandardLayoutArticleGrid.tsx b/dotcom-rendering/src/layouts/StandardLayoutArticleGrid.tsx index 2fbb6d13567..c0cb2948728 100644 --- a/dotcom-rendering/src/layouts/StandardLayoutArticleGrid.tsx +++ b/dotcom-rendering/src/layouts/StandardLayoutArticleGrid.tsx @@ -1,6 +1,11 @@ import { css } from '@emotion/react'; import { log } from '@guardian/libs'; -import { from, space, until } from '@guardian/source/foundations'; +import { + from, + headlineMedium17, + space, + until, +} from '@guardian/source/foundations'; import { Hide } from '@guardian/source/react-components'; import { StraightLines } from '@guardian/source-development-kitchen/react-components'; import { AffiliateDisclaimer } from '../components/AffiliateProducts/AffiliateDisclaimer'; @@ -161,6 +166,41 @@ const GridItem = ({ ); +const TopHatScrollPrompt = ({ topGap }: { topGap: number }) => ( +
+ + + + +
Scroll to continue
+
+); + export const StandardLayoutArticleGrid = ({ article, format, @@ -229,11 +269,38 @@ export const StandardLayoutArticleGrid = ({ const layoutType = getLayoutType(format, mainMediaOrientation); + const setCentreRule = (gridLayout: LayoutType) => { + if (isLabs || gridLayout === 'interactiveStandard') return undefined; + + const getColumnCount = () => { + switch (gridLayout) { + case 'immersivePortrait': + case 'immersiveLandscape': + return 4; + case 'interactiveTopHatFull': + return 6; + case 'interactiveTopHatLite': + return 5; + default: + return 3; + } + }; + + return css` + ${from.leftCol} { + ${grid.centreRule(getColumnCount())} + } + `; + }; + const contentLayoutName = `${ArticleDisplay[format.display]}Layout`; const isImmersivePortrait = layoutType === 'immersivePortrait'; const isImmersiveLandscape = layoutType === 'immersiveLandscape'; const isImmersive = isImmersivePortrait || isImmersiveLandscape; + const isInteractiveTopHat = + layoutType === 'interactiveTopHatLite' || + layoutType === 'interactiveTopHatFull'; const hasMinimumImageHeight = isLabs && isImmersivePortrait && isMainMediaImage; @@ -259,7 +326,16 @@ export const StandardLayoutArticleGrid = ({ } `; const hideCaptionBeneathMainMedia = - layoutType === 'media' || isImmersiveLandscape || isImmersivePortrait; + layoutType === 'media' || + isInteractiveTopHat || + isImmersiveLandscape || + isImmersivePortrait; + + const topHatFurnitureBackgroundStyles = css` + z-index: ${getZIndex('mediaOverlay')}; + background: rgba(255, 255, 255, 0.9); + padding: 0 10px; + `; return (
{layoutType === 'picture' || layoutType === 'comment' ? ( @@ -535,6 +614,9 @@ export const StandardLayoutArticleGrid = ({ area="standfirst" layoutType={layoutType} css={[ + css` + position: relative; + `, isImmersive && css` ${until.tablet} { @@ -551,6 +633,7 @@ export const StandardLayoutArticleGrid = ({ padding-bottom: 14px; } `, + isInteractiveTopHat && topHatFurnitureBackgroundStyles, ]} > + {layoutType === 'interactiveTopHatLite' && ( + + )} {isImmersive && ( {format.display !== ArticleDisplay.Immersive && format.design !== ArticleDesign.Audio && - layoutType !== 'immersivePortrait' && ( + layoutType !== 'immersivePortrait' && + !isInteractiveTopHat && (
)} + {layoutType === 'interactiveTopHatFull' && ( + + )} )} - {layoutType === 'interactive' && ( + {layoutType === 'interactiveStandard' && (