diff --git a/demo/site/src/common/blocks/TextImageBlock.tsx b/demo/site/src/common/blocks/TextImageBlock.tsx index 86b3025c4f..de978e548f 100644 --- a/demo/site/src/common/blocks/TextImageBlock.tsx +++ b/demo/site/src/common/blocks/TextImageBlock.tsx @@ -1,6 +1,8 @@ "use client"; import { PropsWithData, withPreview } from "@comet/cms-site"; import { TextImageBlockData } from "@src/blocks.generated"; +import { PageLayout } from "@src/layout/PageLayout"; +import { createImageSizes } from "@src/util/createImageSizes"; import styled, { css } from "styled-components"; import { DamImageBlock } from "./DamImageBlock"; @@ -11,7 +13,7 @@ export const TextImageBlock = withPreview( return ( - + @@ -22,11 +24,21 @@ export const TextImageBlock = withPreview( { label: "Text/Image" }, ); +export const PageContentTextImageBlock = (props: PropsWithData) => ( + + + +); + const Root = styled.div<{ $imagePosition: TextImageBlockData["imagePosition"] }>` display: flex; - flex-direction: row; + flex-direction: column; gap: 20px; + ${({ theme }) => theme.breakpoints.md.mediaQuery} { + flex-direction: row; + } + ${({ $imagePosition }) => $imagePosition === "left" && css` @@ -35,6 +47,7 @@ const Root = styled.div<{ $imagePosition: TextImageBlockData["imagePosition"] }> `; const ImageContainer = styled.div` + position: relative; flex: 1; `; diff --git a/demo/site/src/documents/pages/blocks/PageContentBlock.tsx b/demo/site/src/documents/pages/blocks/PageContentBlock.tsx index 5743b3d26b..95d5a89f46 100644 --- a/demo/site/src/documents/pages/blocks/PageContentBlock.tsx +++ b/demo/site/src/documents/pages/blocks/PageContentBlock.tsx @@ -11,7 +11,7 @@ import { SpaceBlock } from "@src/common/blocks/SpaceBlock"; import { PageContentStandaloneCallToActionListBlock } from "@src/common/blocks/StandaloneCallToActionListBlock"; import { PageContentStandaloneHeadingBlock } from "@src/common/blocks/StandaloneHeadingBlock"; import { StandaloneMediaBlock } from "@src/common/blocks/StandaloneMediaBlock"; -import { TextImageBlock } from "@src/common/blocks/TextImageBlock"; +import { PageContentTextImageBlock } from "@src/common/blocks/TextImageBlock"; import { BillboardTeaserBlock } from "@src/documents/pages/blocks/BillboardTeaserBlock"; import { ColumnsBlock } from "@src/documents/pages/blocks/ColumnsBlock"; import { ContentGroupBlock } from "@src/documents/pages/blocks/ContentGroupBlock"; @@ -42,7 +42,7 @@ const supportedBlocks: SupportedBlocks = { newsDetail: (props) => , image: (props) => , layout: (props) => , - textImage: (props) => , + textImage: (props) => , fullWidthImage: (props) => , }; diff --git a/demo/site/src/news/blocks/NewsContentBlock.tsx b/demo/site/src/news/blocks/NewsContentBlock.tsx index 2c7c094c07..4c251edb52 100644 --- a/demo/site/src/news/blocks/NewsContentBlock.tsx +++ b/demo/site/src/news/blocks/NewsContentBlock.tsx @@ -3,13 +3,13 @@ import { NewsContentBlockData } from "@src/blocks.generated"; import { DamImageBlock } from "@src/common/blocks/DamImageBlock"; import { HeadingBlock } from "@src/common/blocks/HeadingBlock"; import { RichTextBlock } from "@src/common/blocks/RichTextBlock"; -import { TextImageBlock } from "@src/common/blocks/TextImageBlock"; +import { PageContentTextImageBlock } from "@src/common/blocks/TextImageBlock"; const supportedBlocks: SupportedBlocks = { heading: (props) => , richText: (props) => , image: (props) => , - textImage: (props) => , + textImage: (props) => , }; export const NewsContentBlock = ({ data }: PropsWithData) => { diff --git a/demo/site/src/theme.ts b/demo/site/src/theme.ts index c3f8c745c6..074bd814ca 100644 --- a/demo/site/src/theme.ts +++ b/demo/site/src/theme.ts @@ -78,7 +78,7 @@ export const theme = { export default theme; -type Theme = typeof theme; +export type Theme = typeof theme; declare module "styled-components" { // eslint-disable-next-line @typescript-eslint/no-empty-interface diff --git a/demo/site/src/util/createImageSizes.ts b/demo/site/src/util/createImageSizes.ts new file mode 100644 index 0000000000..0b5a56637d --- /dev/null +++ b/demo/site/src/util/createImageSizes.ts @@ -0,0 +1,22 @@ +import theme, { Theme } from "@src/theme"; + +type BreakpointWidths = { xs: string | number } & Partial>; + +export function createImageSizes(breakpointWidths: BreakpointWidths) { + const sizes: string[] = []; + const breakpoints = Object.entries(theme.breakpoints).reverse(); + const defaultSize = breakpointWidths.xs; + + breakpoints.forEach(([breakpointKey, breakpointValue]) => { + const size = breakpointWidths[breakpointKey]; + const minWidth = breakpointValue.value; + + if (size !== undefined) { + sizes.push(`(min-width: ${minWidth}px) ${typeof size === "string" ? size : `${size}px`}`); + } + }); + + sizes.push(`(min-width: 0px) ${typeof defaultSize === "string" ? defaultSize : `${defaultSize}px`}`); + + return sizes.join(", "); +}