|
1 | | -import React from 'react'; |
| 1 | +import React, { ReactElement, ReactNode } from 'react'; |
2 | 2 | import { css } from '@emotion/react'; |
3 | 3 | import MinimalHeader from '@/client/components/MinimalHeader'; |
4 | 4 | import { |
@@ -63,6 +63,12 @@ const mainStylesStretch = css` |
63 | 63 | gap: ${CONTAINER_GAP}; |
64 | 64 | `; |
65 | 65 |
|
| 66 | +const iframeThemeWrapperStyles = css` |
| 67 | + display: flex; |
| 68 | + flex-direction: column; |
| 69 | + gap: ${remSpace[2]}; |
| 70 | +`; |
| 71 | + |
66 | 72 | const pageHeaderStyles = (subduedHeadingStyle: boolean) => css` |
67 | 73 | color: var(--color-heading); |
68 | 74 | ${subduedHeadingStyle ? headlineMedium28 : headlineBold28}; |
@@ -97,22 +103,35 @@ export const MinimalLayout = ({ |
97 | 103 | return <Theme />; |
98 | 104 | }; |
99 | 105 |
|
| 106 | + const ConditionalIframeThemeWrapper = ({ |
| 107 | + children, |
| 108 | + }: { |
| 109 | + children: ReactNode | ReactElement; |
| 110 | + }) => |
| 111 | + overrideTheme?.includes('iframe') ? ( |
| 112 | + <section css={iframeThemeWrapperStyles}>{children}</section> |
| 113 | + ) : ( |
| 114 | + children |
| 115 | + ); |
| 116 | + |
100 | 117 | return ( |
101 | 118 | <> |
102 | 119 | {getTheme()} |
103 | 120 | {showGuardianHeader && <MinimalHeader />} |
104 | 121 | <main css={showGuardianHeader ? mainStyles(wide) : mainStylesStretch}> |
105 | 122 | {imageId && <MinimalLayoutImage id={imageId} />} |
106 | | - {pageHeader && ( |
107 | | - <header> |
108 | | - <h1 css={pageHeaderStyles(subduedHeadingStyle)}>{pageHeader}</h1> |
109 | | - </header> |
110 | | - )} |
111 | | - {leadText && typeof leadText === 'string' ? ( |
112 | | - <MainBodyText>{leadText}</MainBodyText> |
113 | | - ) : ( |
114 | | - leadText |
115 | | - )} |
| 123 | + <ConditionalIframeThemeWrapper> |
| 124 | + {pageHeader && ( |
| 125 | + <header> |
| 126 | + <h1 css={pageHeaderStyles(subduedHeadingStyle)}>{pageHeader}</h1> |
| 127 | + </header> |
| 128 | + )} |
| 129 | + {leadText && typeof leadText === 'string' ? ( |
| 130 | + <MainBodyText>{leadText}</MainBodyText> |
| 131 | + ) : ( |
| 132 | + leadText |
| 133 | + )} |
| 134 | + </ConditionalIframeThemeWrapper> |
116 | 135 | <section css={mainSectionStyles}> |
117 | 136 | {errorMessage && ( |
118 | 137 | <GatewayErrorSummary |
|
0 commit comments