Files
StevenandGitHub 4466ba436b chore(examples): use default prettier for examples/templates (#60530)
## Description
This PR ensures that the default prettier config is used for examples
and templates.

This config is compatible with `prettier@3` as well (upgrading prettier
is bigger change that can be a future PR).

## Changes
- Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will
be needed upgrading to prettier@3)
- Added `examples/.prettierrc.json` with default config (this will
change every example)
- Added `packages/create-next-app/templates/.prettierrc.json` with
default config (this will change every template)

## Related

- Fixes #54402
- Closes #54409
2024-01-11 16:01:44 -07:00

52 lines
976 B
TypeScript

import Image from "next/image";
import { documentToReactComponents } from "@contentful/rich-text-react-renderer";
import { BLOCKS } from "@contentful/rich-text-types";
interface Asset {
sys: {
id: string;
};
url: string;
description: string;
}
interface AssetLink {
block: Asset[];
}
interface Content {
json: any;
links: {
assets: AssetLink;
};
}
function RichTextAsset({
id,
assets,
}: {
id: string;
assets: Asset[] | undefined;
}) {
const asset = assets?.find((asset) => asset.sys.id === id);
if (asset?.url) {
return <Image src={asset.url} layout="fill" alt={asset.description} />;
}
return null;
}
export function Markdown({ content }: { content: Content }) {
return documentToReactComponents(content.json, {
renderNode: {
[BLOCKS.EMBEDDED_ASSET]: (node: any) => (
<RichTextAsset
id={node.data.target.sys.id}
assets={content.links.assets.block}
/>
),
},
});
}