import type { NextPage } from 'next' import type { AppProps } from 'next/app' import type { ComponentType, ReactElement, ReactNode } from 'react' export type AppPropsWithLayout = AppProps<{ dehydratedState: any }> & { Component: NextPageWithLayout } export type NextPageWithLayout

= NextPage & { getLayout?: (page: ReactElement) => ReactNode } export function isNextPageWithLayout( Component: ComponentType | NextPageWithLayout ): Component is NextPageWithLayout { return 'getLayout' in Component && typeof Component.getLayout === 'function' }