import { MarketingShell } from '@frontend/components/layout/MarketingShell';
import { type ComponentType, type ReactNode } from 'react';

export type { HeadAssetsProps as UserLayoutHeadProps } from '@frontend/components/layout/HeadAssets';

export type FrontendPageComponent = ComponentType;

/**
 * Single shared layout reference so Inertia keeps header/footer mounted between visits.
 *
 * @see https://inertiajs.com/pages#persistent-layouts
 */
export function frontendPersistentLayout(page: ReactNode): React.JSX.Element {
    return <MarketingShell>{page}</MarketingShell>;
}

/** Assign the shared layout when a page does not define its own. */
export function applyDefaultFrontendLayout(page: { default: FrontendPageComponent }): void {
    if (page.default.layout === undefined) {
        page.default.layout = frontendPersistentLayout;
    }
}
