diff --git a/.changeset/solid-pianos-act.md b/.changeset/solid-pianos-act.md new file mode 100644 index 0000000000..701e7ed755 --- /dev/null +++ b/.changeset/solid-pianos-act.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Use Backstage Link component for markdown anchor rendering to ensure consistent internal and external link behavior. diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx index 6d978ebb6f..50bcf3956e 100644 --- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx +++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx @@ -23,6 +23,7 @@ import { HeadingProps } from 'react-markdown/lib/ast-to-react'; import rehypeRaw from 'rehype-raw'; import rehypeSanitize, { defaultSchema } from 'rehype-sanitize'; import type { PluggableList } from 'react-markdown/lib/react-markdown'; +import { Link } from '../Link'; export type MarkdownContentClassKey = 'markdown'; @@ -109,6 +110,15 @@ const components: Options['components'] = { h4: headingRenderer, h5: headingRenderer, h6: headingRenderer, + + a: ({ href, children, ...props }) => + href ? ( + + {children} + + ) : ( + <>{children} + ), }; const gfmRehypePlugins: PluggableList = [ diff --git a/plugins/scaffolder-react/src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx b/plugins/scaffolder-react/src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx index 6e2c6171e5..cfe3d57e74 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx @@ -96,10 +96,7 @@ export const DefaultTemplateOutputs = (props: { titleTypographyProps={{ component: 'h2' }} > - +