File size: 1,332 Bytes
b91e262 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import type { ComponentProps } from 'react'
import ClientLinkComponent, { type LinkProps, useLinkStatus } from './link'
export default function LinkComponent(
props: ComponentProps<typeof ClientLinkComponent>
) {
const isLegacyBehavior = props.legacyBehavior
const childIsHostComponent =
typeof props.children === 'string' ||
typeof props.children === 'number' ||
typeof (props.children as any)?.type === 'string'
const childIsClientComponent =
(props.children as any)?.type?.$$typeof ===
Symbol.for('react.client.reference')
if (isLegacyBehavior && !childIsHostComponent && !childIsClientComponent) {
if ((props.children as any)?.type?.$$typeof === Symbol.for('react.lazy')) {
console.error(
`Using a Lazy Component as a direct child of \`<Link legacyBehavior>\` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's \`<a>\` tag.`
)
} else {
console.error(
`Using a Server Component as a direct child of \`<Link legacyBehavior>\` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's \`<a>\` tag.`
)
}
}
return <ClientLinkComponent {...props} />
}
export { type LinkProps, useLinkStatus }
|