Commit e740c0fc5a1 for woocommerce
commit e740c0fc5a1977a81cc5adf14ebf794ea8a63abc
Author: Luigi Teschio <gigitux@gmail.com>
Date: Thu Sep 24 16:18:26 2026 +0200
Rename Atomic blocks to Product Element blocks (#68952)
* Rename atomic blocks to product element blocks
* Add changelog entry for product element blocks rename
* improve documentation
* lint code
* remove strict
* update changelog
* Remove unused ProductElementBlock class
* Update changelog for unused class removal
* Restore tree shaking for product element utilities
* Move product element helpers to shared utils
* fix import
* restore class
* move folder inside blocks
* rename to @woocommerce/product-elements
diff --git a/docs/block-development/reference/block-references.md b/docs/block-development/reference/block-references.md
index fb865c9c7e2..3eaa00b1109 100644
--- a/docs/block-development/reference/block-references.md
+++ b/docs/block-development/reference/block-references.md
@@ -9,150 +9,6 @@ This page lists the Woo blocks included in the package. (Incomplete as there are
{/* START Autogenerated - DO NOT EDIT */}
-## Product Average Rating (Beta) - woocommerce/product-average-rating
-
-Display the average rating of a product
-
-- **Name:** woocommerce/product-average-rating
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/single-product
-- **Supports:** color (background, text), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize)
-- **Attributes:** textAlign
-
-## Add to Cart Button - woocommerce/product-button
-
-Display a call to action button which either adds the product to the cart, or links to the product page.
-
-- **Name:** woocommerce/product-button
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/all-products, woocommerce/single-product, core/post-template, woocommerce/product-template
-- **Supports:** align (full, wide), color (background, text, ~~link~~), email, interactivity, spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
-- **Attributes:** productId, textAlign, width
-
-## Product Image - woocommerce/product-image
-
-Display the main product image.
-
-- **Name:** woocommerce/product-image
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/all-products, woocommerce/single-product, woocommerce/product-template, core/post-template
-- **Supports:** dimensions (aspectRatio), email, interactivity (clientNavigation), spacing (margin, padding), typography (fontSize), ~~html~~
-- **Attributes:** aspectRatio, height, imageSizing, productId, saleBadgeAlign, scale, showProductLink, showSaleBadge, width
-
-## Product Price - woocommerce/product-price
-
-Display the price of a product.
-
-- **Name:** woocommerce/product-price
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/all-products, woocommerce/featured-product, woocommerce/single-product, woocommerce/product-template, core/post-template
-- **Supports:** color (background, text, ~~link~~), email, interactivity, spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
-- **Attributes:** productId, textAlign
-
-## Product Image Gallery - woocommerce/product-image-gallery
-
-Display a product's images.
-
-- **Name:** woocommerce/product-image-gallery
-- **Category:** woocommerce-product-elements
-- **Supports:** align, interactivity (clientNavigation), ~~multiple~~
-
-## Product Meta - woocommerce/product-meta
-
-Display a product’s SKU, categories, tags, and more.
-
-- **Name:** woocommerce/product-meta
-- **Category:** woocommerce-product-elements
-- **Supports:** align, interactivity (clientNavigation), ~~reusable~~
-
-## Product Rating - woocommerce/product-rating
-
-Display the average rating of a product.
-
-- **Name:** woocommerce/product-rating
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/all-products, woocommerce/single-product, woocommerce/product-template, core/post-template
-- **Supports:** color (text, ~~background~~, ~~link~~), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize)
-- **Attributes:** productId, textAlign
-
-## Product Rating Counter - woocommerce/product-rating-counter
-
-Display the review count of a product
-
-- **Name:** woocommerce/product-rating-counter
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/single-product
-- **Supports:** color (link, ~~background~~, ~~text~~), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize), ~~inserter~~
-- **Attributes:** productId, textAlign
-
-## Product Rating Stars - woocommerce/product-rating-stars
-
-Display the average rating of a product with stars
-
-- **Name:** woocommerce/product-rating-stars
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/single-product
-- **Supports:** color (text, ~~background~~, ~~link~~), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize), ~~inserter~~
-- **Attributes:** productId, textAlign
-
-## Related Products - woocommerce/related-products
-
-Display related products.
-
-- **Name:** woocommerce/related-products
-- **Category:** woocommerce
-- **Supports:** align, interactivity (clientNavigation), ~~inserter~~, ~~reusable~~
-
-## On-Sale Badge - woocommerce/product-sale-badge
-
-Displays an on-sale badge if the product is on-sale.
-
-- **Name:** woocommerce/product-sale-badge
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/single-product, woocommerce/product-template, core/post-template, woocommerce/product-gallery
-- **Supports:** align, color (background, gradients, text, ~~link~~), email, interactivity (clientNavigation), spacing (margin), typography (fontSize, lineHeight), ~~html~~
-- **Attributes:** productId
-
-## Product SKU - woocommerce/product-sku
-
-Displays the SKU of a product.
-
-- **Name:** woocommerce/product-sku
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/product-meta, woocommerce/all-products, woocommerce/single-product, woocommerce/product-template, core/post-template
-- **Supports:** color (background, text), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
-- **Attributes:** isDescendantOfAllProducts, prefix, productId, showProductSelector, suffix
-
-## Product Stock Indicator - woocommerce/product-stock-indicator
-
-Let shoppers know when products are out of stock or on backorder. This block is hidden when products are in stock.
-
-- **Name:** woocommerce/product-stock-indicator
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/all-products, woocommerce/single-product, woocommerce/product-template, core/post-template
-- **Supports:** color (background, text), interactivity, spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
-- **Attributes:** isDescendantOfAllProducts
-
-## Product Summary - woocommerce/product-summary
-
-Display a short description about a product.
-
-- **Name:** woocommerce/product-summary
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/all-products, woocommerce/featured-product, woocommerce/single-product, woocommerce/product-template, core/post-template
-- **Supports:** color (background, link, text), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize, lineHeight, textAlign)
-- **Attributes:** isDescendantOfAllProducts, linkText, productId, showDescriptionIfEmpty, showLink, summaryLength
-
-## Product Title - woocommerce/product-title
-
-Display the title of a product.
-
-- **Name:** woocommerce/product-title
-- **Category:** woocommerce-product-elements
-- **Ancestor:** woocommerce/all-products
-- **Supports:** color (background, gradients, text, ~~link~~), interactivity (~~clientNavigation~~), spacing (margin), typography (fontSize, lineHeight), ~~html~~
-- **Attributes:** align, headingLevel, linkTarget, productId, showProductLink
-
## Accordion Group - woocommerce/accordion-group
A group of headers and associated expandable content.
@@ -1233,6 +1089,150 @@ Display a product's description, attributes, and reviews
- **Supports:** align (full, wide), color (background, ~~text~~), interactivity (clientNavigation), spacing (margin, padding)
- **Attributes:** align, hideTabTitle
+## Product Average Rating (Beta) - woocommerce/product-average-rating
+
+Display the average rating of a product
+
+- **Name:** woocommerce/product-average-rating
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/single-product
+- **Supports:** color (background, text), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize)
+- **Attributes:** textAlign
+
+## Add to Cart Button - woocommerce/product-button
+
+Display a call to action button which either adds the product to the cart, or links to the product page.
+
+- **Name:** woocommerce/product-button
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/all-products, woocommerce/single-product, core/post-template, woocommerce/product-template
+- **Supports:** align (full, wide), color (background, text, ~~link~~), email, interactivity, spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
+- **Attributes:** productId, textAlign, width
+
+## Product Image - woocommerce/product-image
+
+Display the main product image.
+
+- **Name:** woocommerce/product-image
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/all-products, woocommerce/single-product, woocommerce/product-template, core/post-template
+- **Supports:** dimensions (aspectRatio), email, interactivity (clientNavigation), spacing (margin, padding), typography (fontSize), ~~html~~
+- **Attributes:** aspectRatio, height, imageSizing, productId, saleBadgeAlign, scale, showProductLink, showSaleBadge, width
+
+## Product Price - woocommerce/product-price
+
+Display the price of a product.
+
+- **Name:** woocommerce/product-price
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/all-products, woocommerce/featured-product, woocommerce/single-product, woocommerce/product-template, core/post-template
+- **Supports:** color (background, text, ~~link~~), email, interactivity, spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
+- **Attributes:** productId, textAlign
+
+## Product Image Gallery - woocommerce/product-image-gallery
+
+Display a product's images.
+
+- **Name:** woocommerce/product-image-gallery
+- **Category:** woocommerce-product-elements
+- **Supports:** align, interactivity (clientNavigation), ~~multiple~~
+
+## Product Meta - woocommerce/product-meta
+
+Display a product’s SKU, categories, tags, and more.
+
+- **Name:** woocommerce/product-meta
+- **Category:** woocommerce-product-elements
+- **Supports:** align, interactivity (clientNavigation), ~~reusable~~
+
+## Product Rating - woocommerce/product-rating
+
+Display the average rating of a product.
+
+- **Name:** woocommerce/product-rating
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/all-products, woocommerce/single-product, woocommerce/product-template, core/post-template
+- **Supports:** color (text, ~~background~~, ~~link~~), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize)
+- **Attributes:** productId, textAlign
+
+## Product Rating Counter - woocommerce/product-rating-counter
+
+Display the review count of a product
+
+- **Name:** woocommerce/product-rating-counter
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/single-product
+- **Supports:** color (link, ~~background~~, ~~text~~), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize), ~~inserter~~
+- **Attributes:** productId, textAlign
+
+## Product Rating Stars - woocommerce/product-rating-stars
+
+Display the average rating of a product with stars
+
+- **Name:** woocommerce/product-rating-stars
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/single-product
+- **Supports:** color (text, ~~background~~, ~~link~~), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize), ~~inserter~~
+- **Attributes:** productId, textAlign
+
+## Related Products - woocommerce/related-products
+
+Display related products.
+
+- **Name:** woocommerce/related-products
+- **Category:** woocommerce
+- **Supports:** align, interactivity (clientNavigation), ~~inserter~~, ~~reusable~~
+
+## On-Sale Badge - woocommerce/product-sale-badge
+
+Displays an on-sale badge if the product is on-sale.
+
+- **Name:** woocommerce/product-sale-badge
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/single-product, woocommerce/product-template, core/post-template, woocommerce/product-gallery
+- **Supports:** align, color (background, gradients, text, ~~link~~), email, interactivity (clientNavigation), spacing (margin), typography (fontSize, lineHeight), ~~html~~
+- **Attributes:** productId
+
+## Product SKU - woocommerce/product-sku
+
+Displays the SKU of a product.
+
+- **Name:** woocommerce/product-sku
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/product-meta, woocommerce/all-products, woocommerce/single-product, woocommerce/product-template, core/post-template
+- **Supports:** color (background, text), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
+- **Attributes:** isDescendantOfAllProducts, prefix, productId, showProductSelector, suffix
+
+## Product Stock Indicator - woocommerce/product-stock-indicator
+
+Let shoppers know when products are out of stock or on backorder. This block is hidden when products are in stock.
+
+- **Name:** woocommerce/product-stock-indicator
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/all-products, woocommerce/single-product, woocommerce/product-template, core/post-template
+- **Supports:** color (background, text), interactivity, spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
+- **Attributes:** isDescendantOfAllProducts
+
+## Product Summary - woocommerce/product-summary
+
+Display a short description about a product.
+
+- **Name:** woocommerce/product-summary
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/all-products, woocommerce/featured-product, woocommerce/single-product, woocommerce/product-template, core/post-template
+- **Supports:** color (background, link, text), interactivity (clientNavigation), spacing (margin, padding), typography (fontSize, lineHeight, textAlign)
+- **Attributes:** isDescendantOfAllProducts, linkText, productId, showDescriptionIfEmpty, showLink, summaryLength
+
+## Product Title - woocommerce/product-title
+
+Display the title of a product.
+
+- **Name:** woocommerce/product-title
+- **Category:** woocommerce-product-elements
+- **Ancestor:** woocommerce/all-products
+- **Supports:** color (background, gradients, text, ~~link~~), interactivity (~~clientNavigation~~), spacing (margin), typography (fontSize, lineHeight), ~~html~~
+- **Attributes:** align, headingLevel, linkTarget, productId, showProductLink
+
## Product Filters - woocommerce/product-filters
Add a set of filters shoppers can use.
diff --git a/plugins/woocommerce/changelog/rename-product-element-blocks b/plugins/woocommerce/changelog/rename-product-element-blocks
new file mode 100644
index 00000000000..2f61be1e7b3
--- /dev/null
+++ b/plugins/woocommerce/changelog/rename-product-element-blocks
@@ -0,0 +1,4 @@
+Significance: minor
+Type: dev
+
+Rename Atomic blocks internals to Product Element blocks.
diff --git a/plugins/woocommerce/client/blocks/CLAUDE.md b/plugins/woocommerce/client/blocks/CLAUDE.md
index 574c8e1ec44..9186df66a39 100644
--- a/plugins/woocommerce/client/blocks/CLAUDE.md
+++ b/plugins/woocommerce/client/blocks/CLAUDE.md
@@ -44,13 +44,13 @@ pnpm --filter=@woocommerce/block-library analyze-bundles # Webpack
```text
client/blocks/
├── assets/js/
-│ ├── blocks/ # ~56 block implementations (cart, checkout, product-*, filter-*)
-│ ├── atomic/ # Atomic/primitive blocks (product elements)
+│ ├── blocks/ # Block implementations (cart, checkout, filters, products)
+│ │ └── product-elements-blocks/ # Reusable product element blocks
│ ├── base/ # Shared components, context, hooks, stores
│ │ └── stores/woocommerce/ # Interactivity API stores (LOCKED)
│ ├── editor-components/ # 33+ shared editor UI components
│ ├── extensions/ # Extension integrations
-│ └── utils/ # Utility functions
+│ └── utils/ # Shared utility functions
├── packages/
│ ├── public-api/ # Supported package-root extension contracts
│ │ ├── block-data/ # WordPress @data stores
diff --git a/plugins/woocommerce/client/blocks/assets/css/style.scss b/plugins/woocommerce/client/blocks/assets/css/style.scss
index 4af07244e07..0f151fbacae 100644
--- a/plugins/woocommerce/client/blocks/assets/css/style.scss
+++ b/plugins/woocommerce/client/blocks/assets/css/style.scss
@@ -306,7 +306,7 @@ body.wc-block-product-gallery-modal-open {
position: absolute;
}
- // These styles are not applied to the All Products atomic block, so it can be positioned normally.
+ // These styles are not applied to the All Products block, so it can be positioned normally.
.wc-block-grid__products
.wc-block-grid__product-onsale:not(
.wc-block-components-product-sale-badge
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/index.js b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/index.js
deleted file mode 100644
index f5d5a1a07de..00000000000
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Internal dependencies
- */
-import './product-elements/title';
-import './product-elements/price';
-import './product-elements/image';
-import './product-elements/rating';
-import './product-elements/rating-stars';
-import './product-elements/rating-counter';
-import './product-elements/average-rating';
-import './product-elements/button';
-import './product-elements/summary';
-import './product-elements/sale-badge';
-import './product-elements/sku';
-import './product-elements/stock-indicator';
-import './product-elements/product-image-gallery';
-import './product-elements/related-products';
-import './product-elements/product-meta';
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/index.js b/plugins/woocommerce/client/blocks/assets/js/atomic/utils/index.js
deleted file mode 100644
index 0a5e49732a3..00000000000
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from './get-block-map';
-export * from './render-parent-block';
-export * from './render-standalone-blocks';
-export * from './register-product-block-type';
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/render-standalone-blocks.js b/plugins/woocommerce/client/blocks/assets/js/atomic/utils/render-standalone-blocks.js
deleted file mode 100644
index 6ffe28a0461..00000000000
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/render-standalone-blocks.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * External dependencies
- */
-import { renderFrontend } from '@woocommerce/base-utils';
-
-/**
- * Internal dependencies
- */
-import { getBlockMap } from './get-block-map';
-
-export const renderStandaloneBlocks = () => {
- const blockMap = getBlockMap( '' );
-
- Object.keys( blockMap ).forEach( ( blockName ) => {
- const selector = '.wp-block-' + blockName.replace( '/', '-' );
-
- const getProps = ( el ) => {
- return el.dataset;
- };
-
- renderFrontend( {
- Block: blockMap[ blockName ],
- selector,
- getProps,
- } );
- } );
-};
diff --git a/plugins/woocommerce/client/blocks/assets/js/base/components/product-list/product-list-item/utils.tsx b/plugins/woocommerce/client/blocks/assets/js/base/components/product-list/product-list-item/utils.tsx
index 8d80666eab2..7bb1164f8d0 100644
--- a/plugins/woocommerce/client/blocks/assets/js/base/components/product-list/product-list-item/utils.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/base/components/product-list/product-list-item/utils.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { getBlockMap } from '@woocommerce/atomic-utils';
+import { getBlockMap } from '@woocommerce/utils/get-block-map';
import { Suspense } from '@wordpress/element';
import { ProductResponseItem } from '@woocommerce/types';
@@ -11,10 +11,10 @@ import { ProductResponseItem } from '@woocommerce/types';
import { LayoutConfig } from '../types';
/**
- * Maps a layout config into atomic components.
+ * Maps a layout config into product element components.
*
* @param {string} blockName Name of the parent block. Used to get extension children.
- * @param {Object} product Product object to pass to atomic components.
+ * @param {Object} product Product object to pass to product element components.
* @param {Object[]} layoutConfig Object with component data.
* @param {number} componentId Parent component ID needed for key generation.
*/
diff --git a/plugins/woocommerce/client/blocks/assets/js/base/stores/woocommerce/README.md b/plugins/woocommerce/client/blocks/assets/js/base/stores/woocommerce/README.md
index 0d37e4974c0..2c4284592ba 100644
--- a/plugins/woocommerce/client/blocks/assets/js/base/stores/woocommerce/README.md
+++ b/plugins/woocommerce/client/blocks/assets/js/base/stores/woocommerce/README.md
@@ -179,7 +179,7 @@ Any `ProductResponseItem` field can be bound the same way, e.g. `state.productIn
Import the store for its side effects and reference it with the `ProductsStore` type.
-From `atomic/blocks/product-elements/button/frontend.ts`:
+From `blocks/product-elements-blocks/button/frontend.ts`:
```ts
import { store } from '@wordpress/interactivity';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-form/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-form/index.tsx
index feba72cadda..2b4d49f2986 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-form/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-form/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import { Icon, button } from '@wordpress/icons';
import type { BlockConfiguration } from '@wordpress/blocks';
import { createBlock } from '@wordpress/blocks';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-with-options/components/upgrade-product-image-gallery/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-with-options/components/upgrade-product-image-gallery/index.tsx
index 97daf22e811..d8d0e26bfb3 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-with-options/components/upgrade-product-image-gallery/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-with-options/components/upgrade-product-image-gallery/index.tsx
@@ -11,7 +11,7 @@ import { findBlock } from '@woocommerce/utils';
/**
* Internal dependencies
*/
-import { upgradeToBlockifiedProductGallery } from '../../../../atomic/blocks/product-elements/product-image-gallery/edit-utils';
+import { upgradeToBlockifiedProductGallery } from '../../../product-elements-blocks/product-image-gallery/edit-utils';
export const UpgradeProductImageGallery = () => {
const [ productImageGalleryBlock, setProductImageGalleryBlock ] =
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-with-options/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-with-options/index.tsx
index 97a1cb64b90..20fe6671f49 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-with-options/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/add-to-cart-with-options/index.tsx
@@ -3,7 +3,7 @@
*/
import { button } from '@wordpress/icons';
import { getPlugin, registerPlugin } from '@wordpress/plugins';
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import type { BlockConfiguration } from '@wordpress/blocks';
/**
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/cart/cart-cross-sells-product-list/cart-cross-sells-product.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/cart/cart-cross-sells-product-list/cart-cross-sells-product.tsx
index 8adde07e84c..e362a5baa89 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/cart/cart-cross-sells-product-list/cart-cross-sells-product.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/cart/cart-cross-sells-product-list/cart-cross-sells-product.tsx
@@ -10,12 +10,12 @@ import { ProductResponseItem } from '@woocommerce/types';
/**
* Internal dependencies
*/
-import { Block as ProductImage } from '../../../atomic/blocks/product-elements/image/block';
-import { Block as ProductName } from '../../../atomic/blocks/product-elements/title/block';
-import { Block as ProductRating } from '../../../atomic/blocks/product-elements/rating-stars/block';
-import { Block as ProductPrice } from '../../../atomic/blocks/product-elements/price/block';
-import { Block as ProductButton } from '../../../atomic/blocks/product-elements/button/block';
-import { ImageSizing } from '../../../atomic/blocks/product-elements/image/types';
+import { Block as ProductImage } from '../../product-elements-blocks/image/block';
+import { Block as ProductName } from '../../product-elements-blocks/title/block';
+import { Block as ProductRating } from '../../product-elements-blocks/rating-stars/block';
+import { Block as ProductPrice } from '../../product-elements-blocks/price/block';
+import { Block as ProductButton } from '../../product-elements-blocks/button/block';
+import { ImageSizing } from '../../product-elements-blocks/image/types';
interface CrossSellsProductProps {
product: ProductResponseItem;
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/cart/frontend.js b/plugins/woocommerce/client/blocks/assets/js/blocks/cart/frontend.js
index 0c75b795128..ed80fce1af1 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/cart/frontend.js
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/cart/frontend.js
@@ -6,7 +6,7 @@ import { Children, cloneElement, isValidElement } from '@wordpress/element';
import { useStoreCart } from '@woocommerce/base-context';
import { getRegisteredBlockComponents } from '@woocommerce/blocks-registry';
-import { renderParentBlock } from '@woocommerce/atomic-utils';
+import { renderParentBlock } from '@woocommerce/utils/render-parent-block';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/test/block.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/test/block.ts
index 1998298e92d..72702c5e3cd 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/test/block.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/test/block.ts
@@ -8,11 +8,11 @@ import { registerCoreBlocks } from '@wordpress/block-library';
*/
import { createCrossSellsProductCollection } from '../index';
import crossSells from '../../../../product-collection/collections/cross-sells';
-import '../../../../../atomic/blocks/product-elements/sale-badge/index';
-import '../../../../../atomic/blocks/product-elements/image/index';
-import '../../../../../atomic/blocks/product-elements/price/index';
-import '../../../../../atomic/blocks/product-elements/button/index';
-import '../../../../../atomic/blocks/product-elements/title/index';
+import '../../../../product-elements-blocks/sale-badge/index';
+import '../../../../product-elements-blocks/image/index';
+import '../../../../product-elements-blocks/price/index';
+import '../../../../product-elements-blocks/button/index';
+import '../../../../product-elements-blocks/title/index';
import '../../../../product-template/index';
import '../../../../product-collection/index';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/cart/test/editor-integration.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/cart/test/editor-integration.tsx
index aeac4fc587b..6bd0953ac54 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/cart/test/editor-integration.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/cart/test/editor-integration.tsx
@@ -21,11 +21,11 @@ import '../index';
import '../inner-blocks/index';
import '../inner-blocks/cart-order-summary-coupon-form/index';
import '../../product-new/index';
-import '../../../atomic/blocks/product-elements/sale-badge/index';
-import '../../../atomic/blocks/product-elements/image/index';
-import '../../../atomic/blocks/product-elements/price/index';
-import '../../../atomic/blocks/product-elements/button/index';
-import '../../../atomic/blocks/product-elements/title/index';
+import '../../product-elements-blocks/sale-badge/index';
+import '../../product-elements-blocks/image/index';
+import '../../product-elements-blocks/price/index';
+import '../../product-elements-blocks/button/index';
+import '../../product-elements-blocks/title/index';
import '../../product-template/index.tsx';
import '../../product-collection/index.tsx';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/checkout/frontend.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/checkout/frontend.tsx
index 6ab96e1f549..d3d3b7dbb9c 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/checkout/frontend.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/checkout/frontend.tsx
@@ -9,7 +9,7 @@ import {
useValidation,
} from '@woocommerce/base-context/hooks';
import { getRegisteredBlockComponents } from '@woocommerce/blocks-registry';
-import { renderParentBlock } from '@woocommerce/atomic-utils';
+import { renderParentBlock } from '@woocommerce/utils/render-parent-block';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/classic-shortcode/test/block.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/classic-shortcode/test/block.ts
index 82037a643c5..382ecb3f99b 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/classic-shortcode/test/block.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/classic-shortcode/test/block.ts
@@ -13,11 +13,11 @@ import '../';
import '../../cart';
import '../../checkout';
import '../../product-new';
-import '../../../atomic/blocks/product-elements/sale-badge/index';
-import '../../../atomic/blocks/product-elements/image/index';
-import '../../../atomic/blocks/product-elements/price/index';
-import '../../../atomic/blocks/product-elements/button/index';
-import '../../../atomic/blocks/product-elements/title/index';
+import '../../product-elements-blocks/sale-badge/index';
+import '../../product-elements-blocks/image/index';
+import '../../product-elements-blocks/price/index';
+import '../../product-elements-blocks/button/index';
+import '../../product-elements-blocks/title/index';
import '../../product-template/index.tsx';
import '../../product-collection/index.tsx';
import { initializeEditor } from '../../../../../tests/integration/helpers/integration-test-editor';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/filter-wrapper/frontend.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/filter-wrapper/frontend.ts
index d96f547b498..9ff36d4eca0 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/filter-wrapper/frontend.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/filter-wrapper/frontend.ts
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { renderParentBlock } from '@woocommerce/atomic-utils';
+import { renderParentBlock } from '@woocommerce/utils/render-parent-block';
import { getRegisteredBlockComponents } from '@woocommerce/blocks-registry';
/**
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-collection/variations/elements/product-summary.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-collection/variations/elements/product-summary.tsx
index 77cc679e26a..6695593ee03 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-collection/variations/elements/product-summary.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-collection/variations/elements/product-summary.tsx
@@ -11,7 +11,7 @@ import { registerElementVariation } from './utils';
import {
BLOCK_DESCRIPTION,
BLOCK_TITLE,
-} from '../../../../atomic/blocks/product-elements/summary/constants';
+} from '../../../product-elements-blocks/summary/constants';
import blockJson from '../../block.json';
export const CORE_NAME = 'core/post-excerpt';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-collection/variations/elements/product-title.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-collection/variations/elements/product-title.tsx
index ad6cca36fd6..ef3fa76b93b 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-collection/variations/elements/product-title.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-collection/variations/elements/product-title.tsx
@@ -6,7 +6,7 @@ import { heading } from '@wordpress/icons';
import {
title,
description,
-} from '@woocommerce/atomic-blocks/product-elements/title/block.json';
+} from '@woocommerce/product-elements/title/block.json';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-description/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-description/index.tsx
index a12073a4801..e466bbd930c 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-description/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-description/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-details/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-details/index.tsx
index f99916c8a56..b36a36b374d 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-details/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-details/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/README.md b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/README.md
new file mode 100644
index 00000000000..75f7aaf0732
--- /dev/null
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/README.md
@@ -0,0 +1,13 @@
+# Product element blocks
+
+Product element blocks show parts of a product, such as its image, title, price, rating, and add to cart button. They can be used as inner blocks in Product Collection, Single Product, and Product Gallery to build product displays.
+
+## Structure
+
+Each element has its own directory with block metadata and the code needed for editing, saving, and rendering it. Shared editor code lives in `shared/`. The root `index.js` imports the element registration files, while `component-init.js` registers components that are loaded when needed. `frontend.ts` contains the shared product element callback for interactive updates.
+
+Shared block registration and rendering helpers live in dedicated files under `assets/js/utils/` because they are also used outside this directory. Import elements through `@woocommerce/product-elements` and helpers from their `@woocommerce/utils/<file>` paths.
+
+## Adding an element
+
+Place the block in its own directory, define its metadata in `block.json`, and register it with `registerProductBlockType` when it needs the product block registration behavior. Add its entry to the root `index.js`; if it has a component loaded when needed, register that in `component-init.js` too. Keep existing block names and asset handles stable because saved content and extensions can depend on them.
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/average-rating/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/average-rating/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/average-rating/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/average-rating/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/average-rating/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/average-rating/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/average-rating/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/average-rating/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/average-rating/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/average-rating/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/average-rating/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/average-rating/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/average-rating/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/average-rating/index.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/average-rating/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/average-rating/index.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/block.tsx
similarity index 98%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/block.tsx
index 5e72c1f4203..b9958778623 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/block.tsx
@@ -32,7 +32,7 @@ import type {
AddToCartButtonPlaceholderAttributes,
AddToCartProductDetails,
} from './types';
-import { useProductTypeSelector } from '../../../../shared/stores/product-type-template-state';
+import { useProductTypeSelector } from '../../../shared/stores/product-type-template-state';
const getButtonText = ( {
cartQuantity,
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/deprecated.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/deprecated.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/deprecated.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/deprecated.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/frontend.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/frontend.ts
similarity index 99%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/frontend.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/frontend.ts
index 3c6774a7f17..0a6d21111fc 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/frontend.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/frontend.ts
@@ -12,7 +12,7 @@ import type { ProductsStore } from '@woocommerce/stores/woocommerce/products';
import type {
Context as AddToCartWithOptionsContext,
AddToCartWithOptionsStore,
-} from '../../../../blocks/add-to-cart-with-options/frontend';
+} from '../../add-to-cart-with-options/frontend';
// Stores are locked to prevent 3PD usage until the API is stable.
const universalLock =
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/index.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/index.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/test/block.test.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/test/block.test.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/test/block.test.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/test/block.test.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/button/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/component-init.js b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/component-init.js
similarity index 60%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/component-init.js
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/component-init.js
index f469971e500..b2f45d50982 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/component-init.js
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/component-init.js
@@ -12,36 +12,28 @@ __webpack_public_path__ = WC_BLOCKS_BUILD_URL;
registerBlockComponent( {
blockName: 'woocommerce/product-price',
component: lazy( () =>
- import(
- /* webpackChunkName: "product-price" */ './product-elements/price/block'
- )
+ import( /* webpackChunkName: "product-price" */ './price/block' )
),
} );
registerBlockComponent( {
blockName: 'woocommerce/product-image',
component: lazy( () =>
- import(
- /* webpackChunkName: "product-image" */ './product-elements/image/frontend'
- )
+ import( /* webpackChunkName: "product-image" */ './image/frontend' )
),
} );
registerBlockComponent( {
blockName: 'woocommerce/product-title',
component: lazy( () =>
- import(
- /* webpackChunkName: "product-title" */ './product-elements/title/frontend'
- )
+ import( /* webpackChunkName: "product-title" */ './title/frontend' )
),
} );
registerBlockComponent( {
blockName: 'woocommerce/product-rating',
component: lazy( () =>
- import(
- /* webpackChunkName: "product-rating" */ './product-elements/rating/block'
- )
+ import( /* webpackChunkName: "product-rating" */ './rating/block' )
),
} );
@@ -49,7 +41,7 @@ registerBlockComponent( {
blockName: 'woocommerce/product-rating-stars',
component: lazy( () =>
import(
- /* webpackChunkName: "product-rating-stars" */ './product-elements/rating-stars/block'
+ /* webpackChunkName: "product-rating-stars" */ './rating-stars/block'
)
),
} );
@@ -58,7 +50,7 @@ registerBlockComponent( {
blockName: 'woocommerce/product-rating-counter',
component: lazy( () =>
import(
- /* webpackChunkName: "product-rating-counter" */ './product-elements/rating-counter/block'
+ /* webpackChunkName: "product-rating-counter" */ './rating-counter/block'
)
),
} );
@@ -67,7 +59,7 @@ registerBlockComponent( {
blockName: 'woocommerce/product-average-rating',
component: lazy( () =>
import(
- /* webpackChunkName: "product-average-rating" */ './product-elements/average-rating/block'
+ /* webpackChunkName: "product-average-rating" */ './average-rating/block'
)
),
} );
@@ -75,18 +67,14 @@ registerBlockComponent( {
registerBlockComponent( {
blockName: 'woocommerce/product-button',
component: lazy( () =>
- import(
- /* webpackChunkName: "product-button" */ './product-elements/button/block'
- )
+ import( /* webpackChunkName: "product-button" */ './button/block' )
),
} );
registerBlockComponent( {
blockName: 'woocommerce/product-summary',
component: lazy( () =>
- import(
- /* webpackChunkName: "product-summary" */ './product-elements/summary/block'
- )
+ import( /* webpackChunkName: "product-summary" */ './summary/block' )
),
} );
@@ -94,7 +82,7 @@ registerBlockComponent( {
blockName: 'woocommerce/product-sale-badge',
component: lazy( () =>
import(
- /* webpackChunkName: "product-sale-badge" */ './product-elements/sale-badge/block'
+ /* webpackChunkName: "product-sale-badge" */ './sale-badge/block'
)
),
} );
@@ -102,9 +90,7 @@ registerBlockComponent( {
registerBlockComponent( {
blockName: 'woocommerce/product-sku',
component: lazy( () =>
- import(
- /* webpackChunkName: "product-sku" */ './product-elements/sku/block'
- )
+ import( /* webpackChunkName: "product-sku" */ './sku/block' )
),
} );
@@ -112,7 +98,7 @@ registerBlockComponent( {
blockName: 'woocommerce/product-stock-indicator',
component: lazy( () =>
import(
- /* webpackChunkName: "product-stock-indicator" */ './product-elements/stock-indicator/block'
+ /* webpackChunkName: "product-stock-indicator" */ './stock-indicator/block'
)
),
} );
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/frontend.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/frontend.ts
similarity index 96%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/frontend.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/frontend.ts
index ea981e45ce9..826ff531770 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/frontend.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/frontend.ts
@@ -12,7 +12,7 @@ import type { ProductResponseItem } from '@woocommerce/types';
import {
swapPreformattedHtml,
PRODUCT_ELEMENT_HTML_CONFIG,
-} from '../../../base/utils/preformatted-html';
+} from '../../base/utils/preformatted-html';
// Stores are locked to prevent 3PD usage until the API is stable.
const universalLock =
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/constants.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/constants.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/constants.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/constants.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/deprecated.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/deprecated.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/deprecated.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/deprecated.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/frontend.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/frontend.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/frontend.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/frontend.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/image-size-settings.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/image-size-settings.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/image-size-settings.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/image-size-settings.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/index.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/index.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/test/block.test.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/test/block.test.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/test/block.test.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/test/block.test.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/test/utils.test.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/test/utils.test.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/test/utils.test.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/test/utils.test.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/utils.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/utils.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/utils.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/image/utils.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/index.js b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/index.js
new file mode 100644
index 00000000000..a3fc4cdb4e1
--- /dev/null
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/index.js
@@ -0,0 +1,18 @@
+/**
+ * Internal dependencies
+ */
+import './title';
+import './price';
+import './image';
+import './rating';
+import './rating-stars';
+import './rating-counter';
+import './average-rating';
+import './button';
+import './summary';
+import './sale-badge';
+import './sku';
+import './stock-indicator';
+import './product-image-gallery';
+import './related-products';
+import './product-meta';
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/deprecated.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/deprecated.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/deprecated.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/deprecated.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/index.tsx
similarity index 84%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/index.tsx
index f8377843f6d..e4bb58517eb 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import { currencyDollar, Icon } from '@wordpress/icons';
/**
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/test/block.test.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/test/block.test.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/test/block.test.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/test/block.test.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/price/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/price/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/edit-utils.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/edit-utils.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/edit-utils.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/edit-utils.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/editor.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/editor.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/editor.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/editor.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/index.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/index.ts
similarity index 86%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/index.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/index.ts
index b1abb1d8580..210047434a1 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/index.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/index.ts
@@ -2,7 +2,7 @@
* External dependencies
*/
import { gallery as icon } from '@wordpress/icons';
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import { createBlock } from '@wordpress/blocks';
/**
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/upgrade-notice.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/upgrade-notice.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/upgrade-notice.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-image-gallery/upgrade-notice.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/editor.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/editor.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/editor.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/editor.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/index.tsx
similarity index 85%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/index.tsx
index 11afe496d8f..6b17a4fc2b3 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import { Icon } from '@wordpress/icons';
import { productMeta } from '@woocommerce/icons';
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/save.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/save.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/product-meta/save.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/product-meta/save.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/index.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/index.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-counter/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/index.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/index.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating-stars/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/constants.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/constants.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/constants.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/constants.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/deprecated.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/deprecated.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/deprecated.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/deprecated.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/editor.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/editor.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/editor.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/editor.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/index.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/index.ts
similarity index 84%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/index.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/index.ts
index d9b0faa38e4..587f4648c74 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/index.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/index.ts
@@ -2,7 +2,7 @@
* External dependencies
*/
import type { BlockConfiguration } from '@wordpress/blocks';
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/rating/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/editor.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/editor.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/editor.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/editor.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/index.tsx
similarity index 81%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/index.tsx
index c59c35834f0..fed2ab5dbc2 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/index.tsx
@@ -2,7 +2,7 @@
* External dependencies
*/
import { box as icon } from '@wordpress/icons';
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/save.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/save.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/related-products/save.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/related-products/save.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/deprecated.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/deprecated.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/deprecated.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/deprecated.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/index.tsx
similarity index 83%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/index.tsx
index a57f2f0f0f8..9771bce1202 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import { percent, Icon } from '@wordpress/icons';
/**
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sale-badge/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/save.js b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/save.js
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/save.js
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/save.js
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/shared/editor.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/shared/editor.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/shared/editor.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/shared/editor.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/shared/product-selector.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/shared/product-selector.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/shared/product-selector.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/shared/product-selector.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/shared/use-is-descendent-of-single-product-block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/shared/use-is-descendent-of-single-product-block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-template.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/shared/use-is-descendent-of-single-product-template.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-template.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/shared/use-is-descendent-of-single-product-template.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/editor.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/editor.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/editor.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/editor.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/index.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/index.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sku/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/sku/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/block.tsx
similarity index 97%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/block.tsx
index 00448ca5421..24d9e1a66ed 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/block.tsx
@@ -16,7 +16,7 @@ import { getSetting } from '@woocommerce/settings';
/**
* Internal dependencies
*/
-import { useProductTypeSelector } from '../../../../shared/stores/product-type-template-state';
+import { useProductTypeSelector } from '../../../shared/stores/product-type-template-state';
import type { BlockAttributes } from './types';
import './style.scss';
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/constants.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/constants.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/constants.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/constants.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/index.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/index.ts
similarity index 82%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/index.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/index.ts
index 53034d0a6c4..4e6d1b176a7 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/index.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/index.ts
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import type { BlockConfiguration } from '@wordpress/blocks';
/**
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/test/block.test.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/test/block.test.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/test/block.test.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/test/block.test.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/stock-indicator/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/stock-indicator/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/constants.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/constants.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/constants.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/constants.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/editor.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/editor.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/editor.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/editor.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/index.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/index.ts
similarity index 93%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/index.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/index.ts
index e93eb8aff5c..638e75270af 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/index.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/index.ts
@@ -2,7 +2,7 @@
* External dependencies
*/
import type { BlockAttributes } from '@wordpress/blocks';
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import { isEmptyObject } from '@woocommerce/types';
/**
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/upgrade.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/upgrade.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/summary/upgrade.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/summary/upgrade.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/block.json
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/block.json
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/block.json
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/block.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/constants.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/constants.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/constants.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/constants.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/edit.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/edit.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/edit.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/editor.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/editor.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/editor.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/editor.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/frontend.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/frontend.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/frontend.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/frontend.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/index.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/index.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/index.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/save.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/save.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/save.tsx
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/save.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/style.scss
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/style.scss
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/style.scss
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/test/block.test.js b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/test/block.test.js
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/test/block.test.js
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/test/block.test.js
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/types.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/types.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/types.ts
rename to plugins/woocommerce/client/blocks/assets/js/blocks/product-elements-blocks/title/types.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/edit.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/edit.tsx
index e997076e38e..4f0b3ab882c 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/edit.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/edit.tsx
@@ -23,8 +23,8 @@ import clsx from 'clsx';
*/
import { ProductGalleryBlockSettings } from './block-settings/index';
import type { ProductGalleryBlockAttributes } from './types';
-import { resolveAspectRatio } from '../../atomic/blocks/product-elements/image/utils';
-import type { BlockAttributes as ProductImageBlockAttributes } from '../../atomic/blocks/product-elements/image/types';
+import { resolveAspectRatio } from '../product-elements-blocks/image/utils';
+import type { BlockAttributes as ProductImageBlockAttributes } from '../product-elements-blocks/image/types';
const TEMPLATE: InnerBlockTemplate[] = [
[ 'woocommerce/product-gallery-thumbnails' ],
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/index.tsx
index 7dbec52116b..8bc95fd5519 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/test/block.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/test/block.ts
index ee3ecf02e75..f9eade60479 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/test/block.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-gallery/test/block.ts
@@ -17,8 +17,8 @@ import '../inner-blocks/product-gallery-large-image';
import '../inner-blocks/product-gallery-thumbnails';
import '../../next-previous-buttons';
import '../../single-product';
-import '../../../atomic/blocks/product-elements/image';
-import '../../../atomic/blocks/product-elements/sale-badge';
+import '../../product-elements-blocks/image';
+import '../../product-elements-blocks/sale-badge';
// Setup MSW
const handlers = [
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/elements/product-summary.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/elements/product-summary.tsx
index 7161dd614ee..315007c3c2e 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/elements/product-summary.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/elements/product-summary.tsx
@@ -6,7 +6,7 @@ import { page } from '@wordpress/icons';
import {
BLOCK_DESCRIPTION,
BLOCK_TITLE,
-} from '@woocommerce/atomic-blocks/product-elements/summary/constants';
+} from '@woocommerce/product-elements/summary/constants';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/elements/product-title.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/elements/product-title.tsx
index 4c21a963dbd..235bfbcae40 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/elements/product-title.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/elements/product-title.tsx
@@ -5,7 +5,7 @@ import { Icon } from '@wordpress/components';
import {
title,
description,
-} from '@woocommerce/atomic-blocks/product-elements/title/block.json';
+} from '@woocommerce/product-elements/title/block.json';
import { heading } from '@wordpress/icons';
/**
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/related-products.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/related-products.tsx
index 2a117ac18e0..6752739398f 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/related-products.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-query/variations/related-products.tsx
@@ -5,7 +5,7 @@ import { BlockAttributes, InnerBlockTemplate } from '@wordpress/blocks';
import { Icon } from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { stacks } from '@woocommerce/icons';
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
import { getSettingWithCoercion } from '@woocommerce/settings';
import { isBoolean } from '@woocommerce/types';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-reviews/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-reviews/index.tsx
index a44ef362d53..d70e8a1f9d2 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-reviews/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-reviews/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/product-specifications/index.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/product-specifications/index.tsx
index 4aaf839028a..a4fab5b1ed9 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/product-specifications/index.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/product-specifications/index.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { registerProductBlockType } from '@woocommerce/atomic-utils';
+import { registerProductBlockType } from '@woocommerce/utils/register-product-block-type';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/products/all-products/edit.js b/plugins/woocommerce/client/blocks/assets/js/blocks/products/all-products/edit.js
index 9967c25797e..8ac570967ab 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/products/all-products/edit.js
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/products/all-products/edit.js
@@ -22,7 +22,7 @@ import { withDispatch, withSelect } from '@wordpress/data';
import { useState } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import { Icon, grid } from '@wordpress/icons';
-import { getBlockMap } from '@woocommerce/atomic-utils';
+import { getBlockMap } from '@woocommerce/utils/get-block-map';
import { blocksConfig } from '@woocommerce/block-settings';
import GridLayoutControl from '@woocommerce/editor-components/grid-layout-control';
import { previewProducts } from '@woocommerce/resource-previews';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/products/all-products/index.js b/plugins/woocommerce/client/blocks/assets/js/blocks/products/all-products/index.js
index 659c21724a9..3d1e8296bfa 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/products/all-products/index.js
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/products/all-products/index.js
@@ -3,7 +3,7 @@
*/
import { registerBlockType } from '@wordpress/blocks';
import { Icon, grid } from '@wordpress/icons';
-import '@woocommerce/atomic-blocks';
+import '@woocommerce/product-elements';
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/products/base-utils.js b/plugins/woocommerce/client/blocks/assets/js/blocks/products/base-utils.js
index 84b2bf23fff..090c29457b3 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/products/base-utils.js
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/products/base-utils.js
@@ -6,7 +6,7 @@ import clsx from 'clsx';
/**
* Internal dependencies
*/
-import addToCartButtonMetadata from '../../atomic/blocks/product-elements/button/block.json';
+import addToCartButtonMetadata from '../product-elements-blocks/button/block.json';
/**
* The default layout built from the default template.
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/saved-for-later/frontend.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/saved-for-later/frontend.ts
index 557789d0d09..0035f4ca618 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/saved-for-later/frontend.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/saved-for-later/frontend.ts
@@ -280,7 +280,7 @@ store< BlockStore >(
// Single shared innerHTML-swap callback for any slot whose
// content is one of the schema's preformatted HTML fields.
- // Mirrors the atomic product-elements `updateValue` callback:
+ // Mirrors the product elements `updateValue` callback:
// the watched element carries `data-wp-context='{"htmlField":"price_html"}'`
// (or `"image_html"`), and this callback reads that field
// off the row's `listItem` and pastes its sanitized HTML into
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/saved-for-later/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/saved-for-later/style.scss
index 914cdd49153..22ef1edb801 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/saved-for-later/style.scss
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/saved-for-later/style.scss
@@ -1,7 +1,7 @@
// Frontend stylesheet for the Saved for Later block.
// Layout rules for `.wc-block-components-product-image`,
// `.wc-block-components-product-price` and `.wc-block-components-product-button`
-// come from the atomic product-image / -price / -button blocks' stylesheets,
+// come from the product image, price, and button blocks' stylesheets,
// which we declare as style dependencies in `block.json` so WordPress
// enqueues them whenever this block renders. Don't duplicate those rules here.
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/shopper-lists/_item.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/shopper-lists/_item.scss
index 5a61327a83e..e651cf64101 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/shopper-lists/_item.scss
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/shopper-lists/_item.scss
@@ -5,7 +5,7 @@
// Layout rules for `.wc-block-components-product-image`,
// `.wc-block-components-product-price` and `.wc-block-components-product-button`
-// come from the atomic product-image / -price / -button blocks' stylesheets,
+// come from the product image, price, and button blocks' stylesheets,
// which the consuming blocks declare as style dependencies in `block.json`.
// Don't duplicate those rules here.
@@ -25,7 +25,7 @@
pointer-events: none;
}
- // The atomic product-button's `display: flex` outspecifies `[hidden]`,
+ // The product button's `display: flex` outspecifies `[hidden]`,
// so the action wrapper (Move to cart / Add to cart) wouldn't honor
// `hidden` without this.
.wp-block-button.wc-block-components-product-button[hidden] {
@@ -41,7 +41,7 @@
margin: 0 0 0.75rem;
}
- // Quantity has no atomic equivalent in Product Collection, so we own
+ // Quantity has no product element equivalent in Product Collection, so we own
// its styling. Center-aligned and small to mirror the rest of the row
// (price + button use the WP `has-small-font-size` preset). Only the
// Saved for Later block renders this element — Wishlist omits it — but
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/single-product/constants.tsx b/plugins/woocommerce/client/blocks/assets/js/blocks/single-product/constants.tsx
index d3d94ff3039..82f284c270c 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/single-product/constants.tsx
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/single-product/constants.tsx
@@ -2,7 +2,7 @@
* External dependencies
*/
import { Icon, mediaAndText } from '@wordpress/icons';
-import { getBlockMap } from '@woocommerce/atomic-utils';
+import { getBlockMap } from '@woocommerce/utils/get-block-map';
import { getSetting } from '@woocommerce/settings';
import type { InnerBlockTemplate } from '@wordpress/blocks';
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/single-product/test/block.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/single-product/test/block.ts
index adce209fbba..df0027f09e5 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/single-product/test/block.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/single-product/test/block.ts
@@ -12,8 +12,8 @@ import { setupServer } from 'msw/node';
import { initializeEditor } from '../../../../../tests/integration/helpers/integration-test-editor';
import { textContentMatcher } from '../../../../../tests/utils/find-by-text';
import '../';
-import '../../../atomic/blocks/product-elements/price';
-import '../../../atomic/blocks/product-elements/summary';
+import '../../product-elements-blocks/price';
+import '../../product-elements-blocks/summary';
const mockProduct = {
id: 82,
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/wishlist/frontend.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/wishlist/frontend.ts
index bd291d14267..9db6a280ec5 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/wishlist/frontend.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/wishlist/frontend.ts
@@ -240,7 +240,7 @@ store< BlockStore >(
callbacks: {
// Single shared innerHTML-swap callback for any slot whose
// content is one of the schema's preformatted HTML fields.
- // Mirrors the atomic product-elements `updateValue` callback:
+ // Mirrors the product elements `updateValue` callback:
// the watched element carries `data-wp-context='{"htmlField":"price_html"}'`
// (or `"image_html"`), and this callback reads that field
// off the row's `listItem` and pastes its sanitized HTML into
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/wishlist/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/wishlist/style.scss
index 9edb9243b73..5ff75c902da 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/wishlist/style.scss
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/wishlist/style.scss
@@ -1,7 +1,7 @@
// Frontend stylesheet for the Wishlist block.
// Layout rules for `.wc-block-components-product-image`,
// `.wc-block-components-product-price` and `.wc-block-components-product-button`
-// come from the atomic product-image / -price / -button blocks' stylesheets,
+// come from the product image, price, and button blocks' stylesheets,
// which we declare as style dependencies in `block.json` so WordPress
// enqueues them whenever this block renders. Don't duplicate those rules here.
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/get-block-map.ts b/plugins/woocommerce/client/blocks/assets/js/utils/get-block-map.ts
similarity index 89%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/utils/get-block-map.ts
rename to plugins/woocommerce/client/blocks/assets/js/utils/get-block-map.ts
index 1dc8db8b773..1deba775658 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/get-block-map.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/utils/get-block-map.ts
@@ -7,7 +7,7 @@ import type { RegisteredBlockComponent } from '@woocommerce/types';
/**
* Internal dependencies
*/
-import '../blocks/component-init';
+import '../blocks/product-elements-blocks/component-init';
/**
* Map named Blocks to defined React Components to render on the frontend.
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/register-product-block-type.ts b/plugins/woocommerce/client/blocks/assets/js/utils/register-product-block-type.ts
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/utils/register-product-block-type.ts
rename to plugins/woocommerce/client/blocks/assets/js/utils/register-product-block-type.ts
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/render-parent-block.tsx b/plugins/woocommerce/client/blocks/assets/js/utils/render-parent-block.tsx
similarity index 100%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/utils/render-parent-block.tsx
rename to plugins/woocommerce/client/blocks/assets/js/utils/render-parent-block.tsx
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/test/register-product-block-type.test.ts b/plugins/woocommerce/client/blocks/assets/js/utils/test/register-product-block-type.test.ts
similarity index 93%
rename from plugins/woocommerce/client/blocks/assets/js/atomic/utils/test/register-product-block-type.test.ts
rename to plugins/woocommerce/client/blocks/assets/js/utils/test/register-product-block-type.test.ts
index fb8042b1238..ce19ed252c1 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/utils/test/register-product-block-type.test.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/utils/test/register-product-block-type.test.ts
@@ -88,7 +88,7 @@ describe( 'registerProductBlockType', () => {
};
jest.doMock( '@wordpress/blocks', getBlocksMock );
jest.doMock( '@wordpress/data', getDataMock );
- jest.dontMock( '@woocommerce/atomic-utils' );
+ jest.dontMock( '@woocommerce/utils/register-product-block-type' );
} );
it( 'registers only post-editor-enabled blocks with the Single Product ancestor', () => {
@@ -254,16 +254,16 @@ describe( 'product block registration call sites', () => {
jest.clearAllMocks();
jest.dontMock( '@wordpress/blocks' );
jest.dontMock( '@wordpress/data' );
- jest.doMock( '@woocommerce/atomic-utils', () => ( {
+ jest.doMock( '@woocommerce/utils/register-product-block-type', () => ( {
registerProductBlockType: mockRegisterProductBlockTypeCallSite,
} ) );
} );
it( 'declares the post-editor availability of Product Price and Product Image Gallery', () => {
jest.isolateModules( () => {
- jest.requireActual( '../../blocks/product-elements/price' );
+ jest.requireActual( '../../blocks/product-elements-blocks/price' );
jest.requireActual(
- '../../blocks/product-elements/product-image-gallery'
+ '../../blocks/product-elements-blocks/product-image-gallery'
);
} );
@@ -286,17 +286,17 @@ describe( 'product block registration call sites', () => {
// The editor components load the block editor and the Product Query
// variations, which log to the console and aren't part of registration.
jest.doMock(
- '../../blocks/product-elements/related-products/edit',
+ '../../blocks/product-elements-blocks/related-products/edit',
() => () => null
);
jest.doMock(
- '../../blocks/product-elements/related-products/save',
+ '../../blocks/product-elements-blocks/related-products/save',
() => () => null
);
jest.isolateModules( () => {
jest.requireActual(
- '../../blocks/product-elements/related-products'
+ '../../blocks/product-elements-blocks/related-products'
);
} );
@@ -315,11 +315,11 @@ describe( 'product block registration call sites', () => {
it( 'declares the Product Details block available in the post editor', () => {
// The editor components pull in the block editor, which logs a duplicate Yjs
// import when loaded inside isolateModules, and they aren't part of registration.
- jest.doMock( '../../../blocks/product-details/edit', () => () => null );
- jest.doMock( '../../../blocks/product-details/save', () => () => null );
+ jest.doMock( '../../blocks/product-details/edit', () => () => null );
+ jest.doMock( '../../blocks/product-details/save', () => () => null );
jest.isolateModules( () => {
- jest.requireActual( '../../../blocks/product-details' );
+ jest.requireActual( '../../blocks/product-details' );
} );
expect( mockRegisterProductBlockTypeCallSite ).toHaveBeenCalledTimes(
diff --git a/plugins/woocommerce/client/blocks/bin/webpack-config-interactive-blocks.js b/plugins/woocommerce/client/blocks/bin/webpack-config-interactive-blocks.js
index 2250ee96bc2..c2df378ad88 100644
--- a/plugins/woocommerce/client/blocks/bin/webpack-config-interactive-blocks.js
+++ b/plugins/woocommerce/client/blocks/bin/webpack-config-interactive-blocks.js
@@ -41,7 +41,7 @@ const entries = {
...editorStyleEntries,
// Product elements frontend module. Share by several blocks.
'woocommerce/product-elements':
- './assets/js/atomic/blocks/product-elements/frontend.ts',
+ './assets/js/blocks/product-elements-blocks/frontend.ts',
// Add to cart with options quantity selector frontend module used by the
// Product Quantity block and the Grouped Product Selector block.
'woocommerce/add-to-cart-with-options-quantity-selector':
diff --git a/plugins/woocommerce/client/blocks/bin/webpack-configs.js b/plugins/woocommerce/client/blocks/bin/webpack-configs.js
index d65028ae9ab..0969ad3f962 100644
--- a/plugins/woocommerce/client/blocks/bin/webpack-configs.js
+++ b/plugins/woocommerce/client/blocks/bin/webpack-configs.js
@@ -862,7 +862,7 @@ const getCartAndCheckoutFrontendConfig = ( options = {} ) => {
},
base: {
// A refined include blocks and settings that are shared between cart and checkout that produces the smallest possible bundle.
- test: /assets[\\/]js[\\/](settings|previews|base|utils|blocks[\\/]cart-checkout-shared|icons)|packages[\\/]public-api[\\/](block-data|blocks-checkout|blocks-components|settings)[\\/]|atomic[\\/]utils/,
+ test: /assets[\\/]js[\\/](settings|previews|base|utils|blocks[\\/]cart-checkout-shared|icons)|packages[\\/]public-api[\\/](block-data|blocks-checkout|blocks-components|settings)[\\/]/,
name: 'wc-cart-checkout-base',
chunks: 'all',
enforce: true,
diff --git a/plugins/woocommerce/client/blocks/bin/webpack-entries.js b/plugins/woocommerce/client/blocks/bin/webpack-entries.js
index 78b4cd48f11..0318fa6fc6b 100644
--- a/plugins/woocommerce/client/blocks/bin/webpack-entries.js
+++ b/plugins/woocommerce/client/blocks/bin/webpack-entries.js
@@ -351,7 +351,7 @@ const entries = {
// Blocks
'product-image-gallery':
- './assets/js/atomic/blocks/product-elements/product-image-gallery/index.ts',
+ './assets/js/blocks/product-elements-blocks/product-image-gallery/index.ts',
...blockStylingEntries,
},
diff --git a/plugins/woocommerce/client/blocks/bin/webpack-helpers.js b/plugins/woocommerce/client/blocks/bin/webpack-helpers.js
index 87a88e66c78..fc6a0c0fb04 100644
--- a/plugins/woocommerce/client/blocks/bin/webpack-helpers.js
+++ b/plugins/woocommerce/client/blocks/bin/webpack-helpers.js
@@ -51,13 +51,9 @@ const getAlias = ( options = {} ) => {
let { pathPart } = options;
pathPart = pathPart ? `${ pathPart }/` : '';
return {
- '@woocommerce/atomic-blocks': path.resolve(
+ '@woocommerce/product-elements': path.resolve(
__dirname,
- `../assets/js/${ pathPart }atomic/blocks`
- ),
- '@woocommerce/atomic-utils': path.resolve(
- __dirname,
- `../assets/js/${ pathPart }atomic/utils`
+ `../assets/js/${ pathPart }blocks/product-elements-blocks`
),
'@woocommerce/base-components': path.resolve(
__dirname,
diff --git a/plugins/woocommerce/client/blocks/docs/contributors/coding-guidelines.md b/plugins/woocommerce/client/blocks/docs/contributors/coding-guidelines.md
index e763bcb65a5..930451748b0 100644
--- a/plugins/woocommerce/client/blocks/docs/contributors/coding-guidelines.md
+++ b/plugins/woocommerce/client/blocks/docs/contributors/coding-guidelines.md
@@ -31,13 +31,13 @@ All class names assigned to an element must be prefixed. We use different prefix
As a rule of thumb, this is the relation between location in the source tree and class name used:
-| Location in the tree | Class names used | Can be styled by themes? |
-| --------------------------- | ------------------------------ | :----------------------: |
-| assets/js/atomic/blocks | `.wc-block-components-` | ✓ |
-| assets/js/base/components | `.wc-block-components-` | ✓ |
-| assets/js/blocks | Frontend: `.wc-block-` | ✓ |
-| assets/js/blocks | Editor: `.wc-block-editor-` | ✘ |
-| assets/js/editor-components | `.wc-block-editor-components-` | ✘ |
+| Location in the tree | Class names used | Can be styled by themes? |
+| --------------------------------------- | ------------------------------ | :----------------------: |
+| assets/js/blocks/product-elements-blocks | `.wc-block-components-` | ✓ |
+| assets/js/base/components | `.wc-block-components-` | ✓ |
+| assets/js/blocks | Frontend: `.wc-block-` | ✓ |
+| assets/js/blocks | Editor: `.wc-block-editor-` | ✘ |
+| assets/js/editor-components | `.wc-block-editor-components-` | ✘ |
After the prefix, class names are built using BEM:
@@ -160,4 +160,3 @@ Notice in the worst case scenario we would have increased selector specificity b
🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce/issues/new?assignees=&labels=type%3A+documentation&template=suggestion-for-documentation-improvement-correction.md&title=Feedback%20on%20./docs/contributors/coding-guidelines.md)
<!-- /FEEDBACK -->
-
diff --git a/plugins/woocommerce/client/blocks/docs/contributors/folder-structure.md b/plugins/woocommerce/client/blocks/docs/contributors/folder-structure.md
index 3a4e4b66fd0..9e01547281e 100644
--- a/plugins/woocommerce/client/blocks/docs/contributors/folder-structure.md
+++ b/plugins/woocommerce/client/blocks/docs/contributors/folder-structure.md
@@ -85,9 +85,8 @@ The following snippet explains how the WooCommerce Blocks repository is structur
├── assets/js/_
│ The React components of the WooCommerce Blocks plugin.
│
-├── assets/js/atomic
-│ The atomic components such as product title, product rating, product
-│ image, etc. These atomic components are used by the product blocks.
+├── assets/js/utils
+│ Shared helpers, including product block registration and rendering.
│
├── assets/js/base
│ Base contains components specific to the frontend of the store.
@@ -98,6 +97,10 @@ The following snippet explains how the WooCommerce Blocks repository is structur
│ The main blocks of the WooCommerce Blocks plugin such as the Active
│ Filters Block.
│
+│ └── product-elements-blocks
+│ Reusable blocks for individual product elements such as title, rating,
+│ and image.
+│
├── assets/js/editor-components
│ Editor components such as the block-title component.
│
diff --git a/plugins/woocommerce/client/blocks/package.json b/plugins/woocommerce/client/blocks/package.json
index 85b43c81cb3..f0efae51fd9 100644
--- a/plugins/woocommerce/client/blocks/package.json
+++ b/plugins/woocommerce/client/blocks/package.json
@@ -19,7 +19,7 @@
"sideEffects": [
"*.css",
"*.scss",
- "./assets/js/atomic/blocks/**",
+ "./assets/js/blocks/product-elements-blocks/**",
"./assets/js/filters/**",
"./assets/js/middleware/**",
"./packages/public-api/types/**",
diff --git a/plugins/woocommerce/client/blocks/tests/js/jest.config.js b/plugins/woocommerce/client/blocks/tests/js/jest.config.js
index e52facc6b52..36469c234bf 100644
--- a/plugins/woocommerce/client/blocks/tests/js/jest.config.js
+++ b/plugins/woocommerce/client/blocks/tests/js/jest.config.js
@@ -56,8 +56,8 @@ module.exports = {
'@wordpress/core-data/build/(.*)$':
'<rootDir>/node_modules/@wordpress/core-data/build/$1',
- '@woocommerce/atomic-blocks': 'assets/js/atomic/blocks',
- '@woocommerce/atomic-utils': 'assets/js/atomic/utils',
+ '@woocommerce/product-elements':
+ 'assets/js/blocks/product-elements-blocks',
'@woocommerce/icons': 'assets/js/icons',
'^@woocommerce/settings/(.*)$': 'packages/public-api/settings/$1',
'^@woocommerce/settings$': 'packages/public-api/settings',
@@ -99,6 +99,7 @@ module.exports = {
'@woocommerce/blocks-test-utils': 'tests/utils',
'^@woocommerce/types/(.*)$': 'packages/public-api/types/$1',
'^@woocommerce/types$': 'packages/public-api/types',
+ '^@woocommerce/utils/(.*)$': 'assets/js/utils/$1',
'@woocommerce/utils': 'assets/js/utils',
'@woocommerce/test-utils/msw': 'tests/js/config/msw-setup.js',
'^@woocommerce/entities/(.*)$': 'packages/internal/entities/$1',
diff --git a/plugins/woocommerce/client/blocks/tsconfig.base.json b/plugins/woocommerce/client/blocks/tsconfig.base.json
index ae2543ec612..dc54b3f16f2 100644
--- a/plugins/woocommerce/client/blocks/tsconfig.base.json
+++ b/plugins/woocommerce/client/blocks/tsconfig.base.json
@@ -34,14 +34,11 @@
"jquery"
],
"paths": {
- "@woocommerce/atomic-blocks": [
- "assets/js/base/atomic/blocks"
+ "@woocommerce/product-elements": [
+ "assets/js/blocks/product-elements-blocks"
],
- "@woocommerce/atomic-blocks/*": [
- "assets/js/base/atomic/blocks/*"
- ],
- "@woocommerce/atomic-utils": [
- "assets/js/atomic/utils"
+ "@woocommerce/product-elements/*": [
+ "assets/js/blocks/product-elements-blocks/*"
],
"@woocommerce/base-components/*": [
"assets/js/base/components/*"
@@ -175,6 +172,9 @@
"@woocommerce/utils": [
"assets/js/utils"
],
+ "@woocommerce/utils/*": [
+ "assets/js/utils/*"
+ ],
"@woocommerce/e2e-utils": [
"../../tests/e2e/utils/blocks"
],
diff --git a/plugins/woocommerce/client/blocks/tsconfig.json b/plugins/woocommerce/client/blocks/tsconfig.json
index 1d94a6d5397..9fb7a1611a8 100644
--- a/plugins/woocommerce/client/blocks/tsconfig.json
+++ b/plugins/woocommerce/client/blocks/tsconfig.json
@@ -8,7 +8,6 @@
"./packages/internal/**/*",
"./assets/js/middleware/**/*",
"./assets/js/blocks/**/block.json",
- "./assets/js/atomic/blocks/**/block.json",
"./assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/**/block.json",
"./storybook/**/*",
"./tests/integration/**/*",
diff --git a/plugins/woocommerce/phpstan-baseline.neon b/plugins/woocommerce/phpstan-baseline.neon
index d1cfdc8c228..7ffab833507 100644
--- a/plugins/woocommerce/phpstan-baseline.neon
+++ b/plugins/woocommerce/phpstan-baseline.neon
@@ -49270,12 +49270,6 @@ parameters:
count: 1
path: src/Blocks/BlockTypes/AllReviews.php
- -
- message: '#^Return type \(null\) of method Automattic\\WooCommerce\\Blocks\\BlockTypes\\AtomicBlock\:\:get_block_type_editor_script\(\) should be compatible with return type \(array\|string\) of method Automattic\\WooCommerce\\Blocks\\BlockTypes\\AbstractBlock\:\:get_block_type_editor_script\(\)$#'
- identifier: method.childReturnType
- count: 1
- path: src/Blocks/BlockTypes/AtomicBlock.php
-
-
message: '#^Cannot access property \$term_id on WP_Post\|WP_Post_Type\|WP_Term\|WP_User\|null\.$#'
identifier: property.nonObject
diff --git a/plugins/woocommerce/src/Blocks/BlockTypes/AtomicBlock.php b/plugins/woocommerce/src/Blocks/BlockTypes/AtomicBlock.php
index d3d7769ba63..6ff5d6e382f 100644
--- a/plugins/woocommerce/src/Blocks/BlockTypes/AtomicBlock.php
+++ b/plugins/woocommerce/src/Blocks/BlockTypes/AtomicBlock.php
@@ -4,44 +4,9 @@ namespace Automattic\WooCommerce\Blocks\BlockTypes;
/**
* AtomicBlock class.
*
+ * Do not delete this file until https://github.com/woocommerce/woocommerce/issues/52311 is resolved.
+ * The upgrade flow can still load stale autoloader manifests that point to this file.
+ *
* @internal
*/
-class AtomicBlock extends AbstractBlock {
- /**
- * Get the editor script data for this block type.
- *
- * @param string $key Data to get, or default to everything.
- * @return null
- */
- protected function get_block_type_editor_script( $key = null ) {
- return null;
- }
-
- /**
- * Get the editor style handle for this block type.
- *
- * @return null
- */
- protected function get_block_type_editor_style() {
- return null;
- }
-
- /**
- * Get the frontend script handle for this block type.
- *
- * @param string $key Data to get, or default to everything.
- * @return null
- */
- protected function get_block_type_script( $key = null ) {
- return null;
- }
-
- /**
- * Get the frontend style handle for this block type.
- *
- * @return null
- */
- protected function get_block_type_style() {
- return null;
- }
-}
+class AtomicBlock extends AbstractBlock {}
diff --git a/plugins/woocommerce/src/Blocks/BlockTypes/SavedForLater.php b/plugins/woocommerce/src/Blocks/BlockTypes/SavedForLater.php
index b9ba3c7aa6a..45ca7330458 100644
--- a/plugins/woocommerce/src/Blocks/BlockTypes/SavedForLater.php
+++ b/plugins/woocommerce/src/Blocks/BlockTypes/SavedForLater.php
@@ -532,9 +532,9 @@ final class SavedForLater extends AbstractBlock {
* Get the frontend style handle for this block type.
*
* Returning null lets WP use the `style` array from block.json, which
- * lists this block's own stylesheet plus the atomic
+ * lists this block's own stylesheet plus the product element
* product-image / product-price / product-button stylesheets we
- * borrow class names from. We can't render those atomic blocks as
+ * borrow class names from. We can't render those product element blocks as
* inner blocks (they rely on WP_Query / $post loop context, which
* this block doesn't have — it hydrates from a Store API call), so
* declaring them as style dependencies is the only way to get WP
diff --git a/plugins/woocommerce/src/Blocks/BlockTypes/Wishlist.php b/plugins/woocommerce/src/Blocks/BlockTypes/Wishlist.php
index 1a26fb39d39..c7f026ee8d3 100644
--- a/plugins/woocommerce/src/Blocks/BlockTypes/Wishlist.php
+++ b/plugins/woocommerce/src/Blocks/BlockTypes/Wishlist.php
@@ -349,7 +349,7 @@ final class Wishlist extends AbstractBlock {
* Get the frontend style handle for this block type.
*
* Returning null lets WP use the `style` array from block.json, which
- * lists this block's own stylesheet plus the atomic
+ * lists this block's own stylesheet plus the product element
* product-image / product-price / product-button stylesheets we
* borrow class names from.
*
diff --git a/plugins/woocommerce/src/Blocks/Library.php b/plugins/woocommerce/src/Blocks/Library.php
index 673422d92d8..3556c716689 100644
--- a/plugins/woocommerce/src/Blocks/Library.php
+++ b/plugins/woocommerce/src/Blocks/Library.php
@@ -1,7 +1,6 @@
<?php
namespace Automattic\WooCommerce\Blocks;
-use Automattic\WooCommerce\Blocks\BlockTypes\AtomicBlock;
use Automattic\WooCommerce\Blocks\Package;
use Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry;
use Automattic\WooCommerce\Blocks\Assets\Api as AssetApi;