diff --git a/.changeset/afraid-baboons-move.md b/.changeset/afraid-baboons-move.md new file mode 100644 index 0000000000..51575d9445 --- /dev/null +++ b/.changeset/afraid-baboons-move.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/magento-graphcms': patch +--- + +Added ProductScroller component with built-in skeleton loader diff --git a/.changeset/fifty-impalas-hug.md b/.changeset/fifty-impalas-hug.md new file mode 100644 index 0000000000..7ca2de1c39 --- /dev/null +++ b/.changeset/fifty-impalas-hug.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/next-ui': patch +--- + +Fixed ItemScroller component className. Changed from SidebarSlider to ItemScroller diff --git a/.changeset/fifty-taxis-speak.md b/.changeset/fifty-taxis-speak.md new file mode 100644 index 0000000000..a20b684170 --- /dev/null +++ b/.changeset/fifty-taxis-speak.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/magento-graphcms': patch +--- + +Added recently viewed products to product pages diff --git a/.changeset/long-llamas-cheer.md b/.changeset/long-llamas-cheer.md new file mode 100644 index 0000000000..4aa24de92e --- /dev/null +++ b/.changeset/long-llamas-cheer.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/magento-recently-viewed-products': minor +--- + +Added recently viewed products hook and render component diff --git a/.changeset/odd-poets-greet.md b/.changeset/odd-poets-greet.md new file mode 100644 index 0000000000..092fc09adb --- /dev/null +++ b/.changeset/odd-poets-greet.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/magento-product': patch +--- + +Removed unwanted space below ProductListItem images caused by line-height. Images are now perfectly square as expected. diff --git a/.changeset/stupid-ears-wink.md b/.changeset/stupid-ears-wink.md new file mode 100644 index 0000000000..99d2cee5bb --- /dev/null +++ b/.changeset/stupid-ears-wink.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/graphql-codegen-markdown-docs': patch +--- + +Render framework/config.md more nicely, so that we follow a more typescript-esque style, inline enums. diff --git a/.changeset/tall-candles-watch.md b/.changeset/tall-candles-watch.md new file mode 100644 index 0000000000..28bf41b058 --- /dev/null +++ b/.changeset/tall-candles-watch.md @@ -0,0 +1,6 @@ +--- +'@graphcommerce/magento-graphcms': patch +'@graphcommerce/magento-product': patch +--- + +Added Skeleton render type to productListRenderer diff --git a/docs/framework/config.md b/docs/framework/config.md index 3149480ab6..8b06df2372 100644 --- a/docs/framework/config.md +++ b/docs/framework/config.md @@ -77,7 +77,7 @@ Below is a list of all possible configurations that can be set by GraphCommerce. ### GraphCommerceConfig -#### `canonicalBaseUrl: String!` +#### canonicalBaseUrl: string (required) The canonical base URL is used for SEO purposes. @@ -86,7 +86,7 @@ Examples: - https://example.com/en - https://example.com/en-US -#### `hygraphEndpoint: String!` +#### hygraphEndpoint: string (required) The HyGraph endpoint. @@ -94,33 +94,33 @@ The HyGraph endpoint. Project settings -> API Access -> High Performance Read-only Content API -#### `magentoEndpoint: String!` +#### magentoEndpoint: string (required) GraphQL Magento endpoint. Examples: - https://magento2.test/graphql -#### `storefront: [[GraphCommerceStorefrontConfig](#GraphCommerceStorefrontConfig)!]!` +#### storefront: [GraphCommerceStorefrontConfig](#GraphCommerceStorefrontConfig)[] (required) All storefront configuration for the project -#### `cartDisplayPricesInclTax: Boolean` +#### cartDisplayPricesInclTax: boolean Due to a limitation of the GraphQL API it is not possible to determine if a cart should be displayed including or excluding tax. When Magento's StoreConfig adds this value, this can be replaced. -#### `compare: Boolean` +#### compare: boolean Use compare functionality -#### `compareVariant: [CompareVariant](#CompareVariant) (default: ICON)` +#### compareVariant: 'CHECKBOX' | 'ICON' = 'ICON' By default the compare feature is denoted with a 'compare ICON' (2 arrows facing one another). This may be fine for experienced users, but for more clarity it's also possible to present the compare feature as a CHECKBOX accompanied by the 'Compare' label -#### `configurableVariantForSimple: Boolean (default: [object Object])` +#### configurableVariantForSimple: boolean = false If a simple product is part of a Configurable product page, should the simple product be rendered as a configured option of the configurable product page? @@ -133,25 +133,25 @@ Magento also returns the Simple product and the Configurable product the simple If that is the case we render the configurable product page instead of the simple product page but the options to select the simple product are pre-selected. -#### `configurableVariantValues: [MagentoConfigurableVariantValues](#MagentoConfigurableVariantValues) (default: [object Object])` +#### configurableVariantValues: [MagentoConfigurableVariantValues](#MagentoConfigurableVariantValues) = { content: true, url: true } When a user selects a variant, it will switch the values on the configurable page with the values of the configured variant. Enabling options here will allow switching of those variants. -#### `crossSellsHideCartItems: Boolean (default: [object Object])` +#### crossSellsHideCartItems: boolean = false Determines if cross sell items should be shown when the user already has the product in their cart. This will result in a product will popping off the screen when you add it to the cart. Default: 'false' -#### `crossSellsRedirectItems: Boolean (default: [object Object])` +#### crossSellsRedirectItems: boolean = false Determines if, after adding a cross-sell item to the cart, the user should be redirected to the cross-sell items of the product they just added. Default: 'false' -#### `customerRequireEmailConfirmation: Boolean` +#### customerRequireEmailConfirmation: boolean Due to a limitation in the GraphQL API of Magento 2, we need to know if the customer requires email confirmation. @@ -159,11 +159,11 @@ customer requires email confirmation. This value should match Magento 2's configuration value for `customer/create_account/confirm` and should be removed once we can query -#### `debug: [GraphCommerceDebugConfig](#GraphCommerceDebugConfig)` +#### debug: [GraphCommerceDebugConfig](#GraphCommerceDebugConfig) Debug configuration for GraphCommerce -#### `demoMode: Boolean (default: true)` +#### demoMode: boolean = true Enables some demo specific code that is probably not useful for a project: @@ -171,7 +171,7 @@ Enables some demo specific code that is probably not useful for a project: - Adds "dominant_color" attribute swatches to the product list items. - Creates a big list items in the product list. -#### `googleAnalyticsId: String` +#### googleAnalyticsId: string See https://support.google.com/analytics/answer/9539598?hl=en @@ -179,7 +179,7 @@ Provide a value to enable Google Analytics for your store. To override the value for a specific locale, configure in i18n config. -#### `googleRecaptchaKey: String` +#### googleRecaptchaKey: string Google reCAPTCHA site key. When using reCAPTCHA, this value is required, even if you are configuring different values for each locale. @@ -189,17 +189,17 @@ Get a site key and a secret key from https://developers.google.com/recaptcha/doc The secret key should be added in the Magento admin panel (Stores > Configuration > Security > Google ReCAPTCHA Storefront > reCAPTCHA v3 Invisible) ReCAPTCHA can then be enabled/disabled for the different forms, separately (Stores > Configuration > Security > Google ReCAPTCHA Storefront > Storefront) -#### `googleTagmanagerId: String` +#### googleTagmanagerId: string The Google Tagmanager ID to be used on the site. This value is required even if you are configuring different values for each locale. -#### `hygraphProjectId: String` +#### hygraphProjectId: string Hygraph Project ID. **Only used for migrations.** -#### `hygraphWriteAccessEndpoint: String` +#### hygraphWriteAccessEndpoint: string Content API. **Only used for migrations.** @@ -207,7 +207,7 @@ Content API. **Only used for migrations.** Project settings -> API Access -> Content API -#### `hygraphWriteAccessToken: String` +#### hygraphWriteAccessToken: string Hygraph Management SDK Authorization Token. **Only used for migrations.** @@ -239,7 +239,7 @@ GC_HYGRAPH_WRITE_ACCESS_TOKEN="AccessTokenFromHygraph" yarn graphcommerce hygraph-migrate ``` -#### `legacyProductRoute: Boolean` +#### legacyProductRoute: boolean On older versions of GraphCommerce products would use a product type specific route. @@ -247,45 +247,49 @@ This should only be set to true if you use the /product/[url] AND /product/confi @deprecated Will be removed in a future version. [migration](../upgrading/graphcommerce-5-to-6.md#product-routing-changes) -#### `limitSsg: Boolean` +#### limitSsg: boolean Limit the static generation of SSG when building -#### `previewSecret: String` +#### previewSecret: string To enable next.js' preview mode, configure the secret you'd like to use. -#### `productFiltersLayout: [ProductFiltersLayout](#ProductFiltersLayout) (default: DEFAULT)` +#### productFiltersLayout: 'DEFAULT' | 'SIDEBAR' = 'DEFAULT' Layout how the filters are rendered. DEFAULT: Will be rendered as horzontal chips on desktop and mobile SIDEBAR: Will be rendered as a sidebar on desktop and horizontal chips on mobile -#### `productFiltersPro: Boolean` +#### productFiltersPro: boolean Product filters with better UI for mobile and desktop. -#### `productRoute: String` +#### productRoute: string By default we route products to /p/[url] but you can change this to /product/[url] if you wish. Default: '/p/' Example: '/product/' -#### `robotsAllow: Boolean` +#### recentlyViewedProducts: [RecentlyViewedProductsConfig](#RecentlyViewedProductsConfig) + +Settings for recently viewed products + +#### robotsAllow: boolean Allow the site to be indexed by search engines. If false, the robots.txt file will be set to disallow all. -#### `sidebarGallery: [SidebarGalleryConfig](#SidebarGalleryConfig)` +#### sidebarGallery: [SidebarGalleryConfig](#SidebarGalleryConfig) Configuration for the SidebarGallery component -#### `wishlistHideForGuests: Boolean` +#### wishlistHideForGuests: boolean Hide the wishlist functionality for guests. -#### `wishlistShowFeedbackMessage: Boolean` +#### wishlistShowFeedbackMessage: boolean Show a message when the product is added to the wishlist. @@ -293,18 +297,18 @@ Show a message when the product is added to the wishlist. Debug configuration for GraphCommerce -#### `pluginStatus: Boolean` +#### pluginStatus: boolean Reports which plugins are enabled or disabled. -#### `webpackCircularDependencyPlugin: Boolean` +#### webpackCircularDependencyPlugin: boolean Cyclic dependencies can cause memory issues and other strange bugs. This plugin will warn you when it detects a cyclic dependency. When running into memory issues, it can be useful to enable this plugin. -#### `webpackDuplicatesPlugin: Boolean` +#### webpackDuplicatesPlugin: boolean When updating packages it can happen that the same package is included with different versions in the same project. @@ -316,11 +320,11 @@ Issues that this can cause are: All storefront configuration for the project -#### `locale: String!` +#### locale: string (required) Must be a locale string https://www.unicode.org/reports/tr35/tr35-59/tr35.html#Identifiers -#### `magentoStoreCode: String!` +#### magentoStoreCode: string (required) Magento store code. @@ -331,7 +335,7 @@ Examples: - en-us - b2b-us -#### `canonicalBaseUrl: String` +#### canonicalBaseUrl: string The canonical base URL is used for SEO purposes. @@ -340,39 +344,39 @@ Examples: - https://example.com/en - https://example.com/en-US -#### `cartDisplayPricesInclTax: Boolean` +#### cartDisplayPricesInclTax: boolean Due to a limitation of the GraphQL API it is not possible to determine if a cart should be displayed including or excluding tax. -#### `defaultLocale: Boolean` +#### defaultLocale: boolean There can only be one entry with defaultLocale set to true. - If there are more, the first one is used. - If there is none, the first entry is used. -#### `domain: String` +#### domain: string Domain configuration, must be a domain https://tools.ietf.org/html/rfc3986 -#### `googleAnalyticsId: String` +#### googleAnalyticsId: string Configure different Google Analytics IDs for different locales. To disable for a specific locale, set the value to null. -#### `googleRecaptchaKey: String` +#### googleRecaptchaKey: string Locale specific google reCAPTCHA key. -#### `googleTagmanagerId: String` +#### googleTagmanagerId: string The Google Tagmanager ID to be used per locale. -#### `hygraphLocales: [String!]` +#### hygraphLocales: string[] Add a gcms-locales header to make sure queries return in a certain language, can be an array to define fallbacks. -#### `linguiLocale: String` +#### linguiLocale: string Specify a custom locale for to load translations. @@ -380,25 +384,37 @@ Specify a custom locale for to load translations. Options to configure which values will be replaced when a variant is selected on the product page. -#### `content: Boolean` +#### content: boolean Use the name, description, short description and meta data from the configured variant -#### `gallery: Boolean` +#### gallery: boolean This option enables the automatic update of product gallery images on the product page when a variant is selected, provided that the gallery images for the selected variant differ from the currently displayed images. -#### `url: Boolean` +#### url: boolean When a variant is selected the URL of the product will be changed in the address bar. This only happens when the actual variant is can be accessed by the URL. +### RecentlyViewedProductsConfig + +Settings for recently viewed products + +#### enabled: boolean + +Enable/disable recently viewed products + +#### maxCount: number + +Number of recently viewed products to be stored in localStorage + ### SidebarGalleryConfig SidebarGalleryConfig will contain all configuration values for the Sidebar Gallery component. -#### `paginationVariant: [SidebarGalleryPaginationVariant](#SidebarGalleryPaginationVariant)` +#### paginationVariant: 'DOTS' | 'THUMBNAILS_BOTTOM' Variant used for the pagination \ No newline at end of file diff --git a/examples/magento-graphcms/components/GraphCMS/RowProduct/RowProduct.tsx b/examples/magento-graphcms/components/GraphCMS/RowProduct/RowProduct.tsx index ce9acb43a4..ce6e3e4d88 100644 --- a/examples/magento-graphcms/components/GraphCMS/RowProduct/RowProduct.tsx +++ b/examples/magento-graphcms/components/GraphCMS/RowProduct/RowProduct.tsx @@ -19,7 +19,7 @@ type VariantRenderer = Record< type RowProductProps = RowProductFragment & { renderer?: Partial -} & ProductSpecsFragment & { items?: unknown } +} & ProductSpecsFragment & { items?: unknown } & { sku?: string | null | undefined } const defaultRenderer: Partial = { Specs, diff --git a/examples/magento-graphcms/components/ProductListItems/productListRenderer.tsx b/examples/magento-graphcms/components/ProductListItems/productListRenderer.tsx index 1b0315c5f2..fd705e8cec 100644 --- a/examples/magento-graphcms/components/ProductListItems/productListRenderer.tsx +++ b/examples/magento-graphcms/components/ProductListItems/productListRenderer.tsx @@ -1,4 +1,8 @@ -import { AddProductsToCartFab, ProductListItemRenderer } from '@graphcommerce/magento-product' +import { + AddProductsToCartFab, + ProductListItem, + ProductListItemRenderer, +} from '@graphcommerce/magento-product' import { ProductListItemBundle } from '@graphcommerce/magento-product-bundle' import { ProductListItemConfigurable } from '@graphcommerce/magento-product-configurable' import { ProductListItemDownloadable } from '@graphcommerce/magento-product-downloadable' @@ -9,6 +13,7 @@ import { ProductReviewSummary } from '@graphcommerce/magento-review' import { ProductWishlistChip } from '@graphcommerce/magento-wishlist' export const productListRenderer: ProductListItemRenderer = { + Skeleton: (props) => , SimpleProduct: (props) => { const { sku } = props return ( diff --git a/examples/magento-graphcms/graphcommerce.config.js.example b/examples/magento-graphcms/graphcommerce.config.js.example index f58536feeb..c39eefd3c3 100644 --- a/examples/magento-graphcms/graphcommerce.config.js.example +++ b/examples/magento-graphcms/graphcommerce.config.js.example @@ -10,6 +10,9 @@ const config = { magentoEndpoint: 'https://backend.reachdigital.dev/graphql', canonicalBaseUrl: 'https://graphcommerce.vercel.app', storefront: [{ locale: 'en', magentoStoreCode: 'en_US' }], + recentlyViewedProducts: { + enabled: true, + }, } module.exports = config diff --git a/examples/magento-graphcms/locales/de.po b/examples/magento-graphcms/locales/de.po index 48db00877a..3a683d27a7 100644 --- a/examples/magento-graphcms/locales/de.po +++ b/examples/magento-graphcms/locales/de.po @@ -529,6 +529,9 @@ msgstr "Produkt nicht verfügbar in {allLabels}" msgid "Products" msgstr "Produkte" +msgid "Recently viewed products" +msgstr "Kürzlich angesehene Produkte" + msgid "Region" msgstr "Region" diff --git a/examples/magento-graphcms/locales/en.po b/examples/magento-graphcms/locales/en.po index f5c91547fd..412b7d1f52 100644 --- a/examples/magento-graphcms/locales/en.po +++ b/examples/magento-graphcms/locales/en.po @@ -529,6 +529,9 @@ msgstr "Product not available in {allLabels}" msgid "Products" msgstr "Products" +msgid "Recently viewed products" +msgstr "Recently viewed products" + msgid "Region" msgstr "Region" diff --git a/examples/magento-graphcms/locales/es.po b/examples/magento-graphcms/locales/es.po index 43c1b8a701..7d3137dd59 100644 --- a/examples/magento-graphcms/locales/es.po +++ b/examples/magento-graphcms/locales/es.po @@ -529,6 +529,9 @@ msgstr "Producto no disponible en {allLabels}" msgid "Products" msgstr "Productos" +msgid "Recently viewed products" +msgstr "Productos vistos recientemente" + msgid "Region" msgstr "Región" diff --git a/examples/magento-graphcms/locales/fr.po b/examples/magento-graphcms/locales/fr.po index dab82beeba..326534283a 100644 --- a/examples/magento-graphcms/locales/fr.po +++ b/examples/magento-graphcms/locales/fr.po @@ -529,6 +529,9 @@ msgstr "Produit non disponible dans {allLabels}" msgid "Products" msgstr "Produits" +msgid "Recently viewed products" +msgstr "Derniers produits consultés" + msgid "Region" msgstr "Région" diff --git a/examples/magento-graphcms/locales/it.po b/examples/magento-graphcms/locales/it.po index bb500bec71..0de04991df 100644 --- a/examples/magento-graphcms/locales/it.po +++ b/examples/magento-graphcms/locales/it.po @@ -529,6 +529,9 @@ msgstr "Prodotto non disponibile in {allLabels}" msgid "Products" msgstr "Prodotti" +msgid "Recently viewed products" +msgstr "Prodotti visionati recentemente" + msgid "Region" msgstr "Regione" diff --git a/examples/magento-graphcms/locales/nl.po b/examples/magento-graphcms/locales/nl.po index 348afae3b2..326e786af5 100644 --- a/examples/magento-graphcms/locales/nl.po +++ b/examples/magento-graphcms/locales/nl.po @@ -529,6 +529,9 @@ msgstr "Product niet beschikbaar in {allLabels}" msgid "Products" msgstr "Producten" +msgid "Recently viewed products" +msgstr "Recent bekeken producten" + msgid "Region" msgstr "Regio" diff --git a/examples/magento-graphcms/package.json b/examples/magento-graphcms/package.json index afc2aff325..d12909148a 100644 --- a/examples/magento-graphcms/package.json +++ b/examples/magento-graphcms/package.json @@ -60,6 +60,7 @@ "@graphcommerce/magento-product-grouped": "7.1.0-canary.39", "@graphcommerce/magento-product-simple": "7.1.0-canary.39", "@graphcommerce/magento-product-virtual": "7.1.0-canary.39", + "@graphcommerce/magento-recently-viewed-products": "7.1.0-canary.39", "@graphcommerce/magento-review": "7.1.0-canary.39", "@graphcommerce/magento-search": "7.1.0-canary.39", "@graphcommerce/magento-store": "7.1.0-canary.39", diff --git a/examples/magento-graphcms/pages/p/[url].tsx b/examples/magento-graphcms/pages/p/[url].tsx index 186f82fa14..fdd57f686d 100644 --- a/examples/magento-graphcms/pages/p/[url].tsx +++ b/examples/magento-graphcms/pages/p/[url].tsx @@ -30,6 +30,7 @@ import { defaultConfigurableOptionsSelection, } from '@graphcommerce/magento-product-configurable' import { DownloadableProductOptions } from '@graphcommerce/magento-product-downloadable' +import { RecentlyViewedProducts } from '@graphcommerce/magento-recently-viewed-products' import { jsonLdProductReview, ProductReviewChip } from '@graphcommerce/magento-review' import { redirectOrNotFound, Money, StoreConfigDocument } from '@graphcommerce/magento-store' import { ProductWishlistChipDetail } from '@graphcommerce/magento-wishlist' @@ -41,6 +42,7 @@ import { LayoutDocument, LayoutNavigation, LayoutNavigationProps, + productListRenderer, RowProduct, RowRenderer, Usps, @@ -185,6 +187,12 @@ function ProductPage(props: Props) { }} /> )} + + } + exclude={[product.sku]} + productListRenderer={productListRenderer} + /> ) } diff --git a/packages/demo-magento-graphcommerce/package.json b/packages/demo-magento-graphcommerce/package.json index 282787dac7..7f33509f52 100644 --- a/packages/demo-magento-graphcommerce/package.json +++ b/packages/demo-magento-graphcommerce/package.json @@ -19,10 +19,12 @@ "@graphcommerce/framer-scroller": "7.1.0-canary.39", "@graphcommerce/magento-product": "7.1.0-canary.39", "@graphcommerce/magento-product-configurable": "7.1.0-canary.39", + "@graphcommerce/magento-recently-viewed-products": "7.1.0-canary.39", "@graphcommerce/next-ui": "7.1.0-canary.39", "@graphcommerce/prettier-config-pwa": "7.1.0-canary.39", "@graphcommerce/typescript-config-pwa": "7.1.0-canary.39", "@mui/material": "^5.10.16", + "framer-motion": "^10.0.0", "next": "*", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/packages/demo-magento-graphcommerce/plugins/demo/DemoRecentlyViewedProducts.tsx b/packages/demo-magento-graphcommerce/plugins/demo/DemoRecentlyViewedProducts.tsx new file mode 100644 index 0000000000..949008baa8 --- /dev/null +++ b/packages/demo-magento-graphcommerce/plugins/demo/DemoRecentlyViewedProducts.tsx @@ -0,0 +1,58 @@ +import { + useRecentlyViewedProducts, + useRecentlyViewedSkus, + type RecentlyViewedProductsProps, +} from '@graphcommerce/magento-recently-viewed-products' +import type { IfConfig, PluginProps } from '@graphcommerce/next-config' +import { + SidebarSlider, + filterNonNullableKeys, + RenderType, + responsiveVal, +} from '@graphcommerce/next-ui' +import { Typography } from '@mui/material' +import { useInView } from 'framer-motion' +import { useRef } from 'react' + +export const component = 'RecentlyViewedProducts' +export const exported = '@graphcommerce/magento-recently-viewed-products' +export const ifConfig: IfConfig = 'demoMode' + +function DemoRecentlyViewedProducts(props: PluginProps) { + const { exclude, title, productListRenderer, loading = 'lazy' } = props + + const ref = useRef(null) + const isInView = useInView(ref, { margin: '300px', once: true }) + const { skus } = useRecentlyViewedSkus({ exclude }) + const productList = useRecentlyViewedProducts({ exclude, skip: !isInView && loading === 'lazy' }) + + if ( + !import.meta.graphCommerce.recentlyViewedProducts?.enabled || + (!productList.loading && !skus.length) + ) { + return null + } + + const loadingProducts = [...Array(skus.length - productList.products.length).keys()].map((i) => ({ + __typename: 'Skeleton' as const, + uid: i.toString(), + })) + + return ( + <> +
+ {title}}> + {filterNonNullableKeys([...loadingProducts, ...productList.products]).map((item) => ( + + ))} + + + ) +} +export const Plugin = DemoRecentlyViewedProducts diff --git a/packages/ecommerce-ui/components/FormComponents/NumberFieldElement.tsx b/packages/ecommerce-ui/components/FormComponents/NumberFieldElement.tsx index c2df5a756f..bdcbef496f 100644 --- a/packages/ecommerce-ui/components/FormComponents/NumberFieldElement.tsx +++ b/packages/ecommerce-ui/components/FormComponents/NumberFieldElement.tsx @@ -81,7 +81,7 @@ export function NumberFieldElement(props: NumberFieldElem }, { '& input[type=number]': { - '-moz-appearance': 'textfield', + MozAppearance: 'textfield', }, '& .MuiOutlinedInput-root': { px: '2px', diff --git a/packages/hygraph-cli/dist/migrations/graphcommerce7to7.1.js b/packages/hygraph-cli/dist/migrations/graphcommerce7to7.1.js new file mode 100644 index 0000000000..2f4f4c6f40 --- /dev/null +++ b/packages/hygraph-cli/dist/migrations/graphcommerce7to7.1.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.graphcommerce7to7_1 = void 0; +const migrationAction_1 = require("../migrationAction"); +const graphcommerce7to7_1 = async (schema) => { + if (!migrationAction_1.client) { + return 0; + } + (0, migrationAction_1.migrationAction)(schema, 'enumeration', 'update', { + apiId: 'RowProductVariants', + valuesToCreate: [{ apiId: 'Recent', displayName: 'Recent' }], + }); + return migrationAction_1.client.run(true); +}; +exports.graphcommerce7to7_1 = graphcommerce7to7_1; diff --git a/packages/hygraph-cli/dist/migrations/index.js b/packages/hygraph-cli/dist/migrations/index.js index 359a8699ab..2ca36a87ca 100644 --- a/packages/hygraph-cli/dist/migrations/index.js +++ b/packages/hygraph-cli/dist/migrations/index.js @@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./graphcommerce5to6"), exports); __exportStar(require("./graphcommerce6to7"), exports); +__exportStar(require("./graphcommerce7to7.1"), exports); diff --git a/packages/magento-product/Config.graphqls b/packages/magento-product/Config.graphqls index ba68dc59b0..81e9a707ab 100644 --- a/packages/magento-product/Config.graphqls +++ b/packages/magento-product/Config.graphqls @@ -37,7 +37,7 @@ extend input GraphCommerceConfig { Default: 'false' """ - crossSellsRedirectItems: Boolean = false + crossSellsRedirectItems: Boolean = false """ Determines if cross sell items should be shown when the user already has the product in their cart. This will result in a product will popping off the screen when you add it to the cart. diff --git a/packages/magento-product/components/ProductListItem/ProductDiscountLabel.tsx b/packages/magento-product/components/ProductListItem/ProductDiscountLabel.tsx new file mode 100644 index 0000000000..48fe25ad5f --- /dev/null +++ b/packages/magento-product/components/ProductListItem/ProductDiscountLabel.tsx @@ -0,0 +1,34 @@ +import { useNumberFormat } from '@graphcommerce/next-ui' +import { Box, BoxProps } from '@mui/material' +import { ProductListItemFragment } from '../../Api/ProductListItem.gql' + +export type ProductDiscountLabelProps = Pick & + Omit + +export function ProductDiscountLabel(props: ProductDiscountLabelProps) { + const { price_range, ...boxProps } = props + const formatter = useNumberFormat({ style: 'percent', maximumFractionDigits: 1 }) + const discount = Math.floor(price_range.minimum_price.discount?.percent_off ?? 0) + + return ( + <> + {discount > 0 && ( + + {formatter.format(discount / -100)} + + )} + + ) +} diff --git a/packages/magento-product/components/ProductListItem/ProductListItem.tsx b/packages/magento-product/components/ProductListItem/ProductListItem.tsx index 065d765c44..f518251e5d 100644 --- a/packages/magento-product/components/ProductListItem/ProductListItem.tsx +++ b/packages/magento-product/components/ProductListItem/ProductListItem.tsx @@ -1,24 +1,27 @@ -import { Image, ImageProps } from '@graphcommerce/image' -import { - responsiveVal, - extendableComponent, - useNumberFormat, - breakpointVal, -} from '@graphcommerce/next-ui' -import { Trans } from '@lingui/react' -import { - ButtonBase, - Typography, - Box, - styled, - SxProps, - Theme, - useEventCallback, -} from '@mui/material' +import { ImageProps } from '@graphcommerce/image' +import { extendableComponent } from '@graphcommerce/next-ui' +import { SxProps, Theme, useEventCallback, Skeleton } from '@mui/material' import React from 'react' import { ProductListItemFragment } from '../../Api/ProductListItem.gql' -import { useProductLink } from '../../hooks/useProductLink' +import { productLink } from '../../hooks/useProductLink' import { ProductListPrice } from '../ProductListPrice/ProductListPrice' +import { ProductDiscountLabel } from './ProductDiscountLabel' +import { + ProductListItemImageProps, + ProductListItemImage, + ProductListItemImageSkeleton, +} from './ProductListItemImage' +import { + ProductListItemImageAreaKeys, + ProductListsItemImageAreaProps, + ProductListItemImageAreas, + ProductImageContainer, +} from './ProductListItemImageContainer' +import { ProductListItemLinkOrDiv } from './ProductListItemLinkOrDiv' +import { + ProductListItemTitleAndPrice, + ProductListItemTitleAndPriceProps, +} from './ProductListItemTitleAndPrice' const { classes, selectors } = extendableComponent('ProductListItem', [ 'root', @@ -38,29 +41,30 @@ const { classes, selectors } = extendableComponent('ProductListItem', [ 'discount', ] as const) -export type OverlayAreaKeys = 'topLeft' | 'bottomLeft' | 'topRight' | 'bottomRight' - -export type OverlayAreas = Partial> - type StyleProps = { - aspectRatio?: [number, number] imageOnly?: boolean } -type BaseProps = { subTitle?: React.ReactNode; children?: React.ReactNode } & StyleProps & - OverlayAreas & - ProductListItemFragment & - Pick - -export type ProductListItemProps = BaseProps & { +type BaseProps = { + imageOnly?: boolean + children?: React.ReactNode sx?: SxProps - titleComponent?: React.ElementType + // eslint-disable-next-line react/no-unused-prop-types onClick?: (event: React.MouseEvent, item: ProductListItemFragment) => void -} +} & StyleProps & + Omit & + Omit & + Omit & + Pick -const StyledImage = styled(Image)({}) +// eslint-disable-next-line react/no-unused-prop-types +type SkeletonProps = BaseProps & { __typename: 'Skeleton' } -export function ProductListItem(props: ProductListItemProps) { +type ProductProps = BaseProps & ProductListItemFragment + +export type ProductListItemProps = ProductProps | SkeletonProps + +export function ProductListItemReal(props: ProductProps) { const { subTitle, topLeft, @@ -81,202 +85,101 @@ export function ProductListItem(props: ProductListItemProps) { onClick, } = props - const handleClick = useEventCallback((e: React.MouseEvent) => - onClick?.(e, props), + const handleClick = useEventCallback( + (e: React.MouseEvent) => onClick?.(e, props), ) - const productLink = useProductLink(props) - const discount = Math.floor(price_range.minimum_price.discount?.percent_off ?? 0) - - const formatter = useNumberFormat({ style: 'percent', maximumFractionDigits: 1 }) - return ( - ({ - display: 'block', - position: 'relative', - height: '100%', - ...breakpointVal( - 'borderRadius', - theme.shape.borderRadius * 2, - theme.shape.borderRadius * 3, - theme.breakpoints.values, - ), - }), - ...(Array.isArray(sx) ? sx : [sx]), - ]} + - ({ - display: 'grid', - bgcolor: 'background.image', - ...breakpointVal( - 'borderRadius', - theme.shape.borderRadius * 2, - theme.shape.borderRadius * 3, - theme.breakpoints.values, - ), - overflow: 'hidden', - padding: responsiveVal(8, 12), - '& > picture': { - gridArea: `1 / 1 / 3 / 3`, - margin: `calc(${responsiveVal(8, 12)} * -1)`, - }, - })} - className={classes.imageContainer} - > - {small_image ? ( - - ) : ( - - - - )} + + {!imageOnly && ( - <> - - {discount > 0 && ( - - {formatter.format(discount / -100)} - - )} - {topLeft} - - - {topRight} - - - {bottomLeft} - - - {bottomRight} - - + + + {topLeft} + + } + /> )} - + {!imageOnly && ( <> - ({ - display: 'grid', - alignItems: 'baseline', - marginTop: theme.spacings.xs, - columnGap: 1, - gridTemplateAreas: { - xs: `"title title" "subtitle price"`, - md: `"title subtitle price"`, - }, - gridTemplateColumns: { xs: 'unset', md: 'auto auto 1fr' }, - justifyContent: 'space-between', - })} + - - {name} - - - {subTitle} - + + + {children} + + )} + + ) +} + +export function ProductListItemSkeleton(props: SkeletonProps) { + const { children, imageOnly = false, aspectRatio, titleComponent = 'h2', sx = [] } = props + + return ( + + + + - - + {!imageOnly && ( + <> + } + subTitle={} + > + + {children} )} - + + ) +} + +function isSkeleton(props: ProductListItemProps): props is SkeletonProps { + return props.__typename === 'Skeleton' +} +export function ProductListItem(props: ProductListItemProps) { + return isSkeleton(props) ? ( + + ) : ( + ) } ProductListItem.selectors = { ...selectors, ...ProductListPrice.selectors } + +/** @deprecated */ +export type OverlayAreaKeys = ProductListItemImageAreaKeys +/** @deprecated */ +export type OverlayAreas = ProductListsItemImageAreaProps diff --git a/packages/magento-product/components/ProductListItem/ProductListItemImage.tsx b/packages/magento-product/components/ProductListItem/ProductListItemImage.tsx new file mode 100644 index 0000000000..a5c705f741 --- /dev/null +++ b/packages/magento-product/components/ProductListItem/ProductListItemImage.tsx @@ -0,0 +1,96 @@ +import { Image, ImageProps } from '@graphcommerce/image' +import { Trans } from '@lingui/react' +import { Box, BoxProps, Skeleton, styled } from '@mui/material' + +const StyledImage = styled(Image)({}) + +function PlaceHolderContainer(props: BoxProps) { + return ( + + ) +} + +export type ProductListItemImageProps = { + aspectRatio?: [number, number] + classes: { + image?: string + placeholder?: string + } +} + +export function ProductListItemImageSkeleton(props: ProductListItemImageProps) { + const { aspectRatio = [4, 3], classes } = props + return ( + + + + ) +} + +type ImageOrPlaceholderProps = ProductListItemImageProps & + Omit & { + alt?: ImageProps['alt'] | null + src?: ImageProps['src'] | null + } + +export function ProductListItemImage(props: ImageOrPlaceholderProps) { + const { aspectRatio = [4, 3], classes, src, alt, sx = [], ...image } = props + + if (src) { + return ( + + ) + } + + return ( + + + + + + ) +} diff --git a/packages/magento-product/components/ProductListItem/ProductListItemImageContainer.tsx b/packages/magento-product/components/ProductListItem/ProductListItemImageContainer.tsx new file mode 100644 index 0000000000..066c1fec06 --- /dev/null +++ b/packages/magento-product/components/ProductListItem/ProductListItemImageContainer.tsx @@ -0,0 +1,97 @@ +import { responsiveVal, breakpointVal } from '@graphcommerce/next-ui' +import { Box, BoxProps } from '@mui/material' + +type ProductImageContainerProps = BoxProps + +export function ProductImageContainer(props: ProductImageContainerProps) { + const { sx = [] } = props + + return ( + ({ + display: 'grid', + bgcolor: 'background.image', + ...breakpointVal( + 'borderRadius', + theme.shape.borderRadius * 2, + theme.shape.borderRadius * 3, + theme.breakpoints.values, + ), + overflow: 'hidden', + padding: responsiveVal(8, 12), + '& > picture, & > .ProductListItem-placeholder': { + gridArea: `1 / 1 / 3 / 3`, + margin: `calc(${responsiveVal(8, 12)} * -1)`, + height: 'auto', + }, + }), + ...(Array.isArray(sx) ? sx : [sx]), + ]} + /> + ) +} + +export type ProductListItemImageAreaKeys = 'topLeft' | 'bottomLeft' | 'topRight' | 'bottomRight' +export type ProductListsItemImageAreaProps = Partial< + Record +> & { + classes: { + topLeft?: string + topRight?: string + bottomLeft?: string + bottomRight?: string + } +} + +export function ProductListItemImageAreas(props: ProductListsItemImageAreaProps) { + const { topLeft, topRight, bottomLeft, bottomRight, classes } = props + + return ( + <> + + {topLeft} + + + {topRight} + + + {bottomLeft} + + + {bottomRight} + + + ) +} diff --git a/packages/magento-product/components/ProductListItem/ProductListItemLinkOrDiv.tsx b/packages/magento-product/components/ProductListItem/ProductListItemLinkOrDiv.tsx new file mode 100644 index 0000000000..c778f8654d --- /dev/null +++ b/packages/magento-product/components/ProductListItem/ProductListItemLinkOrDiv.tsx @@ -0,0 +1,34 @@ +import { NextLink, breakpointVal } from '@graphcommerce/next-ui' +import { Box, BoxProps, ButtonBase, ButtonBaseProps, SxProps, Theme } from '@mui/material' + +type ProductListItemLinkProps = ButtonBaseProps +type ProductListItemLinkOrDivProps = ProductListItemLinkProps | BoxProps + +function isLink(props: ProductListItemLinkOrDivProps): props is ProductListItemLinkProps { + return 'href' in props +} + +export function ProductListItemLinkOrDiv(props: ProductListItemLinkOrDivProps) { + const { sx = [] } = props + + const sxProps: SxProps = [ + (theme) => ({ + display: 'block', + position: 'relative', + height: '100%', + ...breakpointVal( + 'borderRadius', + theme.shape.borderRadius * 2, + theme.shape.borderRadius * 3, + theme.breakpoints.values, + ), + }), + ...(Array.isArray(sx) ? sx : [sx]), + ] + + return isLink(props) ? ( + + ) : ( + + ) +} diff --git a/packages/magento-product/components/ProductListItem/ProductListItemTitleAndPrice.tsx b/packages/magento-product/components/ProductListItem/ProductListItemTitleAndPrice.tsx new file mode 100644 index 0000000000..89dd182d4b --- /dev/null +++ b/packages/magento-product/components/ProductListItem/ProductListItemTitleAndPrice.tsx @@ -0,0 +1,64 @@ +import { Box, Typography } from '@mui/material' +import { productListPrice } from '../ProductListPrice' + +export type ProductListItemTitleAndPriceProps = { + titleComponent?: React.ElementType + title: React.ReactNode + subTitle?: React.ReactNode + children: React.ReactNode + classes: { titleContainer: string; title: string; subtitle: string } +} + +export function ProductListItemTitleAndPrice(props: ProductListItemTitleAndPriceProps) { + const { titleComponent = 'h2', classes, children, subTitle, title } = props + + return ( + ({ + display: 'grid', + alignItems: 'baseline', + marginTop: theme.spacings.xs, + columnGap: 1, + gridTemplateAreas: { + xs: `"title title" "subtitle price"`, + md: `"title subtitle price"`, + }, + gridTemplateColumns: { xs: 'unset', md: 'auto auto 1fr' }, + justifyContent: 'space-between', + })} + > + + {title} + + + {subTitle && ( + + {subTitle} + + )} + + + {children} + + + ) +} diff --git a/packages/magento-product/components/ProductListItems/renderer.tsx b/packages/magento-product/components/ProductListItems/renderer.tsx index 4dcaef8eb1..51ed03942f 100644 --- a/packages/magento-product/components/ProductListItems/renderer.tsx +++ b/packages/magento-product/components/ProductListItems/renderer.tsx @@ -1,10 +1,13 @@ import { TypeRenderer } from '@graphcommerce/next-ui' import { ProductListItemFragment } from '../../Api/ProductListItem.gql' -import { ProductListItem } from '../ProductListItem/ProductListItem' +import { ProductListItem, ProductListItemSkeleton } from '../ProductListItem/ProductListItem' -export type ProductListItemRenderer = TypeRenderer +type SkeletonType = { __typename: 'Skeleton'; uid: string } +export type ProductListItemType = ProductListItemFragment | SkeletonType +export type ProductListItemRenderer = TypeRenderer export const renderer: ProductListItemRenderer = { + Skeleton: ProductListItemSkeleton, SimpleProduct: ProductListItem, ConfigurableProduct: ProductListItem, BundleProduct: ProductListItem, diff --git a/packages/magento-product/components/ProductListPrice/ProductListPrice.tsx b/packages/magento-product/components/ProductListPrice/ProductListPrice.tsx index 9504b0d787..4371e4f6f9 100644 --- a/packages/magento-product/components/ProductListPrice/ProductListPrice.tsx +++ b/packages/magento-product/components/ProductListPrice/ProductListPrice.tsx @@ -3,11 +3,13 @@ import { extendableComponent } from '@graphcommerce/next-ui' import { Typography, TypographyProps, Box } from '@mui/material' import { ProductListPriceFragment } from './ProductListPrice.gql' -const { classes, selectors } = extendableComponent('ProductListPrice', [ +export const productListPrice = extendableComponent('ProductListPrice', [ 'root', 'discountPrice', ] as const) +const { classes, selectors } = productListPrice + export type ProductListPriceProps = ProductListPriceFragment & Pick export function ProductListPrice(props: ProductListPriceProps) { diff --git a/packages/magento-product/components/ProductScroller/ProductScroller.tsx b/packages/magento-product/components/ProductScroller/ProductScroller.tsx new file mode 100644 index 0000000000..ac71148684 --- /dev/null +++ b/packages/magento-product/components/ProductScroller/ProductScroller.tsx @@ -0,0 +1,82 @@ +import { ItemScroller, ItemScrollerProps, RenderType, responsiveVal } from '@graphcommerce/next-ui' +import { + Box, + Container, + ContainerProps, + SxProps, + Theme, + Typography, + TypographyProps, + useTheme, +} from '@mui/material' +import React, { forwardRef, useContext } from 'react' +import { + AddProductsToCartContext, + AddProductsToCartForm, + AddProductsToCartFormProps, +} from '../AddProductsToCart' +import { ProductListItemProps } from '../ProductListItem/ProductListItem' +import { ProductListItemRenderer, ProductListItemType } from '../ProductListItems/renderer' + +export type ProductScrollerProps = { + title?: React.ReactNode + items: ProductListItemType[] + productListRenderer: ProductListItemRenderer + imageOnly?: ProductListItemProps['imageOnly'] + sx?: SxProps + containerProps?: ContainerProps + titleProps?: TypographyProps + addProductsToCartFormProps?: AddProductsToCartFormProps + itemScrollerProps?: ItemScrollerProps +} +export const ProductScroller = forwardRef( + (props: ProductScrollerProps, ref) => { + const { + title = '', + items, + productListRenderer, + imageOnly = false, + sx = [], + containerProps, + titleProps, + itemScrollerProps, + addProductsToCartFormProps, + } = props + + const theme = useTheme() + + const Wrapper = useContext(AddProductsToCartContext) ? React.Fragment : AddProductsToCartForm + + if (!items) return null + + return ( + + + {title && ( + + {title} + + )} + + {!!items.length && ( + + + {items.map((item) => ( + + ))} + + + )} + + ) + }, +) diff --git a/packages/magento-product/components/index.ts b/packages/magento-product/components/index.ts index b52c8fc361..2f6832f2a7 100644 --- a/packages/magento-product/components/index.ts +++ b/packages/magento-product/components/index.ts @@ -28,6 +28,7 @@ export * from './ProductPageMeta/ProductPageMeta' export * from './ProductPageMeta/ProductPageMeta.gql' export * from './ProductPagePrice' export * from './ProductRelated/RelatedProducts.gql' +export * from './ProductScroller/ProductScroller' export * from './ProductShortDescription/ProductShortDescription' export * from './ProductShortDescription/ProductShortDescription.gql' export * from './ProductSidebarDelivery/ProductSidebarDelivery' diff --git a/packages/magento-recently-viewed-products/Config.graphqls b/packages/magento-recently-viewed-products/Config.graphqls new file mode 100644 index 0000000000..7c5a995bc8 --- /dev/null +++ b/packages/magento-recently-viewed-products/Config.graphqls @@ -0,0 +1,20 @@ +""" +Settings for recently viewed products +""" +input RecentlyViewedProductsConfig { + """ + Enable/disable recently viewed products + """ + enabled: Boolean + """ + Number of recently viewed products to be stored in localStorage + """ + maxCount: Int +} + +extend input GraphCommerceConfig { + """ + Settings for recently viewed products + """ + recentlyViewedProducts: RecentlyViewedProductsConfig +} diff --git a/packages/magento-recently-viewed-products/README.md b/packages/magento-recently-viewed-products/README.md new file mode 100644 index 0000000000..07e06c0a0a --- /dev/null +++ b/packages/magento-recently-viewed-products/README.md @@ -0,0 +1,10 @@ +# @graphcommerce/magento-recently-viewed-products + +When visiting a product page, the product SKU is added to a list of recently +viewed products, stored in the users localStorage. + +## Configuration + +When `configurableVariantForSimple` is enabled in `graphcommerce.config.js`, +fully configured configurable products will be shown as the selected variant in +recently viewed products. diff --git a/packages/magento-recently-viewed-products/components/RecentlyViewedProducts.tsx b/packages/magento-recently-viewed-products/components/RecentlyViewedProducts.tsx new file mode 100644 index 0000000000..4141c88b82 --- /dev/null +++ b/packages/magento-recently-viewed-products/components/RecentlyViewedProducts.tsx @@ -0,0 +1,43 @@ +import { ProductListItemRenderer, ProductScroller } from '@graphcommerce/magento-product' +import { useInView } from 'framer-motion' +import { useRef } from 'react' +import { + UseRecentlyViewedProductsProps, + useRecentlyViewedProducts, + useRecentlyViewedSkus, +} from '../hooks' + +export type RecentlyViewedProductsProps = UseRecentlyViewedProductsProps & { + title?: React.ReactNode + productListRenderer: ProductListItemRenderer + loading?: 'lazy' | 'eager' +} +export function RecentlyViewedProducts(props: RecentlyViewedProductsProps) { + const { exclude, title, productListRenderer, loading = 'lazy' } = props + + const ref = useRef(null) + const isInView = useInView(ref, { margin: '300px', once: true }) + const { skus } = useRecentlyViewedSkus({ exclude }) + const productList = useRecentlyViewedProducts({ exclude, skip: !isInView && loading === 'lazy' }) + + if ( + !import.meta.graphCommerce.recentlyViewedProducts?.enabled || + (!productList.loading && !skus.length) + ) { + return null + } + + const loadingProducts = [...Array(skus.length - productList.products.length).keys()].map((i) => ({ + __typename: 'Skeleton' as const, + uid: i.toString(), + })) + + return ( + + ) +} diff --git a/packages/magento-recently-viewed-products/graphql/RecentlyViewedProducts.graphql b/packages/magento-recently-viewed-products/graphql/RecentlyViewedProducts.graphql new file mode 100644 index 0000000000..de87ed321d --- /dev/null +++ b/packages/magento-recently-viewed-products/graphql/RecentlyViewedProducts.graphql @@ -0,0 +1,10 @@ +query RecentlyViewedProducts { + recentlyViewedProducts @client { + __typename + items { + __typename + sku + parentSku + } + } +} diff --git a/packages/magento-recently-viewed-products/graphql/RecentlyViewedProducts.graphqls b/packages/magento-recently-viewed-products/graphql/RecentlyViewedProducts.graphqls new file mode 100644 index 0000000000..2c07f8aece --- /dev/null +++ b/packages/magento-recently-viewed-products/graphql/RecentlyViewedProducts.graphqls @@ -0,0 +1,12 @@ +extend type Query { + recentlyViewedProducts: RecentlyViewedProducts +} + +type RecentlyViewedProducts { + items: [RecentlyViewedProduct!]! +} + +type RecentlyViewedProduct { + sku: String! + parentSku: String +} diff --git a/packages/magento-recently-viewed-products/hooks/index.ts b/packages/magento-recently-viewed-products/hooks/index.ts new file mode 100644 index 0000000000..af145c0ca7 --- /dev/null +++ b/packages/magento-recently-viewed-products/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './useRecentlyViewedProducts' +export * from './useRecentlyViewedSkus' diff --git a/packages/magento-recently-viewed-products/hooks/useRecentlyViewedProducts.tsx b/packages/magento-recently-viewed-products/hooks/useRecentlyViewedProducts.tsx new file mode 100644 index 0000000000..e21e91d592 --- /dev/null +++ b/packages/magento-recently-viewed-products/hooks/useRecentlyViewedProducts.tsx @@ -0,0 +1,44 @@ +import { useQuery } from '@graphcommerce/graphql' +import { ProductListDocument } from '@graphcommerce/magento-product' +import { nonNullable } from '@graphcommerce/next-ui' +import { useRecentlyViewedSkus, UseRecentlyViewedSkusProps } from './useRecentlyViewedSkus' + +export type UseRecentlyViewedProductsProps = UseRecentlyViewedSkusProps & { skip?: boolean } +export function useRecentlyViewedProducts(props: UseRecentlyViewedProductsProps) { + const { exclude, skip = false } = props + let { skus, loading } = useRecentlyViewedSkus() + + const productList = useQuery(ProductListDocument, { + variables: { + filters: { + sku: { + in: skus.map((p) => p.sku).sort(), + }, + }, + }, + skip: loading || !skus.length || skip, + }) + + const productData = + productList.data?.products?.items || productList.previousData?.products?.items || [] + + if (exclude) { + skus = skus.filter( + (item) => + item?.sku && + !exclude.includes(item.sku) && + item?.parentSku && + !exclude.includes(item.parentSku), + ) + } + + // Sort products based on the time they were viewed. Last viewed item should be the first item in the array + const products = skus + .map((sku) => productData.find((p) => (p?.sku || '') === sku.sku)) + .filter(nonNullable) + + return { + products, + loading: loading || productList.loading, + } +} diff --git a/packages/magento-recently-viewed-products/hooks/useRecentlyViewedSkus.tsx b/packages/magento-recently-viewed-products/hooks/useRecentlyViewedSkus.tsx new file mode 100644 index 0000000000..77efa5989b --- /dev/null +++ b/packages/magento-recently-viewed-products/hooks/useRecentlyViewedSkus.tsx @@ -0,0 +1,24 @@ +import { useQuery } from '@graphcommerce/graphql' +import { RecentlyViewedProductsDocument } from '../graphql/RecentlyViewedProducts.gql' + +export type UseRecentlyViewedSkusProps = { exclude?: string[] } + +export function useRecentlyViewedSkus(props: UseRecentlyViewedSkusProps = {}) { + const { exclude } = props + const { data, loading, previousData } = useQuery(RecentlyViewedProductsDocument, { + skip: !import.meta.graphCommerce.recentlyViewedProducts?.enabled, + }) + let skus = (loading ? previousData : data)?.recentlyViewedProducts?.items || [] + + // Filter out excluded products (current product page) + if (exclude) + skus = skus.filter( + (item) => + item?.sku && + !exclude.includes(item.sku) && + item?.parentSku && + !exclude.includes(item.parentSku), + ) + + return { skus, loading } +} diff --git a/packages/magento-recently-viewed-products/index.ts b/packages/magento-recently-viewed-products/index.ts new file mode 100644 index 0000000000..c8fd0c7e6e --- /dev/null +++ b/packages/magento-recently-viewed-products/index.ts @@ -0,0 +1,3 @@ +export * from './components/RecentlyViewedProducts' +export * from './hooks' +export * from './graphql/RecentlyViewedProducts.gql' diff --git a/packages/magento-recently-viewed-products/package.json b/packages/magento-recently-viewed-products/package.json new file mode 100644 index 0000000000..27d294911e --- /dev/null +++ b/packages/magento-recently-viewed-products/package.json @@ -0,0 +1,36 @@ +{ + "name": "@graphcommerce/magento-recently-viewed-products", + "homepage": "https://www.graphcommerce.org/", + "repository": "github:graphcommerce-org/graphcommerce", + "version": "7.1.0-canary.39", + "sideEffects": false, + "prettier": "@graphcommerce/prettier-config-pwa", + "eslintConfig": { + "extends": "@graphcommerce/eslint-config-pwa", + "parserOptions": { + "project": "./tsconfig.json" + } + }, + "dependencies": { + "@graphcommerce/graphql": "7.1.0-canary.39", + "@graphcommerce/graphql-mesh": "7.1.0-canary.39", + "@graphcommerce/magento-cart": "7.1.0-canary.39", + "@graphcommerce/magento-product": "7.1.0-canary.39", + "@graphcommerce/magento-product-configurable": "7.1.0-canary.39", + "@graphcommerce/next-config": "7.1.0-canary.39", + "@graphcommerce/next-ui": "7.1.0-canary.39" + }, + "devDependencies": { + "@graphcommerce/eslint-config-pwa": "7.1.0-canary.39", + "@graphcommerce/next-config": "^7.1.0-canary.39", + "@graphcommerce/prettier-config-pwa": "7.1.0-canary.39", + "@graphcommerce/typescript-config-pwa": "7.1.0-canary.39" + }, + "peerDependencies": { + "@mui/material": "^5.10.16", + "framer-motion": "^10.0.0", + "next": "*", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/packages/magento-recently-viewed-products/plugins/RegisterProductAsRecentlyViewed.tsx b/packages/magento-recently-viewed-products/plugins/RegisterProductAsRecentlyViewed.tsx new file mode 100644 index 0000000000..7d0b5912fd --- /dev/null +++ b/packages/magento-recently-viewed-products/plugins/RegisterProductAsRecentlyViewed.tsx @@ -0,0 +1,85 @@ +import { useApolloClient } from '@graphcommerce/graphql' +import { + type AddToCartItemSelector, + type ProductPageMeta, + ProductPageMetaFragment, +} from '@graphcommerce/magento-product' +import { useConfigurableSelectedVariant } from '@graphcommerce/magento-product-configurable/hooks' +import type { IfConfig, ReactPlugin } from '@graphcommerce/next-config' +import { useEventCallback } from '@mui/material' +import { useRouter } from 'next/router' +import { useEffect } from 'react' +import { RecentlyViewedProductsDocument } from '../graphql/RecentlyViewedProducts.gql' + +export const component = 'ProductPageMeta' +export const exported = '@graphcommerce/magento-product/components/ProductPageMeta/ProductPageMeta' +export const ifConfig: IfConfig = 'recentlyViewedProducts.enabled' + +type PluginType = ReactPlugin + +function ViewHandling(props: { product: ProductPageMetaFragment }) { + const { product } = props + const client = useApolloClient() + const variant = useConfigurableSelectedVariant({ url_key: product?.url_key, index: 0 }) + const { events } = useRouter() + + const registerView = useEventCallback(async () => { + const recentlyViewed = await client.query({ query: RecentlyViewedProductsDocument }) + const skus = recentlyViewed.data.recentlyViewedProducts?.items ?? [] + + const isValidVariant = + (variant?.url_rewrites ?? []).length > 0 && + variant?.url_key && + import.meta.graphCommerce.configurableVariantForSimple + + const parentSku = product.sku || '' + const sku = (isValidVariant ? variant.sku : product.sku) || '' + + const parentSkuAlreadySet = skus.some( + (p) => p.sku === product.sku || p.parentSku === product.sku, + ) + const skuAlreadySet = skus.some((p) => p.sku === sku) + const skuIsLastItem = skus.length === 0 || skus[skus.length - 1].sku === sku + + if (skuAlreadySet && skuIsLastItem) return + + // If SKU already exists in recently viewed products, remove it, so we can re-add it as the first item of the array + const viewedSkus = [ + ...(skuIsLastItem || parentSkuAlreadySet + ? skus.filter((p) => p.sku !== parentSku && p.parentSku !== parentSku) + : skus), + ] + + // Limit array + const items = [ + { __typename: 'RecentlyViewedProduct' as const, parentSku, sku }, + ...viewedSkus, + ].splice(0, import.meta.graphCommerce.recentlyViewedProducts?.maxCount || 10) + + client.writeQuery({ + query: RecentlyViewedProductsDocument, + broadcast: true, + data: { recentlyViewedProducts: { __typename: 'RecentlyViewedProducts', items } }, + }) + }) + + useEffect(() => { + events.on('routeChangeStart', registerView) + return () => events.off('routeChangeStart', registerView) + }, [events, registerView]) + + return null +} + +const RegisterProductAsRecentlyViewed: PluginType = (props) => { + const { Prev, product } = props + + return ( + <> + + + + ) +} + +export const Plugin = RegisterProductAsRecentlyViewed diff --git a/packages/next-ui/FramerScroller/ItemScroller.tsx b/packages/next-ui/FramerScroller/ItemScroller.tsx index d0ad9c91cf..ce46fe7dff 100644 --- a/packages/next-ui/FramerScroller/ItemScroller.tsx +++ b/packages/next-ui/FramerScroller/ItemScroller.tsx @@ -10,7 +10,7 @@ import { extendableComponent, responsiveVal } from '../Styles' import { useFabSize } from '../Theme' import { iconChevronLeft, iconChevronRight } from '../icons' -const { classes } = extendableComponent('SidebarSlider', [ +const { classes } = extendableComponent('ItemScroller', [ 'root', 'grid', 'sidebar', @@ -21,13 +21,13 @@ const { classes } = extendableComponent('SidebarSlider', [ 'centerRight', ] as const) -type SliderProps = { +export type ItemScrollerProps = { children: React.ReactNode sx?: SxProps buttonSize?: ScrollerButtonProps['size'] } & Pick -export function ItemScroller(props: SliderProps) { +export function ItemScroller(props: ItemScrollerProps) { const { children, sx, buttonSize = 'responsive', showButtons } = props const size = useFabSize(buttonSize) diff --git a/packages/next-ui/TextInputNumber/TextInputNumber.tsx b/packages/next-ui/TextInputNumber/TextInputNumber.tsx index 0193c2b853..85089b463f 100644 --- a/packages/next-ui/TextInputNumber/TextInputNumber.tsx +++ b/packages/next-ui/TextInputNumber/TextInputNumber.tsx @@ -103,7 +103,7 @@ export function TextInputNumber(props: TextInputNumberProps) { }, { '& input[type=number]': { - '-moz-appearance': 'textfield', + MozAppearance: 'textfield', }, '& .MuiOutlinedInput-root': { px: '3px', diff --git a/packagesDev/graphql-codegen-markdown-docs/dist/index.js b/packagesDev/graphql-codegen-markdown-docs/dist/index.js index c07e9306e7..7c0ff3cd5d 100644 --- a/packagesDev/graphql-codegen-markdown-docs/dist/index.js +++ b/packagesDev/graphql-codegen-markdown-docs/dist/index.js @@ -17,8 +17,14 @@ config) => { } return node.description ? `\n\n${node.description}` : ''; }; - const possibleScalars = ['Boolean', 'String', 'Int', 'Float', 'ID']; - const content = (0, graphql_1.visit)(astNode, { + const possibleScalars = { + Boolean: 'boolean', + String: 'string', + Int: 'number', + Float: 'number', + ID: 'string', + }; + let content = (0, graphql_1.visit)(astNode, { Document: { leave: (node) => `${node.definitions .filter(Boolean) @@ -26,46 +32,62 @@ config) => { }, Name: { leave: (node) => node.value }, NamedType: { - leave: (node) => possibleScalars.includes(node.name) ? node.name : `[${node.name}](#${node.name})`, + leave: (node) => possibleScalars[node.name] ?? `[${node.name}](#${node.name})`, }, StringValue: { leave: (node) => node.value }, - BooleanValue: { leave: (node) => node.value }, - EnumValue: { leave: (node) => node.value }, + BooleanValue: { + leave: (node) => (node.value ? 'true' : 'false'), + }, + EnumValue: { leave: (node) => `'${node.value}'` }, IntValue: { leave: (node) => node.value }, + ObjectValue: { + leave: (node) => { + const fields = node.fields.join(', ') ?? ''; + return `{ ${fields} }`; + }, + }, FloatValue: { leave: (node) => node.value }, - ListType: { leave: (node) => `[${node.type}]` }, + ListType: { + leave: (node) => `${node.type.replace(' (required)', '')}[]`, + }, + ObjectField: { leave: (node) => `${node.name}: ${node.value}` }, NonNullType: { - leave: (node) => `${node.type}!`, + leave: (node) => `${node.type} (required)`, }, InputValueDefinition: { leave: (node) => { - const defaultValue = node.defaultValue ? ` (default: ${node.defaultValue})` : ''; - return `\`${node.name}: ${node.type}${defaultValue}\`${descriptionText(node)}`; + const defaultValue = node.defaultValue ? ` = ${node.defaultValue}` : ''; + return `${node.name}: ${node.type}${defaultValue}${descriptionText(node)}`; }, }, InputObjectTypeDefinition: { enter: (node) => ({ ...node, // Move required fields to the top. - fields: [...(node.fields ?? [])].sort((a, b) => a.type.kind === 'NonNullType' && b.type.kind !== 'NonNullType' ? -1 : 1), + fields: [...(node.fields ?? [])].sort((a, b) => + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison + a.type.kind === 'NonNullType' && b.type.kind !== 'NonNullType' ? -1 : 1), }), leave: (node) => { - const title = descriptionText(node).trimStart().startsWith('#') - ? `${descriptionText(node).trimStart()}\n\n### ${node.name}` - : `### ${node.name}${descriptionText(node)}`; + const text = descriptionText(node); + const title = text.trimStart().startsWith('#') + ? `${text.trimStart()}\n\n### ${node.name}` + : `### ${node.name}${text}`; return `\n${title}\n${node.fields?.map((f) => `\n#### ${f}`).join('\n')}`; }, }, - EnumValueDefinition: { - leave: (node) => `${node.name} # ${node.description}`, - }, + EnumValueDefinition: { leave: (node) => node.name }, EnumTypeDefinition: { leave: (node) => { - enumStings.set(node.name, node.values?.join('\n') || ''); + if (node.values) + enumStings.set(node.name, node.values.map((v) => `'${v.trim()}'`).join(' | ')); return ''; }, }, }); + enumStings.forEach((value, key) => { + content = content.replaceAll(`[${key}](#${key})`, value); + }); return { content }; }; exports.plugin = plugin; diff --git a/packagesDev/graphql-codegen-markdown-docs/src/index.ts b/packagesDev/graphql-codegen-markdown-docs/src/index.ts index 148ced1ff4..c72606dc03 100644 --- a/packagesDev/graphql-codegen-markdown-docs/src/index.ts +++ b/packagesDev/graphql-codegen-markdown-docs/src/index.ts @@ -25,9 +25,15 @@ export const plugin: PluginFunction = { + Boolean: 'boolean', + String: 'string', + Int: 'number', + Float: 'number', + ID: 'string', + } - const content = visit(astNode, { + let content = visit(astNode, { Document: { leave: (node) => `${node.definitions @@ -36,22 +42,32 @@ export const plugin: PluginFunction node.value }, NamedType: { - leave: (node) => - possibleScalars.includes(node.name) ? node.name : `[${node.name}](#${node.name})`, + leave: (node) => possibleScalars[node.name] ?? `[${node.name}](#${node.name})`, }, // String, Boolean, GraphCommerceDebugConfig, etc. StringValue: { leave: (node) => node.value }, - BooleanValue: { leave: (node) => node.value }, - EnumValue: { leave: (node) => node.value }, + BooleanValue: { + leave: (node) => (node.value ? 'true' : 'false'), + }, + EnumValue: { leave: (node) => `'${node.value}'` }, IntValue: { leave: (node) => node.value }, + ObjectValue: { + leave: (node) => { + const fields = node.fields.join(', ') ?? '' + return `{ ${fields} }` + }, + }, FloatValue: { leave: (node) => node.value }, - ListType: { leave: (node) => `[${node.type}]` }, + ListType: { + leave: (node) => `${node.type.replace(' (required)', '')}[]`, + }, + ObjectField: { leave: (node) => `${node.name}: ${node.value}` }, NonNullType: { - leave: (node) => `${node.type}!`, + leave: (node) => `${node.type} (required)`, }, InputValueDefinition: { leave: (node) => { - const defaultValue = node.defaultValue ? ` (default: ${node.defaultValue})` : '' - return `\`${node.name}: ${node.type}${defaultValue}\`${descriptionText(node)}` + const defaultValue = node.defaultValue ? ` = ${node.defaultValue}` : '' + return `${node.name}: ${node.type}${defaultValue}${descriptionText(node)}` }, }, InputObjectTypeDefinition: { @@ -59,27 +75,32 @@ export const plugin: PluginFunction + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison a.type.kind === 'NonNullType' && b.type.kind !== 'NonNullType' ? -1 : 1, ), }), leave: (node) => { - const title = descriptionText(node).trimStart().startsWith('#') - ? `${descriptionText(node).trimStart()}\n\n### ${node.name}` - : `### ${node.name}${descriptionText(node)}` + const text = descriptionText(node) + const title = text.trimStart().startsWith('#') + ? `${text.trimStart()}\n\n### ${node.name}` + : `### ${node.name}${text}` return `\n${title}\n${node.fields?.map((f) => `\n#### ${f}`).join('\n')}` }, }, - EnumValueDefinition: { - leave: (node) => `${node.name} # ${node.description}`, - }, + EnumValueDefinition: { leave: (node) => node.name }, EnumTypeDefinition: { leave: (node) => { - enumStings.set(node.name, node.values?.join('\n') || '') + if (node.values) + enumStings.set(node.name, node.values.map((v) => `'${v.trim()}'`).join(' | ')) return '' }, }, }) + enumStings.forEach((value, key) => { + content = content.replaceAll(`[${key}](#${key})`, value) + }) + return { content } } diff --git a/packagesDev/next-config/dist/config/demoConfig.js b/packagesDev/next-config/dist/config/demoConfig.js index ab1d68f640..8c92c41ff4 100644 --- a/packagesDev/next-config/dist/config/demoConfig.js +++ b/packagesDev/next-config/dist/config/demoConfig.js @@ -28,4 +28,5 @@ exports.demoConfig = { sidebarGallery: { paginationVariant: 'DOTS' }, configurableVariantForSimple: true, configurableVariantValues: { url: true, content: true, gallery: true }, + recentlyViewedProducts: { enabled: true, maxCount: 20 }, }; diff --git a/packagesDev/next-config/dist/generated/config.js b/packagesDev/next-config/dist/generated/config.js index c8c32865a1..0224897235 100644 --- a/packagesDev/next-config/dist/generated/config.js +++ b/packagesDev/next-config/dist/generated/config.js @@ -27,6 +27,9 @@ _export(exports, { ProductFiltersLayoutSchema: function() { return ProductFiltersLayoutSchema; }, + RecentlyViewedProductsConfigSchema: function() { + return RecentlyViewedProductsConfigSchema; + }, SidebarGalleryConfigSchema: function() { return SidebarGalleryConfigSchema; }, @@ -82,6 +85,7 @@ function GraphCommerceConfigSchema() { productFiltersLayout: ProductFiltersLayoutSchema.nullish(), productFiltersPro: _zod.z.boolean().nullish(), productRoute: _zod.z.string().nullish(), + recentlyViewedProducts: RecentlyViewedProductsConfigSchema().nullish(), robotsAllow: _zod.z.boolean().nullish(), sidebarGallery: SidebarGalleryConfigSchema().nullish(), storefront: _zod.z.array(GraphCommerceStorefrontConfigSchema()), @@ -118,6 +122,12 @@ function MagentoConfigurableVariantValuesSchema() { url: _zod.z.boolean().nullish() }); } +function RecentlyViewedProductsConfigSchema() { + return _zod.z.object({ + enabled: _zod.z.boolean().nullish(), + maxCount: _zod.z.number().nullish() + }); +} function SidebarGalleryConfigSchema() { return _zod.z.object({ paginationVariant: SidebarGalleryPaginationVariantSchema.nullish() diff --git a/packagesDev/next-config/src/config/demoConfig.ts b/packagesDev/next-config/src/config/demoConfig.ts index 5fdda3e357..055c68d20a 100644 --- a/packagesDev/next-config/src/config/demoConfig.ts +++ b/packagesDev/next-config/src/config/demoConfig.ts @@ -24,10 +24,13 @@ export const demoConfig: PartialDeep; + /** Settings for recently viewed products */ + recentlyViewedProducts?: InputMaybe; /** * Allow the site to be indexed by search engines. * If false, the robots.txt file will be set to disallow all. @@ -384,6 +386,14 @@ export type ProductFiltersLayout = | 'DEFAULT' | 'SIDEBAR'; +/** Settings for recently viewed products */ +export type RecentlyViewedProductsConfig = { + /** Enable/disable recently viewed products */ + enabled?: InputMaybe; + /** Number of recently viewed products to be stored in localStorage */ + maxCount?: InputMaybe; +}; + /** SidebarGalleryConfig will contain all configuration values for the Sidebar Gallery component. */ export type SidebarGalleryConfig = { /** Variant used for the pagination */ @@ -439,6 +449,7 @@ export function GraphCommerceConfigSchema(): z.ZodObject> { + return z.object({ + enabled: z.boolean().nullish(), + maxCount: z.number().nullish() + }) +} + export function SidebarGalleryConfigSchema(): z.ZodObject> { return z.object({ paginationVariant: SidebarGalleryPaginationVariantSchema.nullish() diff --git a/yarn.lock b/yarn.lock index 84c6a731b2..ebbb1b82f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2519,14 +2519,14 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/address-fields-nl@workspace:packages/address-fields-nl" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -2544,17 +2544,17 @@ __metadata: algoliasearch: "npm:^4.20.0" react-instantsearch-hooks-web: "npm:^6.47.3" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-search": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-config": ^* - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-search": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-config": ^7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -2579,7 +2579,7 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/cli@npm:7.1.0-canary.38, @graphcommerce/cli@workspace:packages/cli": +"@graphcommerce/cli@npm:7.1.0-canary.39, @graphcommerce/cli@workspace:packages/cli": version: 0.0.0-use.local resolution: "@graphcommerce/cli@workspace:packages/cli" dependencies: @@ -2598,11 +2598,11 @@ __metadata: rimraf: "npm:^5.0.5" tslib: "npm:^2.6.2" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/hygraph-cli": "*" - "@graphcommerce/next-config": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/hygraph-cli": 7.1.0-canary.39 + "@graphcommerce/next-config": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 graphql: ^16.7.1 react: ^18.2.0 typescript: 5.2.2 @@ -2618,18 +2618,20 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/demo-magento-graphcommerce@npm:7.1.0-canary.38, @graphcommerce/demo-magento-graphcommerce@workspace:packages/demo-magento-graphcommerce": +"@graphcommerce/demo-magento-graphcommerce@npm:7.1.0-canary.39, @graphcommerce/demo-magento-graphcommerce@workspace:packages/demo-magento-graphcommerce": version: 0.0.0-use.local resolution: "@graphcommerce/demo-magento-graphcommerce@workspace:packages/demo-magento-graphcommerce" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-scroller": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-configurable": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-scroller": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-configurable": 7.1.0-canary.39 + "@graphcommerce/magento-recently-viewed-products": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@mui/material": ^5.10.16 + framer-motion: ^10.0.0 next: "*" react: ^18.2.0 react-dom: ^18.2.0 @@ -2640,20 +2642,20 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/docs@workspace:docs" peerDependencies: - "@graphcommerce/prettier-config-pwa": "*" + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 languageName: unknown linkType: soft -"@graphcommerce/ecommerce-ui@npm:7.1.0-canary.38, @graphcommerce/ecommerce-ui@workspace:packages/ecommerce-ui": +"@graphcommerce/ecommerce-ui@npm:7.1.0-canary.39, @graphcommerce/ecommerce-ui@workspace:packages/ecommerce-ui": version: 0.0.0-use.local resolution: "@graphcommerce/ecommerce-ui@workspace:packages/ecommerce-ui" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -2665,11 +2667,11 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/eslint-config-pwa@npm:7.1.0-canary.38, @graphcommerce/eslint-config-pwa@workspace:packagesDev/eslint-config": +"@graphcommerce/eslint-config-pwa@npm:7.1.0-canary.39, @graphcommerce/eslint-config-pwa@workspace:packagesDev/eslint-config": version: 0.0.0-use.local resolution: "@graphcommerce/eslint-config-pwa@workspace:packagesDev/eslint-config" dependencies: - "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.38" + "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.39" "@next/eslint-plugin-next": "npm:14.0.2" "@typescript-eslint/eslint-plugin": "npm:^6.10.0" "@typescript-eslint/parser": "npm:^6.10.0" @@ -2689,9 +2691,9 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/framer-next-pages-example@workspace:packages/framer-next-pages/example" dependencies: - "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.38" - "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.38" - "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.38" + "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.39" "@lingui/cli": "npm:4.5.0" "@lingui/core": "npm:4.5.0" "@lingui/macro": "npm:4.5.0" @@ -2725,14 +2727,14 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/framer-next-pages@npm:7.1.0-canary.38, @graphcommerce/framer-next-pages@workspace:packages/framer-next-pages": +"@graphcommerce/framer-next-pages@npm:7.1.0-canary.39, @graphcommerce/framer-next-pages@workspace:packages/framer-next-pages": version: 0.0.0-use.local resolution: "@graphcommerce/framer-next-pages@workspace:packages/framer-next-pages" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-utils": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-utils": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 framer-motion: ^10.0.0 next: "*" react: ^18.2.0 @@ -2744,9 +2746,9 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/framer-scroller-example@workspace:packages/framer-scroller/example" dependencies: - "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.38" - "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.38" - "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.38" + "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.39" "@lingui/cli": "npm:4.5.0" "@lingui/core": "npm:4.5.0" "@lingui/macro": "npm:4.5.0" @@ -2780,17 +2782,17 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/framer-scroller@npm:7.1.0-canary.38, @graphcommerce/framer-scroller@workspace:packages/framer-scroller": +"@graphcommerce/framer-scroller@npm:7.1.0-canary.39, @graphcommerce/framer-scroller@workspace:packages/framer-scroller": version: 0.0.0-use.local resolution: "@graphcommerce/framer-scroller@workspace:packages/framer-scroller" dependencies: popmotion: "npm:11.0.5" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-utils": "*" - "@graphcommerce/image": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-utils": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/react": ^4.2.1 "@mui/material": ^5.10.16 @@ -2801,37 +2803,37 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/framer-utils@npm:7.1.0-canary.38, @graphcommerce/framer-utils@workspace:packages/framer-utils": +"@graphcommerce/framer-utils@npm:7.1.0-canary.39, @graphcommerce/framer-utils@workspace:packages/framer-utils": version: 0.0.0-use.local resolution: "@graphcommerce/framer-utils@workspace:packages/framer-utils" dependencies: framesync: "npm:^6.1.2" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 framer-motion: ^10.0.0 react: ^18.2.0 react-dom: ^18.2.0 languageName: unknown linkType: soft -"@graphcommerce/googleanalytics@npm:7.1.0-canary.38, @graphcommerce/googleanalytics@workspace:packages/googleanalytics": +"@graphcommerce/googleanalytics@npm:7.1.0-canary.39, @graphcommerce/googleanalytics@workspace:packages/googleanalytics": version: 0.0.0-use.local resolution: "@graphcommerce/googleanalytics@workspace:packages/googleanalytics" dependencies: "@types/gtag.js": "npm:^0.0.18" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-payment-method": "*" - "@graphcommerce/magento-cart-shipping-method": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/next-config": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-payment-method": 7.1.0-canary.39 + "@graphcommerce/magento-cart-shipping-method": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/next-config": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@mui/material": ^5.10.16 next: "*" react: ^18.2.0 @@ -2839,17 +2841,17 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/googlerecaptcha@npm:7.1.0-canary.38, @graphcommerce/googlerecaptcha@workspace:packages/googlerecaptcha": +"@graphcommerce/googlerecaptcha@npm:7.1.0-canary.39, @graphcommerce/googlerecaptcha@workspace:packages/googlerecaptcha": version: 0.0.0-use.local resolution: "@graphcommerce/googlerecaptcha@workspace:packages/googlerecaptcha" dependencies: "@types/grecaptcha": "npm:^3.0.7" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@mui/material": ^5.10.16 next: "*" react: ^18.2.0 @@ -2857,33 +2859,33 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/googletagmanager@npm:7.1.0-canary.38, @graphcommerce/googletagmanager@workspace:packages/googletagmanager": +"@graphcommerce/googletagmanager@npm:7.1.0-canary.39, @graphcommerce/googletagmanager@workspace:packages/googletagmanager": version: 0.0.0-use.local resolution: "@graphcommerce/googletagmanager@workspace:packages/googletagmanager" dependencies: "@types/gapi.client.tagmanager": "npm:^2.0.4" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 next: "*" react: ^18.2.0 react-dom: ^18.2.0 languageName: unknown linkType: soft -"@graphcommerce/graphcms-ui@npm:7.1.0-canary.38, @graphcommerce/graphcms-ui@workspace:packages/hygraph-ui": +"@graphcommerce/graphcms-ui@npm:7.1.0-canary.39, @graphcommerce/graphcms-ui@workspace:packages/hygraph-ui": version: 0.0.0-use.local resolution: "@graphcommerce/graphcms-ui@workspace:packages/hygraph-ui" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@mui/material": ^5.10.16 next: "*" react: ^18.2.0 @@ -2902,14 +2904,14 @@ __metadata: "@types/parse-filepath": "npm:^1.0.2" parse-filepath: "npm:^1.0.2" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 graphql: ^16.7.1 languageName: unknown linkType: soft -"@graphcommerce/graphql-codegen-near-operation-file@npm:7.1.0-canary.38, @graphcommerce/graphql-codegen-near-operation-file@workspace:packagesDev/graphql-codegen-near-operation-file": +"@graphcommerce/graphql-codegen-near-operation-file@npm:7.1.0-canary.39, @graphcommerce/graphql-codegen-near-operation-file@workspace:packagesDev/graphql-codegen-near-operation-file": version: 0.0.0-use.local resolution: "@graphcommerce/graphql-codegen-near-operation-file@workspace:packagesDev/graphql-codegen-near-operation-file" dependencies: @@ -2920,14 +2922,14 @@ __metadata: "@types/parse-filepath": "npm:^1.0.2" parse-filepath: "npm:^1.0.2" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 graphql: ^16.7.1 languageName: unknown linkType: soft -"@graphcommerce/graphql-codegen-relay-optimizer-plugin@npm:7.1.0-canary.38, @graphcommerce/graphql-codegen-relay-optimizer-plugin@workspace:packagesDev/graphql-codegen-relay-optimizer-plugin": +"@graphcommerce/graphql-codegen-relay-optimizer-plugin@npm:7.1.0-canary.39, @graphcommerce/graphql-codegen-relay-optimizer-plugin@workspace:packagesDev/graphql-codegen-relay-optimizer-plugin": version: 0.0.0-use.local resolution: "@graphcommerce/graphql-codegen-relay-optimizer-plugin@workspace:packagesDev/graphql-codegen-relay-optimizer-plugin" dependencies: @@ -2941,13 +2943,13 @@ __metadata: ts-jest: "npm:29.1.1" typescript: "npm:5.2.2" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/prettier-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 graphql: ^16.7.1 languageName: unknown linkType: soft -"@graphcommerce/graphql-mesh@npm:7.1.0-canary.38, @graphcommerce/graphql-mesh@workspace:packages/graphql-mesh": +"@graphcommerce/graphql-mesh@npm:7.1.0-canary.39, @graphcommerce/graphql-mesh@workspace:packages/graphql-mesh": version: 0.0.0-use.local resolution: "@graphcommerce/graphql-mesh@workspace:packages/graphql-mesh" dependencies: @@ -2969,19 +2971,19 @@ __metadata: typescript: "npm:5.2.2" peerDependencies: "@apollo/client": ^3 - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 graphql: ^16.7.1 languageName: unknown linkType: soft -"@graphcommerce/graphql@npm:7.1.0-canary.38, @graphcommerce/graphql@workspace:packages/graphql": +"@graphcommerce/graphql@npm:7.1.0-canary.39, @graphcommerce/graphql@workspace:packages/graphql": version: 0.0.0-use.local resolution: "@graphcommerce/graphql@workspace:packages/graphql" dependencies: - "@graphcommerce/graphql-codegen-near-operation-file": "npm:7.1.0-canary.38" - "@graphcommerce/graphql-codegen-relay-optimizer-plugin": "npm:7.1.0-canary.38" + "@graphcommerce/graphql-codegen-near-operation-file": "npm:7.1.0-canary.39" + "@graphcommerce/graphql-codegen-relay-optimizer-plugin": "npm:7.1.0-canary.39" "@graphql-codegen/add": "npm:5.0.0" "@graphql-codegen/fragment-matcher": "npm:5.0.0" "@graphql-codegen/introspection": "npm:4.0.0" @@ -2994,16 +2996,16 @@ __metadata: apollo3-cache-persist: "npm:^0.14.1" peerDependencies: "@apollo/client": ^3 - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 graphql: ^16.7.1 react: ^18.2.0 react-dom: ^18.2.0 languageName: unknown linkType: soft -"@graphcommerce/hygraph-cli@npm:7.1.0-canary.38, @graphcommerce/hygraph-cli@workspace:packages/hygraph-cli": +"@graphcommerce/hygraph-cli@npm:7.1.0-canary.39, @graphcommerce/hygraph-cli@workspace:packages/hygraph-cli": version: 0.0.0-use.local resolution: "@graphcommerce/hygraph-cli@workspace:packages/hygraph-cli" dependencies: @@ -3015,26 +3017,26 @@ __metadata: typescript: "npm:5.2.2" peerDependencies: "@apollo/client": ^3 - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/next-config": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/next-config": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 dotenv: ^16.1.4 graphql: ^16.7.1 languageName: unknown linkType: soft -"@graphcommerce/hygraph-dynamic-rows@npm:7.1.0-canary.38, @graphcommerce/hygraph-dynamic-rows@workspace:packages/hygraph-dynamic-rows": +"@graphcommerce/hygraph-dynamic-rows@npm:7.1.0-canary.39, @graphcommerce/hygraph-dynamic-rows@workspace:packages/hygraph-dynamic-rows": version: 0.0.0-use.local resolution: "@graphcommerce/hygraph-dynamic-rows@workspace:packages/hygraph-dynamic-rows" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphcms-ui": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphcms-ui": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@mui/material": ^5.10.16 next: "*" react: ^18.2.0 @@ -3046,9 +3048,9 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/image-example@workspace:packages/image/example" dependencies: - "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.38" - "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.38" - "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.38" + "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.39" "@lingui/cli": "npm:4.5.0" "@lingui/core": "npm:4.5.0" "@lingui/macro": "npm:4.5.0" @@ -3082,14 +3084,14 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/image@npm:7.1.0-canary.38, @graphcommerce/image@workspace:packages/image": +"@graphcommerce/image@npm:7.1.0-canary.39, @graphcommerce/image@workspace:packages/image": version: 0.0.0-use.local resolution: "@graphcommerce/image@workspace:packages/image" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-utils": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-utils": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@mui/material": ^5.10.16 next: "*" react: ^18.2.0 @@ -3101,24 +3103,24 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/lighthouse@workspace:packages/lighthouse" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 next: "*" languageName: unknown linkType: soft -"@graphcommerce/lingui-next@npm:7.1.0-canary.38, @graphcommerce/lingui-next@workspace:packages/lingui-next": +"@graphcommerce/lingui-next@npm:7.1.0-canary.39, @graphcommerce/lingui-next@workspace:packages/lingui-next": version: 0.0.0-use.local resolution: "@graphcommerce/lingui-next@workspace:packages/lingui-next" dependencies: "@lingui/conf": "npm:^4.5.0" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/next-config": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/next-config": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3128,21 +3130,21 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart-billing-address@npm:7.1.0-canary.38, @graphcommerce/magento-cart-billing-address@workspace:packages/magento-cart-billing-address": +"@graphcommerce/magento-cart-billing-address@npm:7.1.0-canary.39, @graphcommerce/magento-cart-billing-address@workspace:packages/magento-cart-billing-address": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-billing-address@workspace:packages/magento-cart-billing-address" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-next-pages": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-next-pages": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3154,22 +3156,22 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart-checkout@npm:7.1.0-canary.38, @graphcommerce/magento-cart-checkout@workspace:packages/magento-cart-checkout": +"@graphcommerce/magento-cart-checkout@npm:7.1.0-canary.39, @graphcommerce/magento-cart-checkout@workspace:packages/magento-cart-checkout": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-checkout@workspace:packages/magento-cart-checkout" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-coupon": "*" - "@graphcommerce/magento-cart-items": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-coupon": 7.1.0-canary.39 + "@graphcommerce/magento-cart-items": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3181,19 +3183,19 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart-coupon@npm:7.1.0-canary.38, @graphcommerce/magento-cart-coupon@workspace:packages/magento-cart-coupon": +"@graphcommerce/magento-cart-coupon@npm:7.1.0-canary.39, @graphcommerce/magento-cart-coupon@workspace:packages/magento-cart-coupon": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-coupon@workspace:packages/magento-cart-coupon" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3205,22 +3207,22 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart-email@npm:7.1.0-canary.38, @graphcommerce/magento-cart-email@workspace:packages/magento-cart-email": +"@graphcommerce/magento-cart-email@npm:7.1.0-canary.39, @graphcommerce/magento-cart-email@workspace:packages/magento-cart-email": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-email@workspace:packages/magento-cart-email" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3232,21 +3234,21 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart-items@npm:7.1.0-canary.38, @graphcommerce/magento-cart-items@workspace:packages/magento-cart-items": +"@graphcommerce/magento-cart-items@npm:7.1.0-canary.39, @graphcommerce/magento-cart-items@workspace:packages/magento-cart-items": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-items@workspace:packages/magento-cart-items" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3258,21 +3260,21 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart-payment-method@npm:7.1.0-canary.38, @graphcommerce/magento-cart-payment-method@workspace:packages/magento-cart-payment-method": +"@graphcommerce/magento-cart-payment-method@npm:7.1.0-canary.39, @graphcommerce/magento-cart-payment-method@workspace:packages/magento-cart-payment-method": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-payment-method@workspace:packages/magento-cart-payment-method" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-scroller": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-shipping-address": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-scroller": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-shipping-address": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3288,18 +3290,18 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-pickup@workspace:packages/magento-cart-pickup" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-shipping-method": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-shipping-method": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3311,20 +3313,20 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart-shipping-address@npm:7.1.0-canary.38, @graphcommerce/magento-cart-shipping-address@workspace:packages/magento-cart-shipping-address": +"@graphcommerce/magento-cart-shipping-address@npm:7.1.0-canary.39, @graphcommerce/magento-cart-shipping-address@workspace:packages/magento-cart-shipping-address": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-shipping-address@workspace:packages/magento-cart-shipping-address" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3336,21 +3338,21 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart-shipping-method@npm:7.1.0-canary.38, @graphcommerce/magento-cart-shipping-method@workspace:packages/magento-cart-shipping-method": +"@graphcommerce/magento-cart-shipping-method@npm:7.1.0-canary.39, @graphcommerce/magento-cart-shipping-method@workspace:packages/magento-cart-shipping-method": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart-shipping-method@workspace:packages/magento-cart-shipping-method" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-scroller": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-shipping-address": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-scroller": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-shipping-address": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3362,24 +3364,24 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cart@npm:7.1.0-canary.38, @graphcommerce/magento-cart@workspace:packages/magento-cart": +"@graphcommerce/magento-cart@npm:7.1.0-canary.39, @graphcommerce/magento-cart@workspace:packages/magento-cart": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cart@workspace:packages/magento-cart" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-next-pages": "*" - "@graphcommerce/framer-scroller": "*" - "@graphcommerce/framer-utils": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-graphql": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-next-pages": 7.1.0-canary.39 + "@graphcommerce/framer-scroller": 7.1.0-canary.39 + "@graphcommerce/framer-utils": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-graphql": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3391,19 +3393,19 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-category@npm:7.1.0-canary.38, @graphcommerce/magento-category@workspace:packages/magento-category": +"@graphcommerce/magento-category@npm:7.1.0-canary.39, @graphcommerce/magento-category@workspace:packages/magento-category": version: 0.0.0-use.local resolution: "@graphcommerce/magento-category@workspace:packages/magento-category" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-scroller": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-scroller": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3414,15 +3416,15 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-cms@npm:7.1.0-canary.38, @graphcommerce/magento-cms@workspace:packages/magento-cms": +"@graphcommerce/magento-cms@npm:7.1.0-canary.39, @graphcommerce/magento-cms@workspace:packages/magento-cms": version: 0.0.0-use.local resolution: "@graphcommerce/magento-cms@workspace:packages/magento-cms" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3433,20 +3435,20 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-compare@npm:7.1.0-canary.38, @graphcommerce/magento-compare@workspace:packages/magento-compare": +"@graphcommerce/magento-compare@npm:7.1.0-canary.39, @graphcommerce/magento-compare@workspace:packages/magento-compare": version: 0.0.0-use.local resolution: "@graphcommerce/magento-compare@workspace:packages/magento-compare" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-next-pages": "*" - "@graphcommerce/framer-utils": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-next-pages": 7.1.0-canary.39 + "@graphcommerce/framer-utils": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3463,10 +3465,10 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/magento-customer-account@workspace:packages/magento-customer-account" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 languageName: unknown linkType: soft @@ -3474,16 +3476,16 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/magento-customer-order@workspace:packages/magento-customer-order" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-graphql": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-graphql": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3495,22 +3497,22 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-customer@npm:7.1.0-canary.38, @graphcommerce/magento-customer@workspace:packages/magento-customer": +"@graphcommerce/magento-customer@npm:7.1.0-canary.39, @graphcommerce/magento-customer@workspace:packages/magento-customer": version: 0.0.0-use.local resolution: "@graphcommerce/magento-customer@workspace:packages/magento-customer" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-utils": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-graphql": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-utils": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-graphql": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3529,55 +3531,56 @@ __metadata: dependencies: "@apollo/client": "npm:~3.8.7" "@ducanh2912/next-pwa": "npm:9.7.2" - "@graphcommerce/cli": "npm:7.1.0-canary.38" - "@graphcommerce/demo-magento-graphcommerce": "npm:7.1.0-canary.38" - "@graphcommerce/ecommerce-ui": "npm:7.1.0-canary.38" - "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.38" - "@graphcommerce/framer-next-pages": "npm:7.1.0-canary.38" - "@graphcommerce/framer-scroller": "npm:7.1.0-canary.38" - "@graphcommerce/framer-utils": "npm:7.1.0-canary.38" - "@graphcommerce/googleanalytics": "npm:7.1.0-canary.38" - "@graphcommerce/googlerecaptcha": "npm:7.1.0-canary.38" - "@graphcommerce/googletagmanager": "npm:7.1.0-canary.38" - "@graphcommerce/graphcms-ui": "npm:7.1.0-canary.38" - "@graphcommerce/graphql": "npm:7.1.0-canary.38" - "@graphcommerce/graphql-mesh": "npm:7.1.0-canary.38" - "@graphcommerce/hygraph-cli": "npm:7.1.0-canary.38" - "@graphcommerce/hygraph-dynamic-rows": "npm:7.1.0-canary.38" - "@graphcommerce/image": "npm:7.1.0-canary.38" - "@graphcommerce/lingui-next": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart-billing-address": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart-checkout": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart-coupon": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart-email": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart-items": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart-payment-method": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart-shipping-address": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cart-shipping-method": "npm:7.1.0-canary.38" - "@graphcommerce/magento-category": "npm:7.1.0-canary.38" - "@graphcommerce/magento-cms": "npm:7.1.0-canary.38" - "@graphcommerce/magento-compare": "npm:7.1.0-canary.38" - "@graphcommerce/magento-customer": "npm:7.1.0-canary.38" - "@graphcommerce/magento-graphql": "npm:7.1.0-canary.38" - "@graphcommerce/magento-newsletter": "npm:7.1.0-canary.38" - "@graphcommerce/magento-payment-included": "npm:7.1.0-canary.38" - "@graphcommerce/magento-product": "npm:7.1.0-canary.38" - "@graphcommerce/magento-product-bundle": "npm:7.1.0-canary.38" - "@graphcommerce/magento-product-configurable": "npm:7.1.0-canary.38" - "@graphcommerce/magento-product-downloadable": "npm:7.1.0-canary.38" - "@graphcommerce/magento-product-grouped": "npm:7.1.0-canary.38" - "@graphcommerce/magento-product-simple": "npm:7.1.0-canary.38" - "@graphcommerce/magento-product-virtual": "npm:7.1.0-canary.38" - "@graphcommerce/magento-review": "npm:7.1.0-canary.38" - "@graphcommerce/magento-search": "npm:7.1.0-canary.38" - "@graphcommerce/magento-store": "npm:7.1.0-canary.38" - "@graphcommerce/magento-wishlist": "npm:7.1.0-canary.38" - "@graphcommerce/next-config": "npm:7.1.0-canary.38" - "@graphcommerce/next-ui": "npm:7.1.0-canary.38" - "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.38" - "@graphcommerce/react-hook-form": "npm:7.1.0-canary.38" - "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.38" + "@graphcommerce/cli": "npm:7.1.0-canary.39" + "@graphcommerce/demo-magento-graphcommerce": "npm:7.1.0-canary.39" + "@graphcommerce/ecommerce-ui": "npm:7.1.0-canary.39" + "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/framer-next-pages": "npm:7.1.0-canary.39" + "@graphcommerce/framer-scroller": "npm:7.1.0-canary.39" + "@graphcommerce/framer-utils": "npm:7.1.0-canary.39" + "@graphcommerce/googleanalytics": "npm:7.1.0-canary.39" + "@graphcommerce/googlerecaptcha": "npm:7.1.0-canary.39" + "@graphcommerce/googletagmanager": "npm:7.1.0-canary.39" + "@graphcommerce/graphcms-ui": "npm:7.1.0-canary.39" + "@graphcommerce/graphql": "npm:7.1.0-canary.39" + "@graphcommerce/graphql-mesh": "npm:7.1.0-canary.39" + "@graphcommerce/hygraph-cli": "npm:7.1.0-canary.39" + "@graphcommerce/hygraph-dynamic-rows": "npm:7.1.0-canary.39" + "@graphcommerce/image": "npm:7.1.0-canary.39" + "@graphcommerce/lingui-next": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart-billing-address": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart-checkout": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart-coupon": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart-email": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart-items": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart-payment-method": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart-shipping-address": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart-shipping-method": "npm:7.1.0-canary.39" + "@graphcommerce/magento-category": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cms": "npm:7.1.0-canary.39" + "@graphcommerce/magento-compare": "npm:7.1.0-canary.39" + "@graphcommerce/magento-customer": "npm:7.1.0-canary.39" + "@graphcommerce/magento-graphql": "npm:7.1.0-canary.39" + "@graphcommerce/magento-newsletter": "npm:7.1.0-canary.39" + "@graphcommerce/magento-payment-included": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product-bundle": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product-configurable": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product-downloadable": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product-grouped": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product-simple": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product-virtual": "npm:7.1.0-canary.39" + "@graphcommerce/magento-recently-viewed-products": "npm:7.1.0-canary.39" + "@graphcommerce/magento-review": "npm:7.1.0-canary.39" + "@graphcommerce/magento-search": "npm:7.1.0-canary.39" + "@graphcommerce/magento-store": "npm:7.1.0-canary.39" + "@graphcommerce/magento-wishlist": "npm:7.1.0-canary.39" + "@graphcommerce/next-config": "npm:7.1.0-canary.39" + "@graphcommerce/next-ui": "npm:7.1.0-canary.39" + "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/react-hook-form": "npm:7.1.0-canary.39" + "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.39" "@lingui/cli": "npm:4.5.0" "@lingui/core": "npm:4.5.0" "@lingui/macro": "npm:4.5.0" @@ -3613,33 +3616,33 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-graphql@npm:7.1.0-canary.38, @graphcommerce/magento-graphql@workspace:packages/magento-graphql": +"@graphcommerce/magento-graphql@npm:7.1.0-canary.39, @graphcommerce/magento-graphql@workspace:packages/magento-graphql": version: 0.0.0-use.local resolution: "@graphcommerce/magento-graphql@workspace:packages/magento-graphql" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 next: "*" react: ^18.2.0 react-dom: ^18.2.0 languageName: unknown linkType: soft -"@graphcommerce/magento-newsletter@npm:7.1.0-canary.38, @graphcommerce/magento-newsletter@workspace:packages/magento-newsletter": +"@graphcommerce/magento-newsletter@npm:7.1.0-canary.39, @graphcommerce/magento-newsletter@workspace:packages/magento-newsletter": version: 0.0.0-use.local resolution: "@graphcommerce/magento-newsletter@workspace:packages/magento-newsletter" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3658,15 +3661,15 @@ __metadata: "@types/jsdom": "npm:^21.1.5" jsdom: "npm:^22.1.0" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-category": "*" - "@graphcommerce/magento-cms": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-category": 7.1.0-canary.39 + "@graphcommerce/magento-cms": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3682,18 +3685,18 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/magento-payment-adyen@workspace:packages/magento-payment-adyen" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-payment-method": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-payment-method": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3711,19 +3714,19 @@ __metadata: "@types/braintree-web": "npm:^3.96.9" braintree-web: "npm:^3.97.3" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-payment-method": "*" - "@graphcommerce/magento-cart-shipping-address": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-configurable": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-payment-method": 7.1.0-canary.39 + "@graphcommerce/magento-cart-shipping-address": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-configurable": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3735,23 +3738,23 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-payment-included@npm:7.1.0-canary.38, @graphcommerce/magento-payment-included@workspace:packages/magento-payment-included": +"@graphcommerce/magento-payment-included@npm:7.1.0-canary.39, @graphcommerce/magento-payment-included@workspace:packages/magento-payment-included": version: 0.0.0-use.local resolution: "@graphcommerce/magento-payment-included@workspace:packages/magento-payment-included" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-payment-method": "*" - "@graphcommerce/magento-cart-shipping-address": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-configurable": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-payment-method": 7.1.0-canary.39 + "@graphcommerce/magento-cart-shipping-address": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-configurable": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3767,14 +3770,14 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/magento-payment-klarna@workspace:packages/magento-payment-klarna" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3790,22 +3793,22 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/magento-payment-multisafepay@workspace:packages/magento-payment-multisafepay" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-checkout": "*" - "@graphcommerce/magento-cart-payment-method": "*" - "@graphcommerce/magento-cart-shipping-address": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-configurable": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-checkout": 7.1.0-canary.39 + "@graphcommerce/magento-cart-payment-method": 7.1.0-canary.39 + "@graphcommerce/magento-cart-shipping-address": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-configurable": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3820,16 +3823,16 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/magento-payment-paypal@workspace:packages/magento-payment-paypal" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-payment-method": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-payment-method": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3841,23 +3844,23 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-product-bundle@npm:7.1.0-canary.38, @graphcommerce/magento-product-bundle@workspace:packages/magento-product-bundle": +"@graphcommerce/magento-product-bundle@npm:7.1.0-canary.39, @graphcommerce/magento-product-bundle@workspace:packages/magento-product-bundle": version: 0.0.0-use.local resolution: "@graphcommerce/magento-product-bundle@workspace:packages/magento-product-bundle" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-items": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-simple": "*" - "@graphcommerce/magento-product-virtual": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-items": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-simple": 7.1.0-canary.39 + "@graphcommerce/magento-product-virtual": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3868,26 +3871,26 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-product-configurable@npm:7.1.0-canary.38, @graphcommerce/magento-product-configurable@workspace:packages/magento-product-configurable": +"@graphcommerce/magento-product-configurable@npm:7.1.0-canary.39, @graphcommerce/magento-product-configurable@workspace:packages/magento-product-configurable": version: 0.0.0-use.local resolution: "@graphcommerce/magento-product-configurable@workspace:packages/magento-product-configurable" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-items": "*" - "@graphcommerce/magento-category": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-simple": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-items": 7.1.0-canary.39 + "@graphcommerce/magento-category": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-simple": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3899,18 +3902,18 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-product-downloadable@npm:7.1.0-canary.38, @graphcommerce/magento-product-downloadable@workspace:packages/magento-product-downloadable": +"@graphcommerce/magento-product-downloadable@npm:7.1.0-canary.39, @graphcommerce/magento-product-downloadable@workspace:packages/magento-product-downloadable": version: 0.0.0-use.local resolution: "@graphcommerce/magento-product-downloadable@workspace:packages/magento-product-downloadable" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3920,18 +3923,18 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-product-grouped@npm:7.1.0-canary.38, @graphcommerce/magento-product-grouped@workspace:packages/magento-product-grouped": +"@graphcommerce/magento-product-grouped@npm:7.1.0-canary.39, @graphcommerce/magento-product-grouped@workspace:packages/magento-product-grouped": version: 0.0.0-use.local resolution: "@graphcommerce/magento-product-grouped@workspace:packages/magento-product-grouped" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-simple": "*" - "@graphcommerce/magento-product-virtual": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-simple": 7.1.0-canary.39 + "@graphcommerce/magento-product-virtual": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3941,18 +3944,18 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-product-simple@npm:7.1.0-canary.38, @graphcommerce/magento-product-simple@workspace:packages/magento-product-simple": +"@graphcommerce/magento-product-simple@npm:7.1.0-canary.39, @graphcommerce/magento-product-simple@workspace:packages/magento-product-simple": version: 0.0.0-use.local resolution: "@graphcommerce/magento-product-simple@workspace:packages/magento-product-simple" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-items": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-items": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3962,18 +3965,18 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-product-virtual@npm:7.1.0-canary.38, @graphcommerce/magento-product-virtual@workspace:packages/magento-product-virtual": +"@graphcommerce/magento-product-virtual@npm:7.1.0-canary.39, @graphcommerce/magento-product-virtual@workspace:packages/magento-product-virtual": version: 0.0.0-use.local resolution: "@graphcommerce/magento-product-virtual@workspace:packages/magento-product-virtual" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-items": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-items": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -3983,25 +3986,25 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-product@npm:7.1.0-canary.38, @graphcommerce/magento-product@workspace:packages/magento-product": +"@graphcommerce/magento-product@npm:7.1.0-canary.39, @graphcommerce/magento-product@workspace:packages/magento-product": version: 0.0.0-use.local resolution: "@graphcommerce/magento-product@workspace:packages/magento-product" dependencies: schema-dts: "npm:^1.1.2" typescript: "npm:5.2.2" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-next-pages": "*" - "@graphcommerce/framer-scroller": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-next-pages": 7.1.0-canary.39 + "@graphcommerce/framer-scroller": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -4013,24 +4016,47 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-review@npm:7.1.0-canary.38, @graphcommerce/magento-review@workspace:packages/magento-review": +"@graphcommerce/magento-recently-viewed-products@npm:7.1.0-canary.39, @graphcommerce/magento-recently-viewed-products@workspace:packages/magento-recently-viewed-products": + version: 0.0.0-use.local + resolution: "@graphcommerce/magento-recently-viewed-products@workspace:packages/magento-recently-viewed-products" + dependencies: + "@graphcommerce/eslint-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/graphql": "npm:7.1.0-canary.39" + "@graphcommerce/graphql-mesh": "npm:7.1.0-canary.39" + "@graphcommerce/magento-cart": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product": "npm:7.1.0-canary.39" + "@graphcommerce/magento-product-configurable": "npm:7.1.0-canary.39" + "@graphcommerce/next-config": "npm:^7.1.0-canary.39" + "@graphcommerce/next-ui": "npm:7.1.0-canary.39" + "@graphcommerce/prettier-config-pwa": "npm:7.1.0-canary.39" + "@graphcommerce/typescript-config-pwa": "npm:7.1.0-canary.39" + peerDependencies: + "@mui/material": ^5.10.16 + framer-motion: ^10.0.0 + next: "*" + react: ^18.2.0 + react-dom: ^18.2.0 + languageName: unknown + linkType: soft + +"@graphcommerce/magento-review@npm:7.1.0-canary.39, @graphcommerce/magento-review@workspace:packages/magento-review": version: 0.0.0-use.local resolution: "@graphcommerce/magento-review@workspace:packages/magento-review" dependencies: schema-dts: "npm:^1.1.2" typescript: "npm:5.2.2" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -4041,19 +4067,19 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-search@npm:7.1.0-canary.38, @graphcommerce/magento-search@workspace:packages/magento-search": +"@graphcommerce/magento-search@npm:7.1.0-canary.39, @graphcommerce/magento-search@workspace:packages/magento-search": version: 0.0.0-use.local resolution: "@graphcommerce/magento-search@workspace:packages/magento-search" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -4064,17 +4090,17 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-store@npm:7.1.0-canary.38, @graphcommerce/magento-store@workspace:packages/magento-store": +"@graphcommerce/magento-store@npm:7.1.0-canary.39, @graphcommerce/magento-store@workspace:packages/magento-store": version: 0.0.0-use.local resolution: "@graphcommerce/magento-store@workspace:packages/magento-store" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -4085,24 +4111,24 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/magento-wishlist@npm:7.1.0-canary.38, @graphcommerce/magento-wishlist@workspace:packages/magento-wishlist": +"@graphcommerce/magento-wishlist@npm:7.1.0-canary.39, @graphcommerce/magento-wishlist@workspace:packages/magento-wishlist": version: 0.0.0-use.local resolution: "@graphcommerce/magento-wishlist@workspace:packages/magento-wishlist" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-customer": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-configurable": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-config": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-customer": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-configurable": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-config": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -4118,21 +4144,21 @@ __metadata: version: 0.0.0-use.local resolution: "@graphcommerce/mollie-magento-payment@workspace:packages/mollie-magento-payment" peerDependencies: - "@graphcommerce/ecommerce-ui": "*" - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/graphql": "*" - "@graphcommerce/graphql-mesh": "*" - "@graphcommerce/image": "*" - "@graphcommerce/magento-cart": "*" - "@graphcommerce/magento-cart-payment-method": "*" - "@graphcommerce/magento-cart-shipping-address": "*" - "@graphcommerce/magento-product": "*" - "@graphcommerce/magento-product-configurable": "*" - "@graphcommerce/magento-store": "*" - "@graphcommerce/next-ui": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/react-hook-form": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/ecommerce-ui": 7.1.0-canary.39 + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/graphql": 7.1.0-canary.39 + "@graphcommerce/graphql-mesh": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/magento-cart": 7.1.0-canary.39 + "@graphcommerce/magento-cart-payment-method": 7.1.0-canary.39 + "@graphcommerce/magento-cart-shipping-address": 7.1.0-canary.39 + "@graphcommerce/magento-product": 7.1.0-canary.39 + "@graphcommerce/magento-product-configurable": 7.1.0-canary.39 + "@graphcommerce/magento-store": 7.1.0-canary.39 + "@graphcommerce/next-ui": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/react-hook-form": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -4143,7 +4169,7 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/next-config@npm:7.1.0-canary.38, @graphcommerce/next-config@workspace:packagesDev/next-config": +"@graphcommerce/next-config@npm:7.1.0-canary.39, @graphcommerce/next-config@npm:^7.1.0-canary.39, @graphcommerce/next-config@workspace:packagesDev/next-config": version: 0.0.0-use.local resolution: "@graphcommerce/next-config@workspace:packagesDev/next-config" dependencies: @@ -4169,7 +4195,7 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/next-ui@npm:7.1.0-canary.38, @graphcommerce/next-ui@workspace:packages/next-ui": +"@graphcommerce/next-ui@npm:7.1.0-canary.39, @graphcommerce/next-ui@workspace:packages/next-ui": version: 0.0.0-use.local resolution: "@graphcommerce/next-ui@workspace:packages/next-ui" dependencies: @@ -4184,13 +4210,13 @@ __metadata: schema-dts: "npm:^1.1.2" typescript: "npm:5.2.2" peerDependencies: - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/framer-next-pages": "*" - "@graphcommerce/framer-scroller": "*" - "@graphcommerce/framer-utils": "*" - "@graphcommerce/image": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/framer-next-pages": 7.1.0-canary.39 + "@graphcommerce/framer-scroller": 7.1.0-canary.39 + "@graphcommerce/framer-utils": 7.1.0-canary.39 + "@graphcommerce/image": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 "@lingui/core": ^4.2.1 "@lingui/macro": ^4.2.1 "@lingui/react": ^4.2.1 @@ -4203,7 +4229,7 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/prettier-config-pwa@npm:7.1.0-canary.38, @graphcommerce/prettier-config-pwa@workspace:packagesDev/prettier-config": +"@graphcommerce/prettier-config-pwa@npm:7.1.0-canary.39, @graphcommerce/prettier-config-pwa@workspace:packagesDev/prettier-config": version: 0.0.0-use.local resolution: "@graphcommerce/prettier-config-pwa@workspace:packagesDev/prettier-config" dependencies: @@ -4213,16 +4239,16 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/react-hook-form@npm:7.1.0-canary.38, @graphcommerce/react-hook-form@workspace:packages/react-hook-form": +"@graphcommerce/react-hook-form@npm:7.1.0-canary.39, @graphcommerce/react-hook-form@workspace:packages/react-hook-form": version: 0.0.0-use.local resolution: "@graphcommerce/react-hook-form@workspace:packages/react-hook-form" dependencies: "@testing-library/react": "npm:^14.1.0" peerDependencies: "@apollo/client": ^3 - "@graphcommerce/eslint-config-pwa": "*" - "@graphcommerce/prettier-config-pwa": "*" - "@graphcommerce/typescript-config-pwa": "*" + "@graphcommerce/eslint-config-pwa": 7.1.0-canary.39 + "@graphcommerce/prettier-config-pwa": 7.1.0-canary.39 + "@graphcommerce/typescript-config-pwa": 7.1.0-canary.39 graphql: ^16.6.0 react: ^18.2.0 react-dom: ^18.2.0 @@ -4230,7 +4256,7 @@ __metadata: languageName: unknown linkType: soft -"@graphcommerce/typescript-config-pwa@npm:7.1.0-canary.38, @graphcommerce/typescript-config-pwa@workspace:packagesDev/typescript-config": +"@graphcommerce/typescript-config-pwa@npm:7.1.0-canary.39, @graphcommerce/typescript-config-pwa@workspace:packagesDev/typescript-config": version: 0.0.0-use.local resolution: "@graphcommerce/typescript-config-pwa@workspace:packagesDev/typescript-config" dependencies: