From 2a843d7700062bc7b2be33d1fa0e61abea71363c Mon Sep 17 00:00:00 2001 From: Enrique Benitez Date: Thu, 29 Oct 2020 16:04:13 -0600 Subject: [PATCH 01/12] Use price hook in slug page --- components/product/ProductView/ProductView.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/components/product/ProductView/ProductView.tsx b/components/product/ProductView/ProductView.tsx index 57df704c7..f4d8dd681 100644 --- a/components/product/ProductView/ProductView.tsx +++ b/components/product/ProductView/ProductView.tsx @@ -9,6 +9,7 @@ import { Swatch, ProductSlider } from '@components/product' import { Button, Container } from '@components/ui' import { HTMLContent } from '@components/core' +import usePrice from '@bigcommerce/storefront-data-hooks/use-price' import useAddItem from '@bigcommerce/storefront-data-hooks/cart/use-add-item' import type { ProductNode } from '@bigcommerce/storefront-data-hooks/api/operations/get-product' import { @@ -26,6 +27,11 @@ interface Props { const ProductView: FC = ({ product }) => { const addItem = useAddItem() + const { price } = usePrice({ + amount: product.prices?.price.value, + baseAmount: product.prices?.retailPrice?.value, + currencyCode: product.prices?.price?.currencyCode!, + }) const { openSidebar } = useUI() const options = getProductOptions(product) const [loading, setLoading] = useState(false) @@ -74,7 +80,7 @@ const ProductView: FC = ({ product }) => {

{product.name}

- {product.prices?.price.value} + {price} {` `} {product.prices?.price.currencyCode}
From cd829884f96e930e2e245c22084c23e84aba4313 Mon Sep 17 00:00:00 2001 From: Enrique Benitez Date: Thu, 29 Oct 2020 16:41:37 -0600 Subject: [PATCH 02/12] Add optional chaining operator --- components/product/ProductView/ProductView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/product/ProductView/ProductView.tsx b/components/product/ProductView/ProductView.tsx index f4d8dd681..8e004d857 100644 --- a/components/product/ProductView/ProductView.tsx +++ b/components/product/ProductView/ProductView.tsx @@ -28,7 +28,7 @@ interface Props { const ProductView: FC = ({ product }) => { const addItem = useAddItem() const { price } = usePrice({ - amount: product.prices?.price.value, + amount: product.prices?.price?.value, baseAmount: product.prices?.retailPrice?.value, currencyCode: product.prices?.price?.currencyCode!, }) From fc09363bab29e563abad80f218674e676c816346 Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Thu, 29 Oct 2020 18:20:41 -0500 Subject: [PATCH 03/12] Update to Next.js 10 --- package.json | 2 +- yarn.lock | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 1d2bce171..a6d84adfd 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "keen-slider": "^5.2.4", "lodash.debounce": "^4.0.8", "lodash.random": "^3.2.0", - "next": "^9.5.6-canary.17", + "next": "^10.0.0", "next-seo": "^4.11.0", "next-themes": "^0.0.4", "postcss-import": "^13.0.0", diff --git a/yarn.lock b/yarn.lock index bbd30ddc9..737dfab17 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1132,20 +1132,20 @@ dependencies: webpack-bundle-analyzer "3.6.1" -"@next/env@9.5.6-canary.17": - version "9.5.6-canary.17" - resolved "https://registry.yarnpkg.com/@next/env/-/env-9.5.6-canary.17.tgz#d0289faee8ff5635973661580e3b2848add94534" - integrity sha512-O8noGIlyNHfhT/6oHePxfYAa3hNf4arRJ66RsSkodg4bAI4+tY5glOE8YZ+wn4q84Of6QVVh7R3tJzL8oK714w== +"@next/env@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.0.tgz#eb0239062226a9c8b604d58d4a4204e26c22eb16" + integrity sha512-59+6BnOxPoMY64Qy2crDGHtvQgHwIL1SIkWeNiEud1V6ASs59SM9oDGN+Bo/EswII1nn+wQRpMvax0IIN2j+VQ== -"@next/polyfill-module@9.5.6-canary.17": - version "9.5.6-canary.17" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-9.5.6-canary.17.tgz#c7c26939804b24d80151cc2af775e65ee97e3465" - integrity sha512-zS5jmDwCiUpelp5BAc1e6vKSkKQkFHj53IhP+khkmDab48uv99iK32/qjNGurqyaHTbLjSXsPIGFmdKQ0hyE+A== +"@next/polyfill-module@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.0.tgz#17f59cb7325a03f23b66b979fccc56d133411b0a" + integrity sha512-FLSwwWQaP/sXjlS7w4YFu+oottbo/bjoh+L+YED7dblsaRJT89ifV+h8zvLvh1hCL7FJUYVar4rehvj/VO5T9w== -"@next/react-dev-overlay@9.5.6-canary.17": - version "9.5.6-canary.17" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-9.5.6-canary.17.tgz#0ad416c4d323fa013ee494f3fa3ac7e83bbc0c6b" - integrity sha512-0fBLm2UNHpJKUhqecs95KxVWVQWvf0Xz9vs8G1J8hO8WMUkAEiuvOt6w9BG94a6/xL3tPzBF1B3t4q/k0YT7Dg== +"@next/react-dev-overlay@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.0.tgz#ba1acc79bc9d874f1801a0b312e6a45de74bf425" + integrity sha512-HJ44TJXtaGfGxVtljPECZvqw+GctVvBr60Rsedo5A+wU2GIiycJ8n5yUSdc9UiYTnPuxfJFicJec6kgR6GSWKA== dependencies: "@babel/code-frame" "7.10.4" ally.js "1.4.1" @@ -1158,10 +1158,10 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@9.5.6-canary.17": - version "9.5.6-canary.17" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-9.5.6-canary.17.tgz#fb7ee8b51490187de72b27e0de5f9bd83ab2f310" - integrity sha512-Q2IU1MC8B9329WQQ1vZ/B3i7AcjBMQGcTCGf/QHRzzaqPa0zL90cCAksBCAxx5zbMv3BIJNrY+1VI+KYj5Po9A== +"@next/react-refresh-utils@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.0.tgz#45cdd1ad3b55ac442f8431cdc43ff53c3dc44d16" + integrity sha512-V1/oiDWb2C1Do0eZONsKX1aqGNkqCUqxUahIiCjwKFu9c3bps+Ygg4JjtaCd9oycv0KzYImUZnU+nqveFUjxUw== "@npmcli/move-file@^1.0.1": version "1.0.1" @@ -4305,10 +4305,10 @@ next-tick@~1.0.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -next@^9.5.6-canary.17: - version "9.5.6-canary.17" - resolved "https://registry.yarnpkg.com/next/-/next-9.5.6-canary.17.tgz#4ded8274457c05ac5028643fe9dfaf9f2808e300" - integrity sha512-ocUNL44RA/0vD43uR91JBtfBvHwDlclqPkno+9un01XUw41ZJFn6aSd6VqiLFOZ5eCWk6lK5WbcfJiOH/aV1Rg== +next@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/next/-/next-10.0.0.tgz#fbc82fa69f05bf82fb5c4e160151f38fb9615e99" + integrity sha512-hpJkikt6tqwj7DfD5Mizwc1kDsaaS73TQK6lJL+++Ht8QXIEs+KUqTZULgdMk80mDV2Zhzo9/JYMEranWwAFLA== dependencies: "@ampproject/toolbox-optimizer" "2.7.0-alpha.1" "@babel/code-frame" "7.10.4" @@ -4329,10 +4329,10 @@ next@^9.5.6-canary.17: "@babel/runtime" "7.11.2" "@babel/types" "7.11.5" "@hapi/accept" "5.0.1" - "@next/env" "9.5.6-canary.17" - "@next/polyfill-module" "9.5.6-canary.17" - "@next/react-dev-overlay" "9.5.6-canary.17" - "@next/react-refresh-utils" "9.5.6-canary.17" + "@next/env" "10.0.0" + "@next/polyfill-module" "10.0.0" + "@next/react-dev-overlay" "10.0.0" + "@next/react-refresh-utils" "10.0.0" ast-types "0.13.2" babel-plugin-transform-define "2.0.0" babel-plugin-transform-react-remove-prop-types "0.4.24" From 79491a5b3ffb67156a0e6c4d8ed837a40736ee05 Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Thu, 29 Oct 2020 19:03:18 -0500 Subject: [PATCH 04/12] Update lo latest canary --- next.config.js | 8 +++----- package.json | 2 +- yarn.lock | 48 ++++++++++++++++++++++++------------------------ 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/next.config.js b/next.config.js index 846dc61f3..080dd8066 100644 --- a/next.config.js +++ b/next.config.js @@ -3,11 +3,9 @@ module.exports = { sizes: [320, 480, 820, 1200, 1600], domains: ['cdn11.bigcommerce.com'], }, - experimental: { - i18n: { - locales: ['en-US', 'es'], - defaultLocale: 'en-US', - }, + i18n: { + locales: ['en-US', 'es'], + defaultLocale: 'en-US', }, rewrites() { return [ diff --git a/package.json b/package.json index a6d84adfd..565fc54de 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "keen-slider": "^5.2.4", "lodash.debounce": "^4.0.8", "lodash.random": "^3.2.0", - "next": "^10.0.0", + "next": "^10.0.1-canary.1", "next-seo": "^4.11.0", "next-themes": "^0.0.4", "postcss-import": "^13.0.0", diff --git a/yarn.lock b/yarn.lock index 737dfab17..4a2aff44c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1132,20 +1132,20 @@ dependencies: webpack-bundle-analyzer "3.6.1" -"@next/env@10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.0.tgz#eb0239062226a9c8b604d58d4a4204e26c22eb16" - integrity sha512-59+6BnOxPoMY64Qy2crDGHtvQgHwIL1SIkWeNiEud1V6ASs59SM9oDGN+Bo/EswII1nn+wQRpMvax0IIN2j+VQ== +"@next/env@10.0.1-canary.1": + version "10.0.1-canary.1" + resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.1-canary.1.tgz#c49199b5dda48b7ef77cfc044fb2a38e6bc71e7d" + integrity sha512-f2OOhLRHym6WXKEngB+mwGxp48xQBY7sj2/N3s19zOp4HJn+4evKcq5lvtBL4N2K74L/ObCw1l/xTrruvk8WfQ== -"@next/polyfill-module@10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.0.tgz#17f59cb7325a03f23b66b979fccc56d133411b0a" - integrity sha512-FLSwwWQaP/sXjlS7w4YFu+oottbo/bjoh+L+YED7dblsaRJT89ifV+h8zvLvh1hCL7FJUYVar4rehvj/VO5T9w== +"@next/polyfill-module@10.0.1-canary.1": + version "10.0.1-canary.1" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.1-canary.1.tgz#ab97dce131db21dc70adeab552e01a20918f193f" + integrity sha512-/Kc9lXbDjGnGQogk9Hb5bYjx2031bXDnZVatBblzOt1cGapkiX8P5OOgnXv4ki17GtWW4/epPKzTfm2i3T9YPA== -"@next/react-dev-overlay@10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.0.tgz#ba1acc79bc9d874f1801a0b312e6a45de74bf425" - integrity sha512-HJ44TJXtaGfGxVtljPECZvqw+GctVvBr60Rsedo5A+wU2GIiycJ8n5yUSdc9UiYTnPuxfJFicJec6kgR6GSWKA== +"@next/react-dev-overlay@10.0.1-canary.1": + version "10.0.1-canary.1" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.1-canary.1.tgz#a54785d2aeab8fd76a25196eabc15ca281173c42" + integrity sha512-LEOcvJ+EjivrN2Ce2FSTUcb5VbyyQ4cVe/Ie/ja4+NzHIMMMX49nqTZ3uW4PIlfaGtCjiMZC8I43OgrMI2eG6w== dependencies: "@babel/code-frame" "7.10.4" ally.js "1.4.1" @@ -1158,10 +1158,10 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.0.tgz#45cdd1ad3b55ac442f8431cdc43ff53c3dc44d16" - integrity sha512-V1/oiDWb2C1Do0eZONsKX1aqGNkqCUqxUahIiCjwKFu9c3bps+Ygg4JjtaCd9oycv0KzYImUZnU+nqveFUjxUw== +"@next/react-refresh-utils@10.0.1-canary.1": + version "10.0.1-canary.1" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.1-canary.1.tgz#ce11b740fe80c4a43462a695247577bceb39a3db" + integrity sha512-9Q0LQ3NJxP6YbYhWyNYCUxlcT7EzwSYwDJ7j3dsDQt9dLwMC8PNmDVN38zpcqDMavb6jOFtbJMivef2ZylieKw== "@npmcli/move-file@^1.0.1": version "1.0.1" @@ -4305,10 +4305,10 @@ next-tick@~1.0.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -next@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/next/-/next-10.0.0.tgz#fbc82fa69f05bf82fb5c4e160151f38fb9615e99" - integrity sha512-hpJkikt6tqwj7DfD5Mizwc1kDsaaS73TQK6lJL+++Ht8QXIEs+KUqTZULgdMk80mDV2Zhzo9/JYMEranWwAFLA== +next@^10.0.1-canary.1: + version "10.0.1-canary.1" + resolved "https://registry.yarnpkg.com/next/-/next-10.0.1-canary.1.tgz#fc68e0cfb04fce87dc81e8def09dc2cb916e106b" + integrity sha512-NG56oUFcX6AE+B8VFNXo6R1twWVGtj4037yNq+AI1zkQ3U7oWegZI+9KqjCi+4IzTvtl5tzkLvVxeaemEH+quA== dependencies: "@ampproject/toolbox-optimizer" "2.7.0-alpha.1" "@babel/code-frame" "7.10.4" @@ -4329,10 +4329,10 @@ next@^10.0.0: "@babel/runtime" "7.11.2" "@babel/types" "7.11.5" "@hapi/accept" "5.0.1" - "@next/env" "10.0.0" - "@next/polyfill-module" "10.0.0" - "@next/react-dev-overlay" "10.0.0" - "@next/react-refresh-utils" "10.0.0" + "@next/env" "10.0.1-canary.1" + "@next/polyfill-module" "10.0.1-canary.1" + "@next/react-dev-overlay" "10.0.1-canary.1" + "@next/react-refresh-utils" "10.0.1-canary.1" ast-types "0.13.2" babel-plugin-transform-define "2.0.0" babel-plugin-transform-react-remove-prop-types "0.4.24" From 7c9be7cf737f04313b23c9ae4cfe392b5e2cc0e4 Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Thu, 29 Oct 2020 19:03:43 -0500 Subject: [PATCH 05/12] Only include pages that have a locale --- pages/[...pages].tsx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pages/[...pages].tsx b/pages/[...pages].tsx index ad67d581a..0b535bdfc 100644 --- a/pages/[...pages].tsx +++ b/pages/[...pages].tsx @@ -1,4 +1,8 @@ -import type { GetStaticPropsContext, InferGetStaticPropsType } from 'next' +import type { + GetStaticPathsContext, + GetStaticPropsContext, + InferGetStaticPropsType, +} from 'next' import { getConfig } from '@bigcommerce/storefront-data-hooks/api' import getPage from '@bigcommerce/storefront-data-hooks/api/operations/get-page' import getAllPages from '@bigcommerce/storefront-data-hooks/api/operations/get-all-pages' @@ -32,11 +36,21 @@ export async function getStaticProps({ } } -export async function getStaticPaths() { +export async function getStaticPaths({ locales }: GetStaticPathsContext) { const { pages } = await getAllPages() return { - paths: pages.map((page) => page.url).filter((url) => url), + paths: pages + .map((page) => page.url) + .filter((url) => { + if (!locales) return url + // If there are locales, only include the pages that include one of the available locales + if (url && locales.includes(getSlug(url).split('/')[0])) return url + + console.log( + `The page '${url}' does not include a locale, when using i18n web pages from BigCommerce are expected to have a locale or they will be ignored` + ) + }), // Fallback shouldn't be enabled here or otherwise this route // will catch every page, even 404s, and we don't want that fallback: false, From c70a965c7ddb6e405dbc1f2abd5bd23d74323a9e Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Thu, 29 Oct 2020 19:21:46 -0500 Subject: [PATCH 06/12] Improved log and moved out of the page --- lib/usage-warns.ts | 22 ++++++++++++++++++++++ pages/[...pages].tsx | 24 +++++++++++++----------- 2 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 lib/usage-warns.ts diff --git a/lib/usage-warns.ts b/lib/usage-warns.ts new file mode 100644 index 000000000..a81b6dc09 --- /dev/null +++ b/lib/usage-warns.ts @@ -0,0 +1,22 @@ +export function missingLocaleInPages(): [string[], () => void] { + const invalidPaths: string[] = [] + const log = () => { + if (invalidPaths.length) { + const single = invalidPaths.length === 0 + const pages = single ? 'page' : 'pages' + + console.log( + `The ${pages} "${invalidPaths.join(', ')}" ${ + single ? 'does' : 'do' + } not include a locale, when using i18n web pages from BigCommerce +are expected to have a locale or they will be ignored.\n +Please update the ${pages} to include the default locale or make the ${pages} invisible by +unchecking the "Navigation Menu" option in the settings of ${ + single ? 'the' : 'each' + } web page\n` + ) + } + } + + return [invalidPaths, log] +} diff --git a/pages/[...pages].tsx b/pages/[...pages].tsx index 0b535bdfc..ccd59932a 100644 --- a/pages/[...pages].tsx +++ b/pages/[...pages].tsx @@ -8,6 +8,7 @@ import getPage from '@bigcommerce/storefront-data-hooks/api/operations/get-page' import getAllPages from '@bigcommerce/storefront-data-hooks/api/operations/get-all-pages' import getSlug from '@lib/get-slug' import { Layout, HTMLContent } from '@components/core' +import { missingLocaleInPages } from '@lib/usage-warns' export async function getStaticProps({ preview, @@ -38,19 +39,20 @@ export async function getStaticProps({ export async function getStaticPaths({ locales }: GetStaticPathsContext) { const { pages } = await getAllPages() + const [invalidPaths, log] = missingLocaleInPages() + const paths = pages + .map((page) => page.url) + .filter((url) => { + if (!url || !locales) return url + // If there are locales, only include the pages that include one of the available locales + if (locales.includes(getSlug(url).split('/')[0])) return url + + invalidPaths.push(url) + }) + log() return { - paths: pages - .map((page) => page.url) - .filter((url) => { - if (!locales) return url - // If there are locales, only include the pages that include one of the available locales - if (url && locales.includes(getSlug(url).split('/')[0])) return url - - console.log( - `The page '${url}' does not include a locale, when using i18n web pages from BigCommerce are expected to have a locale or they will be ignored` - ) - }), + paths, // Fallback shouldn't be enabled here or otherwise this route // will catch every page, even 404s, and we don't want that fallback: false, From b06dca4243cd7c79df2493bd75acf6eee1ace398 Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Thu, 29 Oct 2020 19:25:19 -0500 Subject: [PATCH 07/12] Added a comment --- lib/usage-warns.ts | 6 +++++- pages/[...pages].tsx | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/usage-warns.ts b/lib/usage-warns.ts index a81b6dc09..aa77f6304 100644 --- a/lib/usage-warns.ts +++ b/lib/usage-warns.ts @@ -1,8 +1,12 @@ +/** + * The utils here are used to help developers use the example + */ + export function missingLocaleInPages(): [string[], () => void] { const invalidPaths: string[] = [] const log = () => { if (invalidPaths.length) { - const single = invalidPaths.length === 0 + const single = invalidPaths.length === 1 const pages = single ? 'page' : 'pages' console.log( diff --git a/pages/[...pages].tsx b/pages/[...pages].tsx index ccd59932a..1457484fd 100644 --- a/pages/[...pages].tsx +++ b/pages/[...pages].tsx @@ -7,8 +7,8 @@ import { getConfig } from '@bigcommerce/storefront-data-hooks/api' import getPage from '@bigcommerce/storefront-data-hooks/api/operations/get-page' import getAllPages from '@bigcommerce/storefront-data-hooks/api/operations/get-all-pages' import getSlug from '@lib/get-slug' -import { Layout, HTMLContent } from '@components/core' import { missingLocaleInPages } from '@lib/usage-warns' +import { Layout, HTMLContent } from '@components/core' export async function getStaticProps({ preview, From c1db48bb665373f6fddff4766e600d59f98b58f3 Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Thu, 29 Oct 2020 19:26:44 -0500 Subject: [PATCH 08/12] Clarification --- lib/usage-warns.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/usage-warns.ts b/lib/usage-warns.ts index aa77f6304..2033cd029 100644 --- a/lib/usage-warns.ts +++ b/lib/usage-warns.ts @@ -12,8 +12,8 @@ export function missingLocaleInPages(): [string[], () => void] { console.log( `The ${pages} "${invalidPaths.join(', ')}" ${ single ? 'does' : 'do' - } not include a locale, when using i18n web pages from BigCommerce -are expected to have a locale or they will be ignored.\n + } not include a locale, or the locale is not supported. When using i18n, web pages from +BigCommerce are expected to have a locale or they will be ignored.\n Please update the ${pages} to include the default locale or make the ${pages} invisible by unchecking the "Navigation Menu" option in the settings of ${ single ? 'the' : 'each' From a97ca5c4097f90f2d3c7a818375d5b96e1719523 Mon Sep 17 00:00:00 2001 From: Alexandre Lotte <14101189+loteoo@users.noreply.github.com> Date: Thu, 29 Oct 2020 23:27:01 -0400 Subject: [PATCH 09/12] Fix typo in components/ui/README.md --- components/ui/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ui/README.md b/components/ui/README.md index 87ff485d5..5bf4fe510 100644 --- a/components/ui/README.md +++ b/components/ui/README.md @@ -1,3 +1,3 @@ # UI -Building blocks to build a rich graphical interfaces. Components should be atomic and pure. Serve one purpuse. +Building blocks to build a rich graphical interfaces. Components should be atomic and pure. Serve one purpose. From 9b4408c13c4ed0aa6e99b5342e05d57f1fccb0ee Mon Sep 17 00:00:00 2001 From: matias4205 Date: Sat, 31 Oct 2020 12:31:07 -0300 Subject: [PATCH 10/12] Fix: hasScrolled functionality --- components/core/Layout/Layout.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/core/Layout/Layout.tsx b/components/core/Layout/Layout.tsx index 9ac0a74ed..9b04181b6 100644 --- a/components/core/Layout/Layout.tsx +++ b/components/core/Layout/Layout.tsx @@ -36,14 +36,14 @@ const Layout: FC = ({ children, pageProps }) => { isDisabled: !(displaySidebar || displayModal), }) - const handleScroll = useCallback(() => { + const handleScroll = useCallback( debounce(() => { const offset = 0 const { scrollTop } = document.documentElement if (scrollTop > offset) setHasScrolled(true) else setHasScrolled(false) }, 1) - }, []) + , []) useEffect(() => { document.addEventListener('scroll', handleScroll) From cee786c5f0b92af819e857261f869b67aba41f28 Mon Sep 17 00:00:00 2001 From: Leah Wagner Date: Sat, 31 Oct 2020 14:34:34 -0700 Subject: [PATCH 11/12] Add documentation for retrieving env variables through Vercel CLI --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 76b311e42..5c2f2f153 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,12 @@ BIGCOMMERCE_STORE_API_TOKEN=<> BIGCOMMERCE_STORE_API_CLIENT_ID=<> ``` +If your project was started with a "Deploy with Vercel" button, you can use Vercel's CLI to retrieve these credentials. + +1. Install Vercel CLI: `npm i -g vercel` +2. Link local instance with Vercel and Github accounts (creates .vercel file): `vercel link` +3. Download your environment variables: `vercel env pull .env.local` + Next, you're free to customize the starter. More updates coming soon. Stay tuned. From 5c4c0cebde2d12143e70d0c7fa344419835a0706 Mon Sep 17 00:00:00 2001 From: Eliamar Tani Date: Sun, 1 Nov 2020 13:55:43 +0000 Subject: [PATCH 12/12] Update code to follow dry principle --- components/core/Layout/Layout.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/core/Layout/Layout.tsx b/components/core/Layout/Layout.tsx index 9ac0a74ed..c1ec2e896 100644 --- a/components/core/Layout/Layout.tsx +++ b/components/core/Layout/Layout.tsx @@ -40,8 +40,9 @@ const Layout: FC = ({ children, pageProps }) => { debounce(() => { const offset = 0 const { scrollTop } = document.documentElement - if (scrollTop > offset) setHasScrolled(true) - else setHasScrolled(false) + const scrolled = scrollTop > offset + + setHasScrolled(scrolled) }, 1) }, [])