import { PageOptions } from '@graphcommerce/framer-next-pages' import { ApolloCartErrorAlert, EmptyCart, useCartQuery } from '@graphcommerce/magento-cart' import { ShippingPageDocument } from '@graphcommerce/magento-cart-checkout' import { EmailForm } from '@graphcommerce/magento-cart-email' import { ShippingAddressForm } from '@graphcommerce/magento-cart-shipping-address' import { ShippingMethodForm } from '@graphcommerce/magento-cart-shipping-method' import { PageMeta, StoreConfigDocument } from '@graphcommerce/magento-store' import { AppShellTitle, Button, FormActions, FormHeader, GetStaticProps, iconBox, iconChevronRight, PageShellHeader, Stepper, SvgImage, Title, } from '@graphcommerce/next-ui' import { ComposedForm, ComposedSubmit } from '@graphcommerce/react-hook-form' import { Container, NoSsr } from '@material-ui/core' import { useRouter } from 'next/router' import React from 'react' import { FullPageShellProps } from '../../components/AppShell/FullPageShell' import MinimalPageShell from '../../components/AppShell/MinimalPageShell' import { SheetShellProps } from '../../components/AppShell/SheetShell' import { DefaultPageDocument } from '../../components/GraphQL/DefaultPage.gql' import apolloClient from '../../lib/apolloClient' type Props = Record type GetPageStaticProps = GetStaticProps function ShippingPage() { const { data: cartData } = useCartQuery(ShippingPageDocument, { returnPartialData: true, }) const cartExists = typeof cartData?.cart !== 'undefined' const router = useRouter() const onSubmitSuccessful = () => router.push('/checkout/payment') return ( ( )} /> } divider={ } backFallbackHref='/cart' backFallbackTitle='Cart' > Shipping {!cartExists && } {cartExists && ( <> Shipping Shipping method ( <> )} /> )} ) } const pageOptions: PageOptions = { SharedComponent: MinimalPageShell, sharedKey: () => 'checkout', } ShippingPage.pageOptions = pageOptions export default ShippingPage export const getStaticProps: GetPageStaticProps = async ({ locale }) => { const client = apolloClient(locale, true) const conf = client.query({ query: StoreConfigDocument }) const staticClient = apolloClient(locale) const page = staticClient.query({ query: DefaultPageDocument, variables: { url: `checkout`, rootCategory: (await conf).data.storeConfig?.root_category_uid ?? '', }, }) return { props: { ...(await page).data, apolloState: await conf.then(() => client.cache.extract()), }, } }