7 Commits

Author SHA1 Message Date
Lee Robinson
a9fd59c752 dynami 2023-09-02 11:17:54 -05:00
Lee Robinson
1adda37f2e rip 2023-09-02 11:11:20 -05:00
Lee Robinson
eeebd31b6c Dynamic 2023-09-02 11:10:15 -05:00
Matt Brailsford
18167d22f3 Adds Umbraco provider (#1170) 2023-08-23 10:48:48 -05:00
Michael Novotny
4993fca356 Fixes squished footer (#1184) 2023-08-23 10:00:31 -05:00
Michael Novotny
e9643a546e Adds download link for product assets (#1179) 2023-08-19 11:01:10 -05:00
Michael Novotny
6a153b627c Replaces README configuration guide with Vercel and Shopify integration guide (#1174) 2023-08-14 16:14:37 -05:00
7 changed files with 43 additions and 10 deletions

View File

@@ -23,7 +23,7 @@ A Next.js 13 and App Router-ready ecommerce template featuring:
Vercel will only be actively maintaining a Shopify version [as outlined in our vision and strategy for Next.js Commerce](https://github.com/vercel/commerce/pull/966).
Vercel is more than happy to partner and work with any commerce provider to help them get a similar template up and running and listed below. Alternative providers should be able to fork this repository and swap out the `lib/shopify` file with their own implementation while leaving the rest of the template mostly unchanged.
Vercel is happy to partner and work with any commerce provider to help them get a similar template up and running and listed below. Alternative providers should be able to fork this repository and swap out the `lib/shopify` file with their own implementation while leaving the rest of the template mostly unchanged.
- Shopify (this repository)
- [BigCommerce](https://github.com/bigcommerce/nextjs-commerce) ([Demo](https://next-commerce-v2.vercel.app/))
@@ -31,6 +31,9 @@ Vercel is more than happy to partner and work with any commerce provider to help
- [Saleor](https://github.com/saleor/nextjs-commerce) ([Demo](https://saleor-commerce.vercel.app/))
- [Shopware](https://github.com/shopwareLabs/vercel-commerce) ([Demo](https://shopware-vercel-commerce-react.vercel.app/))
- [Swell](https://github.com/swellstores/verswell-commerce) ([Demo](https://verswell-commerce.vercel.app/))
- [Umbraco](https://github.com/umbraco/Umbraco.VercelCommerce.Demo) ([Demo](https://vercel-commerce-demo.umbraco.com/))
> Note: Providers, if you are looking to use similar products for your demo, you can [download these assets](https://drive.google.com/file/d/1q_bKerjrwZgHwCw0ovfUMW6He9VtepO_/view?usp=sharing).
## Running locally
@@ -59,6 +62,6 @@ Your app should now be running on [localhost:3000](http://localhost:3000/).
1. Run `pmpm dev` to ensure everything is working correctly.
</details>
## Vercel, Next.js Commerce, and Shopify integration guide
## Vercel, Next.js Commerce, and Shopify Integration Guide
You can use this comprehensive [integration guide](http://vercel.com/docs/integrations/shopify) with step-by-step instructions on how to configure Shopify as a headless CMS using Next.js Commerce as your headless Shopify storefront on Vercel.

View File

@@ -3,8 +3,6 @@ import { ThreeItemGrid } from 'components/grid/three-items';
import Footer from 'components/layout/footer';
import { Suspense } from 'react';
export const runtime = 'edge';
export const metadata = {
description: 'High-performance ecommerce store built with Next.js, Vercel, and Shopify.',
openGraph: {

20
components/dynamic.tsx Normal file
View File

@@ -0,0 +1,20 @@
import { Suspense } from 'react';
//import { dynamic } from "next/render-mode"
import "server-only";
function D({ children }: { children: React.ReactNode }) {
//dynamic();
return children;
}
export function Dynamic({fallback, error, children}: {
fallback: React.ReactNode,
error: string,
children: React.ReactNode
}) {
return (
<Suspense fallback={fallback}>
<D>{children}</D>
</Suspense>
);
}

View File

@@ -16,7 +16,7 @@ export default async function Footer() {
return (
<footer className="text-sm text-neutral-500 dark:text-neutral-400">
<div className="mx-auto flex w-full max-w-7xl flex-col gap-6 border-t border-neutral-200 px-6 py-12 text-sm dark:border-neutral-700 md:flex-row md:gap-12 md:px-4 xl:px-0">
<div className="mx-auto flex w-full max-w-7xl flex-col gap-6 border-t border-neutral-200 px-6 py-12 text-sm dark:border-neutral-700 md:flex-row md:gap-12 md:px-4 min-[1320px]:px-0">
<div>
<Link className="flex items-center gap-2 text-black dark:text-white md:pt-1" href="/">
<LogoSquare size="sm" />
@@ -50,7 +50,7 @@ export default async function Footer() {
</div>
</div>
<div className="border-t border-neutral-200 py-6 text-sm dark:border-neutral-700">
<div className="mx-auto flex w-full max-w-7xl flex-col items-center gap-1 px-4 md:flex-row md:gap-0 md:px-4 xl:px-0">
<div className="mx-auto flex w-full max-w-7xl flex-col items-center gap-1 px-4 md:flex-row md:gap-0 md:px-4 min-[1320px]:px-0">
<p>
&copy; {copyrightDate} {copyrightName}
{copyrightName.length && !copyrightName.endsWith('.') ? '.' : ''} All rights reserved.

View File

@@ -1,10 +1,10 @@
import Cart from 'components/cart';
import OpenCart from 'components/cart/open-cart';
import { Dynamic } from 'components/dynamic';
import LogoSquare from 'components/logo-square';
import { getMenu } from 'lib/shopify';
import { Menu } from 'lib/shopify/types';
import Link from 'next/link';
import { Suspense } from 'react';
import MobileMenu from './mobile-menu';
import Search from './search';
const { SITE_NAME } = process.env;
@@ -44,9 +44,9 @@ export default async function Navbar() {
<Search />
</div>
<div className="flex justify-end md:w-1/3">
<Suspense fallback={<OpenCart />}>
<Dynamic fallback={<OpenCart />} error="There was an error opening the cart.">
<Cart />
</Suspense>
</Dynamic>
</div>
</div>
</nav>

View File

@@ -27,7 +27,8 @@
"clsx": "^2.0.0",
"next": "13.4.13-canary.15",
"react": "18.2.0",
"react-dom": "18.2.0"
"react-dom": "18.2.0",
"server-only": "^0.0.1"
},
"devDependencies": {
"@tailwindcss/container-queries": "^0.1.1",

11
pnpm-lock.yaml generated
View File

@@ -1,5 +1,9 @@
lockfileVersion: '6.0'
settings:
autoInstallPeers: false
excludeLinksFromLockfile: false
dependencies:
'@headlessui/react':
specifier: ^1.7.15
@@ -19,6 +23,9 @@ dependencies:
react-dom:
specifier: 18.2.0
version: 18.2.0(react@18.2.0)
server-only:
specifier: ^0.0.1
version: 0.0.1
devDependencies:
'@tailwindcss/container-queries':
@@ -2898,6 +2905,10 @@ packages:
lru-cache: 6.0.0
dev: true
/server-only@0.0.1:
resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
dev: false
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}