diff --git a/.changeset/seven-sloths-kick.md b/.changeset/seven-sloths-kick.md new file mode 100644 index 0000000000..a33924efc7 --- /dev/null +++ b/.changeset/seven-sloths-kick.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': patch +--- + +Update return types for Heading & Text components for React 19. diff --git a/packages/canon/report.api.md b/packages/canon/report.api.md index 1070193649..000a94f7dc 100644 --- a/packages/canon/report.api.md +++ b/packages/canon/report.api.md @@ -1013,11 +1013,14 @@ export interface HeaderTab { } // @public (undocumented) -export const Heading: ( - props: HeadingProps & { - ref?: React.Ref; - }, -) => React.ReactElement | null; +export const Heading: { + ( + props: HeadingProps & { + ref?: React.ComponentPropsWithRef['ref']; + }, + ): React.ReactElement, T>; + displayName: string; +}; // @public (undocumented) export type HeadingOwnProps = { @@ -1672,11 +1675,14 @@ export interface TabsRootWithoutOrientation > {} // @public (undocumented) -const Text_2: ( - props: TextProps & { - ref?: React.Ref; - }, -) => React.ReactElement | null; +const Text_2: { + ( + props: TextProps & { + ref?: React.ComponentPropsWithRef['ref']; + }, + ): React.ReactElement, T>; + displayName: string; +}; export { Text_2 as Text }; // @public (undocumented) diff --git a/packages/canon/src/components/Heading/Heading.tsx b/packages/canon/src/components/Heading/Heading.tsx index 3d173e98ac..4ea8bdcfe6 100644 --- a/packages/canon/src/components/Heading/Heading.tsx +++ b/packages/canon/src/components/Heading/Heading.tsx @@ -54,10 +54,11 @@ function HeadingComponent( HeadingComponent.displayName = 'Heading'; /** @public */ -export const Heading = forwardRef(HeadingComponent) as < - T extends ElementType = 'h1', ->( - props: HeadingProps & { ref?: React.Ref }, -) => React.ReactElement | null; +export const Heading = forwardRef(HeadingComponent) as { + ( + props: HeadingProps & { ref?: React.ComponentPropsWithRef['ref'] }, + ): React.ReactElement, T>; + displayName: string; +}; -(Heading as any).displayName = 'Heading'; +Heading.displayName = 'Heading'; diff --git a/packages/canon/src/components/Text/Text.tsx b/packages/canon/src/components/Text/Text.tsx index c37f0e4ce7..275765c42d 100644 --- a/packages/canon/src/components/Text/Text.tsx +++ b/packages/canon/src/components/Text/Text.tsx @@ -56,8 +56,11 @@ function TextComponent( TextComponent.displayName = 'Text'; /** @public */ -export const Text = forwardRef(TextComponent) as ( - props: TextProps & { ref?: React.Ref }, -) => React.ReactElement | null; +export const Text = forwardRef(TextComponent) as { + ( + props: TextProps & { ref?: React.ComponentPropsWithRef['ref'] }, + ): React.ReactElement, T>; + displayName: string; +}; -(Text as any).displayName = 'Text'; +Text.displayName = 'Text';