import {Await, Link} from 'react-router';
import {Suspense, useId} from 'react';
import type {
CartApiQueryFragment,
FooterQuery,
HeaderQuery,
} from 'storefrontapi.generated';
import {Aside} from '~/components/Aside';
import {Footer} from '~/components/Footer';
import {Header, HeaderMenu} from '~/components/Header';
import {CartMain} from '~/components/CartMain';
import {
SEARCH_ENDPOINT,
SearchFormPredictive,
} from '~/components/SearchFormPredictive';
import {SearchResultsPredictive} from '~/components/SearchResultsPredictive';
interface PageLayoutProps {
cart: Promise;
footer: Promise;
header: HeaderQuery;
isLoggedIn: Promise;
publicStoreDomain: string;
children?: React.ReactNode;
}
export function PageLayout({
cart,
children = null,
footer,
header,
isLoggedIn,
publicStoreDomain,
}: PageLayoutProps) {
return (
{header && (
)}
{children}
);
}
function CartAside({cart}: {cart: PageLayoutProps['cart']}) {
return (
}>
{(cart) => {
return ;
}}
);
}
function SearchAside() {
const queriesDatalistId = useId();
return (
);
}
function MobileMenuAside({
header,
publicStoreDomain,
}: {
header: PageLayoutProps['header'];
publicStoreDomain: PageLayoutProps['publicStoreDomain'];
}) {
return (
header.menu &&
header.shop.primaryDomain?.url && (
)
);
}