diff --git a/dotcom-rendering/src/components/ArticleMeta.apps.tsx b/dotcom-rendering/src/components/ArticleMeta.apps.tsx
index fe34af72e1e..0fc4734d311 100644
--- a/dotcom-rendering/src/components/ArticleMeta.apps.tsx
+++ b/dotcom-rendering/src/components/ArticleMeta.apps.tsx
@@ -98,7 +98,7 @@ const MetaGridByline = ({
children: ReactNode;
isComment: boolean;
}) => (
- // address > div > span > div:first-of-type - spacing for the Follow Tag buttons in follow wrapper,
+ // address > div > div:first-of-type - spacing for the Follow Tag buttons in follow wrapper,
// which is contextual of the meta by layout type
div > span > div:first-of-type {
+ address > div > div:first-of-type {
display: block;
margin-top: ${space[2]}px;
${!isComment && `margin-bottom: ${space[2]}px;`}
diff --git a/dotcom-rendering/src/components/BylineLink.tsx b/dotcom-rendering/src/components/BylineLink.tsx
index 3c9c4beca07..9eca0a5bd46 100644
--- a/dotcom-rendering/src/components/BylineLink.tsx
+++ b/dotcom-rendering/src/components/BylineLink.tsx
@@ -1,5 +1,4 @@
import { isString } from '@guardian/libs';
-import { Hide } from '@guardian/source/react-components';
import { DottedLines } from '@guardian/source-development-kitchen/react-components';
import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat';
import {
@@ -191,7 +190,7 @@ export const BylineLink = ({
<>
{renderedTokens}
{isApps && !isLiveBlog && !isHeadline && hasSoleContributor ? (
-
+ <>
-
+ >
) : null}
>
);
diff --git a/dotcom-rendering/src/layouts/CommentLayout.tsx b/dotcom-rendering/src/layouts/CommentLayout.tsx
index 1ffc9067f0a..c9f8cb70544 100644
--- a/dotcom-rendering/src/layouts/CommentLayout.tsx
+++ b/dotcom-rendering/src/layouts/CommentLayout.tsx
@@ -56,9 +56,11 @@ import { BannerWrapper, Stuck } from './lib/stickiness';
const StandardGrid = ({
children,
display,
+ renderingTarget,
}: {
children: React.ReactNode;
display: ArticleDisplay;
+ renderingTarget: RenderingTarget;
}) => (
{
backgroundColour={themePalette('--article-background')}
element="article"
>
-
+
{
{isApps ? (
- <>
-
-
-
-
-
-
- >
+
) : (
- <>
-
- >
+
)}
@@ -659,7 +643,9 @@ export const CommentLayout = (props: WebProps | AppsProps) => {
margin-left: 20px;
margin-right: -20px;
}
- ${from.leftCol} {
+
+ ${renderingTarget !== 'Apps' &&
+ from.leftCol} {
/* above 1140 */
margin-left: 0px;
margin-right: 0px;
diff --git a/dotcom-rendering/src/layouts/ImmersiveLayout.tsx b/dotcom-rendering/src/layouts/ImmersiveLayout.tsx
index aa1da47d660..50fe2d34d6e 100644
--- a/dotcom-rendering/src/layouts/ImmersiveLayout.tsx
+++ b/dotcom-rendering/src/layouts/ImmersiveLayout.tsx
@@ -57,9 +57,16 @@ import { parse } from '../lib/slot-machine-flags';
import type { NavType } from '../model/extract-nav';
import { palette as themePalette } from '../palette';
import type { ArticleDeprecated } from '../types/article';
+import type { RenderingTarget } from '../types/renderingTarget';
import { BannerWrapper, Stuck } from './lib/stickiness';
-const ImmersiveGrid = ({ children }: { children: React.ReactNode }) => (
+const ImmersiveGrid = ({
+ children,
+ renderingTarget,
+}: {
+ children: React.ReactNode;
+ renderingTarget: RenderingTarget;
+}) => (
(
display: grid;
width: 100%;
margin-left: 0;
-
+ ${renderingTarget === 'Apps' &&
+ css`
+ ${from.leftCol} {
+ margin-left: 230px;
+ }
+ `}
/*
Explanation of each unit of grid-template-columns
@@ -122,6 +134,22 @@ const ImmersiveGrid = ({ children }: { children: React.ReactNode }) => (
'. border . right-column';
}
+ /* Apply until.leftCol layout from leftCol for Apps targets */
+ ${renderingTarget === 'Apps' &&
+ css`
+ ${from.leftCol} {
+ grid-template-columns: 620px 300px;
+ grid-column-gap: 20px;
+ grid-template-areas:
+ 'title right-column'
+ 'headline right-column'
+ 'standfirst right-column'
+ 'byline right-column'
+ 'caption right-column'
+ 'meta right-column'
+ 'body right-column';
+ }
+ `}
/*
Explanation of each unit of grid-template-columns
@@ -449,7 +477,7 @@ export const ImmersiveLayout = (props: WebProps | AppProps) => {
backgroundColour={themePalette('--article-background')}
element="article"
>
-
+
{/* Above leftCol, the Caption is controlled by Section ^^ */}
@@ -549,62 +577,24 @@ export const ImmersiveLayout = (props: WebProps | AppProps) => {
)}
{isApps ? (
- <>
-
-
-
-
-
- {!!article.affiliateLinksDisclaimer && (
-
- )}
-
- >
+
) : (
<>
{
{isApps ? (
- <>
-
-
-
-
-
-
- >
+
) : (
(
+const ShowcaseGrid = ({
+ children,
+ renderingTarget,
+}: {
+ children: React.ReactNode;
+ renderingTarget: RenderingTarget;
+}) => (
(
display: grid;
width: 100%;
margin-left: 0;
+ ${renderingTarget === 'Apps' &&
+ css`
+ ${from.leftCol} {
+ margin-left: 270px;
+ }
+ `}
grid-column-gap: 10px;
@@ -87,25 +98,28 @@ const ShowcaseGrid = ({ children }: { children: React.ReactNode }) => (
Right Column
*/
- ${from.wide} {
- grid-template-columns: 219px 1px 620px 80px 300px;
- grid-template-areas:
- 'title border headline headline headline'
- 'meta border media media media'
- 'meta border standfirst . right-column'
- 'meta border body . right-column'
- '. border . . right-column';
- }
-
- ${until.wide} {
- grid-template-columns: 140px 1px 620px 300px;
- grid-template-areas:
- 'title border headline headline'
- 'meta border media media'
- 'meta border standfirst right-column'
- 'meta border body right-column'
- '. border . right-column';
- }
+ ${renderingTarget === 'Web' &&
+ css`
+ ${from.wide} {
+ grid-template-columns: 219px 1px 620px 80px 300px;
+ grid-template-areas:
+ 'title border headline headline headline'
+ 'meta border media media media'
+ 'meta border standfirst . right-column'
+ 'meta border body . right-column'
+ '. border . . right-column';
+ }
+
+ ${until.wide} {
+ grid-template-columns: 140px 1px 620px 300px;
+ grid-template-areas:
+ 'title border headline headline'
+ 'meta border media media'
+ 'meta border standfirst right-column'
+ 'meta border body right-column'
+ '. border . right-column';
+ }
+ `}
/*
Explanation of each unit of grid-template-columns
@@ -113,6 +127,23 @@ const ShowcaseGrid = ({ children }: { children: React.ReactNode }) => (
Main content
Right Column
*/
+
+
+ /* Apply until.leftCol layout from leftCol for Apps targets */
+ ${renderingTarget === 'Apps' &&
+ css`
+ ${from.leftCol} {
+ grid-template-columns: 620px 300px;
+ grid-template-areas:
+ 'title right-column'
+ 'headline right-column'
+ 'standfirst right-column'
+ 'media right-column'
+ 'meta right-column'
+ 'body right-column'
+ '. right-column';
+ }
+ `}
${until.leftCol} {
grid-template-columns: 620px 300px;
grid-template-areas:
@@ -362,7 +393,7 @@ export const ShowcaseLayout = (props: WebProps | AppsProps) => {
element="article"
borderColour={themePalette('--article-border')}
>
-
+
{
{isApps ? (
- <>
-
-
-
-
-
- {!!article.affiliateLinksDisclaimer && (
-
- )}
-
- >
+
) : (
<>
{
margin-left: 20px;
margin-right: -20px;
}
- ${from.leftCol} {
+ ${renderingTarget !== 'Apps' &&
+ from.leftCol} {
/* above 1140 */
margin-left: 0px;
margin-right: 0px;
diff --git a/dotcom-rendering/src/layouts/StandardLayout.tsx b/dotcom-rendering/src/layouts/StandardLayout.tsx
index 32a687379db..7679785e056 100644
--- a/dotcom-rendering/src/layouts/StandardLayout.tsx
+++ b/dotcom-rendering/src/layouts/StandardLayout.tsx
@@ -5,7 +5,6 @@ import {
palette as sourcePalette,
until,
} from '@guardian/source/foundations';
-import { Hide } from '@guardian/source/react-components';
import { StraightLines } from '@guardian/source-development-kitchen/react-components';
import { AdPortals } from '../components/AdPortals.importable';
import { AdSlot, MobileStickyContainer } from '../components/AdSlot.web';
@@ -64,10 +63,12 @@ const StandardGrid = ({
children,
isMatchReport,
isMedia,
+ renderingTarget,
}: {
children: React.ReactNode;
isMatchReport: boolean;
isMedia: boolean;
+ renderingTarget: RenderingTarget;
}) => (
@@ -463,6 +519,7 @@ export const StandardLayout = (props: WebProps | AppProps) => {
@@ -584,70 +641,26 @@ export const StandardLayout = (props: WebProps | AppProps) => {
{isApps ? (
- <>
-
-
-
-
-
- {!!article.affiliateLinksDisclaimer && (
-
- )}
-
- >
+
) : (
{
margin-right: -20px;
padding-bottom: ${isMedia ? 41 : 0}px;
}
- ${from.leftCol} {
+ ${renderingTarget !== 'Apps' &&
+ from.leftCol} {
/* above 1140 */
margin-left: 0px;
margin-right: 0px;