diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 013b75040f5b..0ef796485483 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -180,9 +180,18 @@ importers: react-intersection-observer: specifier: ^9.16.0 version: 9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-markdown: + specifier: ^10.1.0 + version: 10.1.0(@types/react@18.3.26)(react@18.3.1) rehype-mdx-code-props: specifier: ^3.0.1 version: 3.0.1 + rehype-raw: + specifier: ^7.0.0 + version: 7.0.0 + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 theme-ui: specifier: ^0.17.2 version: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) @@ -5241,6 +5250,9 @@ packages: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -6689,6 +6701,12 @@ packages: react: '>=18.0.0' react-is: '>=18.0.0' + react-markdown@10.1.0: + resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + react-medium-image-zoom@5.4.0: resolution: {integrity: sha512-BsE+EnFVQzFIlyuuQrZ9iTwyKpKkqdFZV1ImEQN573QPqGrIUuNni7aF+sZwDcxlsuOMayCr6oO/PZR/yJnbRg==} peerDependencies: @@ -11349,7 +11367,7 @@ snapshots: '@scure/bip32@1.7.0': dependencies: - '@noble/curves': 1.9.1 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 @@ -12161,6 +12179,11 @@ snapshots: typescript: 5.9.3 zod: 3.25.76 + abitype@1.1.1(typescript@5.9.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.76 + abitype@1.1.1(typescript@5.9.3)(zod@4.1.12): optionalDependencies: typescript: 5.9.3 @@ -14210,6 +14233,8 @@ snapshots: dependencies: whatwg-encoding: 3.1.1 + html-url-attributes@3.0.1: {} + html-void-elements@3.0.0: {} http-errors@2.0.0: @@ -15632,7 +15657,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.25.76) + abitype: 1.1.1(typescript@5.9.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -15985,6 +16010,24 @@ snapshots: react: 18.3.1 react-is: 18.3.1 + react-markdown@10.1.0(@types/react@18.3.26)(react@18.3.1): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 18.3.26 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.0 + react: 18.3.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + react-medium-image-zoom@5.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 diff --git a/website/package.json b/website/package.json index 4ba46c77c395..d97f8328eb79 100644 --- a/website/package.json +++ b/website/package.json @@ -44,7 +44,10 @@ "react-dom": "^18.3.1", "react-ga4": "^2.1.0", "react-intersection-observer": "^9.16.0", + "react-markdown": "^10.1.0", "rehype-mdx-code-props": "^3.0.1", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.1", "theme-ui": "^0.17.2", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3", diff --git a/website/src/layout/templates/openApi/content.tsx b/website/src/layout/templates/openApi/content.tsx index 757b0e1c8923..d8e7b3d96d2d 100644 --- a/website/src/layout/templates/openApi/content.tsx +++ b/website/src/layout/templates/openApi/content.tsx @@ -1,6 +1,15 @@ import { type ComponentProps, Fragment, useContext } from 'react' +import Markdown from 'react-markdown' +import rehypeRaw from 'rehype-raw' +import remarkGfm from 'remark-gfm' -import { camelToKebab, ExperimentalCodeInline, ExperimentalSwitch, ExperimentalTag } from '@edgeandnode/gds' +import { + camelToKebab, + ExperimentalCodeInline, + ExperimentalLink, + ExperimentalSwitch, + ExperimentalTag, +} from '@edgeandnode/gds' import { CaretDown } from '@edgeandnode/gds/icons' import { Heading, Table } from '@/components' @@ -72,7 +81,15 @@ export default function TemplateOpenApiContent({ children, ...props }: Component
{parameter.description}
: null} + {parameter.description ? ( +