4
0
forked from crowetic/commerce

51 lines
1.6 KiB
TypeScript
Raw Permalink Normal View History

Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
2023-07-24 21:40:29 -05:00
import { useEffect, useState } from 'react';
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
2023-07-24 21:40:29 -05:00
import { MagnifyingGlassIcon } from '@heroicons/react/24/outline';
2023-05-12 16:02:51 -07:00
import { createUrl } from 'lib/utils';
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
export default function Search() {
const router = useRouter();
const searchParams = useSearchParams();
2023-07-24 21:40:29 -05:00
const [searchValue, setSearchValue] = useState('');
useEffect(() => {
setSearchValue(searchParams?.get('q') || '');
}, [searchParams, setSearchValue]);
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
function onSubmit(e: React.FormEvent<HTMLFormElement>) {
e.preventDefault();
const val = e.target as HTMLFormElement;
const search = val.search as HTMLInputElement;
2023-05-12 16:02:51 -07:00
const newParams = new URLSearchParams(searchParams.toString());
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
if (search.value) {
2023-05-12 16:02:51 -07:00
newParams.set('q', search.value);
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
} else {
2023-05-12 16:02:51 -07:00
newParams.delete('q');
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
}
2023-05-12 16:02:51 -07:00
router.push(createUrl('/search', newParams));
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
}
return (
<form onSubmit={onSubmit} className="w-max-[550px] relative w-full lg:w-80 xl:w-full">
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
<input
type="text"
name="search"
placeholder="Search for products..."
autoComplete="off"
2023-07-24 21:40:29 -05:00
value={searchValue}
onChange={(e) => setSearchValue(e.target.value)}
className="w-full rounded-lg border bg-white px-4 py-2 text-sm text-black placeholder:text-neutral-500 dark:border-neutral-800 dark:bg-transparent dark:text-white dark:placeholder:text-neutral-400"
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
/>
<div className="absolute right-0 top-0 mr-3 flex h-full items-center">
2023-07-24 21:40:29 -05:00
<MagnifyingGlassIcon className="h-4" />
Next.js Commerce refresh. (#966) We're making some updates to Next.js Commerce. Everything prior to this commit marks what we're calling [`v1`](https://github.com/vercel/commerce/releases/tag/v1) as a point in time to be able to reference and still use going into the future. The current architecture of Commerce is a multi-vendor, interoperable solution, including: - [Shopify](https://shopify.vercel.store/) - [Swell](https://swell.vercel.store/) - [BigCommerce](https://bigcommerce.vercel.store/) - [Vendure](https://vendure.vercel.store/) - [Saleor](https://saleor.vercel.store/) - [Ordercloud](https://ordercloud.vercel.store/) - [Spree](https://spree.vercel.store/) - [Kibo Commerce](https://kibocommerce.vercel.store/) - [Commerce.js](https://commercejs.vercel.store/) - [SalesForce Cloud Commerce](https://salesforce-cloud-commerce.vercel.store/) All features can be toggled on or off, and it's easy to change between commerce providers. To support this, we needed to create a ["commerce metaframework"](https://github.com/vercel/commerce/blob/d1d9e8c4343e70d72df6e00ec95f6ea4efbb7c54/packages/commerce/new-provider.md) where providers could confirm to an API spec to add support for Next.js Commerce. While this worked and was successful for `v1`, we have different design goals and ambitions for `v2`. **What You Need To Know** - `v1` will not be updated moving forward. If you need to reference `v1`, you will still be able to clone and deploy the version tagged at this release. - `v2` will be shifting to be a single provider vs. provider agnostic. Other providers are welcome to fork this repository and swap out the underlying `lib/` implementation that connects to the selected commerce provider (Shopify). This architecture was chosen to reduce the surface area of the codebase, remove the intermediate metaframework layer for provider-interoperability, and enable usage with the latest Next.js and React features. - We will be sharing more about `v2` in the future as we continue to iterate before the marked release.
2023-04-17 23:00:47 -04:00
</div>
</form>
);
}