@@ -85,40 +90,47 @@ const codeIcon = props.lang || 'terminal';
\ No newline at end of file
diff --git a/src/content/docs/dropins/all/anatomy.mdx b/src/content/docs/dropins/all/anatomy.mdx
index aec86ae65..cf3af9728 100644
--- a/src/content/docs/dropins/all/anatomy.mdx
+++ b/src/content/docs/dropins/all/anatomy.mdx
@@ -1,4 +1,4 @@
---
-title: Anatomy of a drop-in
+title: Anatomy of drop-in components
description: Learn how to override the CSS styles within the product details drop-in component.
---
diff --git a/src/content/docs/dropins/all/branding.mdx b/src/content/docs/dropins/all/branding.mdx
index fa4debd35..5a82ebe35 100644
--- a/src/content/docs/dropins/all/branding.mdx
+++ b/src/content/docs/dropins/all/branding.mdx
@@ -1,5 +1,5 @@
---
-title: Branding
+title: Branding drop-in components
description: Learn how to override the Adobe Commerce design tokens to match your brand.
sidebar:
label: Design tokens
diff --git a/src/content/docs/dropins/all/enriching.mdx b/src/content/docs/dropins/all/enriching.mdx
index 79bc12ca0..2b13f14fd 100644
--- a/src/content/docs/dropins/all/enriching.mdx
+++ b/src/content/docs/dropins/all/enriching.mdx
@@ -1,13 +1,6 @@
---
-title: Enriching dropin-in components
+title: Enriching drop-in components
description: Learn how to enrich your backend Commerce data with Enrichment blocks.
---
import Aside from '@components/Aside.astro';
-
-Enriching dropin-in components is similar to adding content with slots. The difference is in scale. Enrichment is an Edge Delivery feature that provides a way to add content to entire product categories. Let's try it out.
-
-
diff --git a/src/content/docs/dropins/all/eventbus.mdx b/src/content/docs/dropins/all/eventbus.mdx
index 82dd0edf9..b42f48118 100644
--- a/src/content/docs/dropins/all/eventbus.mdx
+++ b/src/content/docs/dropins/all/eventbus.mdx
@@ -1,5 +1,5 @@
---
-title: Introduction to dropin-in components
+title: Event bus
description: Learn what dropin-in components are and how to use them.
---
diff --git a/src/content/docs/dropins/all/installing.mdx b/src/content/docs/dropins/all/installing.mdx
index 8ebe5e926..e5259c2bd 100644
--- a/src/content/docs/dropins/all/installing.mdx
+++ b/src/content/docs/dropins/all/installing.mdx
@@ -25,5 +25,5 @@ The following diagram provides an overview of the steps necessary for installing
The installation of all dropin-in components follows the same pattern described in the workflow diagram above. Refer to the following resources for step-by-step instructions to install specific dropin-in components:
-- [Product details page (PDP)](/dropins/product-details/pdp-installation)
-- [Cart](/dropins/cart/cart-installation)
+- [Product details page (PDP)](/dropins/product-details/installation)
+- [Cart](/dropins/cart/installation)
diff --git a/src/content/docs/dropins/all/introduction.mdx b/src/content/docs/dropins/all/introduction.mdx
index 344066801..a72ab403e 100644
--- a/src/content/docs/dropins/all/introduction.mdx
+++ b/src/content/docs/dropins/all/introduction.mdx
@@ -1,5 +1,5 @@
---
-title: Drop-in components overview
+title: Introduction to dropin-in components
description: Learn what dropin-in components are and how to use them.
---
@@ -75,4 +75,4 @@ All dropin-in components can be customized in five ways: design tokens, CSS clas
### Localization
-[Localization](/dropins/all/localizing/) is one of the easiest ways to customize dropin-in components for a region. This topic shows you how to add and use a second language file in your dropin-in components.
+[Localization](/dropins/all/labeling/) is one of the easiest ways to customize dropin-in components for a region. This topic shows you how to add and use a second language file in your dropin-in components.
diff --git a/src/content/docs/dropins/all/labeling.mdx b/src/content/docs/dropins/all/labeling.mdx
new file mode 100644
index 000000000..98b43c429
--- /dev/null
+++ b/src/content/docs/dropins/all/labeling.mdx
@@ -0,0 +1,146 @@
+---
+title: Labeling and localizing drop-in components
+description: How to localize your drop-in components.
+sidebar:
+ label: Labeling
+ order: 5
+---
+
+import Aside from '@components/Aside.astro';
+import Diagram from '@components/Diagram.astro';
+import CodeImport from '@components/CodeImport.astro';
+import CodeInclude from '@components/CodeInclude.astro';
+import dictionary from '@dropins/tools/types/elsie/src/i18n/en_US.json.d.ts?raw';
+import Vocabulary from '@components/Vocabulary.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import { Steps } from '@astrojs/starlight/components';
+import Tasks from '@components/Tasks.astro';
+import Task from '@components/Task.astro';
+
+In this topic, you will learn how to update drop-in component labels by using the resources available in the commerce boilerplate.
+
+## Key concepts
+
+
+
+### Placeholders file
+
+A Google Sheets file (`placeholders`) or a SharePoint Excel file (`placeholders.xlsx`) where you change and maintain your storefront's labels, which includes localization. See the [Placeholders file](/resources/placeholders/) for more information.
+
+### Language objects
+
+A JavaScript object (named `langDefinitions` by convention) that contains key-value pairs for UI text labels in a specific language. The object is used to override the default dictionary with the placeholder file's keys and values.
+
+### Drop-in component dictionaries
+
+JSON files that define the shape, keys, and default values for labels and text within a drop-in component. Each drop-in component has a default dictionary file: `i18n/en_US.json`. But drop-in components can contain multiple dictionary files as the site is localized for other languages, including `fr_CA.json` for French, `de_DE.json` for German, and so on. The documentation for each drop-in component includes the default dictionary for that drop-in component. As an example, see the [dictionary](/dropins/product-details/dictionary) for the product details page drop-in component.
+
+### Labeling
+
+To add or change UI text labels within Commerce drop-in components. Merchants can change the UI labels in their storefronts by changing the values in the `placeholders` file within their Google Docs or SharePoint directories.
+
+### Localizing
+
+To change UI text labels to a specific language. This process includes translating text labels and changing the text direction, date and time formats, and currency symbols to match the target language.
+
+
+
+## Big picture
+
+Labeling drop-in components in the storefront involves two files:
+
+
+1. The **placeholders file** that provides the default drop-in component UI labels that merchants can quickly update as needed.
+2. The **drop-in block** (examples, `product-details.js`, `cart.js`) where you add code to fetch, map, and override the drop-in component dictionary at runtime.
+
+
+The following diagram shows the process for adding and overriding labels and text for drop-in components within the boilerplate template.
+
+
+ ![How localization and labeling works in storefronts.](@images/DropinDictionaries.svg)
+
+
+
+
+1. **Placeholder files**. Merchants can quickly update the labels in their storefront from one file: `placeholders`, which is either a Google Sheet or Microsoft Excel file.
+1. **Import function**. You need to import the `fetchPlaceholders` function from the boilerplate's `aem.js` file.
+1. **Fetch placeholders.** Use the `fetchPlaceholders` function to retrieve the `placeholders` key-value pairs from Google Docs or SharePoint folders.
+1. **Override default dictionary**. Override the `default` property from the `langDefinitions` object with the keys and values from the `placeholder` object.
+1. **Initialize dictionary**. Use the `register` function to update the dictionary at runtime.
+
+
+
+## Step-by-step
+
+In the boilerplate code, the UI text labels in drop-in components come from the `placeholders` file. Using this file as the source for all storefront UI labels across drop-in components makes it easy for merchants to make label changes without developer involvement.
+
+
+
+
+### Import `fetchPlaceholders` function
+
+In the drop-in block (for example, `product-details.js`, `cart.js`), import the `fetchPlaceholders` function from the boilerplate's `aem.js` file.
+
+```javascript
+import { fetchPlaceholders } from '../../scripts/aem.js';
+```
+
+
+
+### Fetch placeholders
+
+Within the `decorate` function, use the `fetchPlaceholders` function to retrieve the `placeholders` language object from the Google Docs or SharePoint folders. The following diagram and code snippet shows how to fetch the placeholders.
+
+
+ ![Using placeholder labels in your EDS commerce block](@images/LabelUsage.svg)
+
+
+```javascript
+// Retrieve the placeholders language object
+const labels = await fetchPlaceholders();
+
+export default async function decorate(block) {
+ const $elem = document.createElement('div');
+ $elem.innerText = labels.Cart.PriceSummary.shipping.label;
+}
+```
+
+
+
+### Override default dictionary
+
+Within the `decorate` function, override the drop-in component's default dictionary with the placeholders object.
+
+```javascript
+// Get labels from placeholders sheet
+const langDefinitions = {
+ default: {
+ ...placeholders,
+ },
+};
+```
+
+
+
+### Register updated dictionary
+
+Use the `initializers.mountImmediately` API to register the new dictionary. The following code snippet shows how to register the new `langDefinitions` object.
+
+```javascript
+// Register Initializers
+initializers.mountImmediately(initialize, {
+ langDefinitions,
+ defaultLocale: locale,
+ models
+});
+```
+
+
+
+### Test the changes
+
+After you've updated the drop-in component dictionary with the new `langDefinitions` object, test the changes in the storefront to ensure the new labels are displayed correctly. If the labels are not displaying as expected, review the mapping between the placeholder keys and the drop-in component dictionary keys. Make sure the keys match exactly. If the keys don't match, the drop-in component will use the default dictionary values.
+
+
+
diff --git a/src/content/docs/dropins/all/localizing.mdx b/src/content/docs/dropins/all/localizing.mdx
deleted file mode 100644
index 9b16ebef5..000000000
--- a/src/content/docs/dropins/all/localizing.mdx
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Localizing drop-in components
-description: How to localize your drop-in components.
-sidebar:
- label: Localization
- order: 5
----
-
-import Aside from '@components/Aside.astro';
-
-In our global economy, localization is crucial. And it's one of the easiest changes to make. This page shows how to add a second language file and use it in your storefront.
-
-
diff --git a/src/content/docs/dropins/cart/cart-containers.mdx b/src/content/docs/dropins/cart/containers.mdx
similarity index 100%
rename from src/content/docs/dropins/cart/cart-containers.mdx
rename to src/content/docs/dropins/cart/containers.mdx
diff --git a/src/content/docs/dropins/cart/containers/cart-summary-grid.mdx b/src/content/docs/dropins/cart/containers/cart-summary-grid.mdx
new file mode 100644
index 000000000..a03dc25e2
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/cart-summary-grid.mdx
@@ -0,0 +1,50 @@
+---
+title: CartSummaryGrid container
+description: Learn about the CartSummaryGrid container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+import CodeInclude from '@components/CodeInclude.astro';
+import cartModel from '../_includes/cartModel.ts?raw';
+
+The `CartSummaryGrid` container manages and displays the contents of the shopping cart in a grid layout. Its state is managed by the `CartModel` interface, which contains the cart's initial data and is passed down to any child components.
+
+
+ ![CartSummaryGrid container](@images/dropins/cart/cart-summary-grid-small.png)
+
+
+## Configurations
+
+The `CartSummaryGrid` container provides the following configuration options:
+
+
+
+The `CartModel` object has the following shape:
+
+
+
+## Example configuration
+
+The following example demonstrates how to render the `CartSummaryGrid` container with the `routeProduct` and `routeEmptyCartCTA` callbacks:
+
+```js
+ provider.render(CartSummaryGrid, {
+ routeProduct: (item) => {
+ return `${item.url.categories.join('/')}/${item.url.urlKey}`;
+ },
+ routeEmptyCartCTA: () => '#empty-cart',
+ })(document.getElementById('@dropins/CartSummaryGrid'));
+```
\ No newline at end of file
diff --git a/src/content/docs/dropins/cart/containers/cart-summary-list.mdx b/src/content/docs/dropins/cart/containers/cart-summary-list.mdx
new file mode 100644
index 000000000..369a43e07
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/cart-summary-list.mdx
@@ -0,0 +1,114 @@
+---
+title: CartSummaryList container
+description: Learn about the CartSummaryList container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+import CodeInclude from '@components/CodeInclude.astro';
+import cartModel from '../_includes/cartModel.ts?raw';
+
+The `CartSummaryList` container displays a summary of the items in the shopping cart by rendering a list of `CartItem` components. Each `CartItem` represents an individual item in the cart.
+
+
+ ![CartSummaryList container](@images/dropins/cart/cart-summary-list.png)
+
+
+
+## Configurations
+
+The `CartSummaryList` container provides the following configuration options:
+
+
+
+The `CartModel` object has the following shape:
+
+
+
+## Supported slots
+
+The `CartSummaryList` container supports the following slots:
+
+* Heading
+* EmptyCart
+* Footer
+* Thumbnail
+* ProductAttributes
+* CartSummaryFooter
+
+## Example configuration
+
+The following example demonstrates how to render the `CartSummaryList` container with the `routeProduct` and `routeEmptyCartCTA` callbacks:
+
+```js
+provider.render(CartSummaryList, {
+ enableRemoveItem: true,
+ enableUpdateItemQuantity: true,
+ showDiscount: true,
+ // accordion: true,
+ // showMaxItems: false,
+ // maxItems: 6,
+ // routeCart: () => '#cart',
+ // showSavings: true,
+ // quantityType: 'dropdown',
+ // dropdownOptions: [
+ // { value: '1', text: '1' },
+ // { value: '2', text: '2' },
+ // { value: '3', text: '3' },
+ // ],
+ routeProduct: (item) => {
+ return `${item.url.categories.join('/')}/${item.url.urlKey}`;
+ },
+ routeEmptyCartCTA: () => '#empty-cart',
+ slots: {
+ Footer: (ctx) => {
+ // Runs on mount
+ const wrapper = document.createElement('div');
+ ctx.appendChild(wrapper);
+
+ // Append Product Promotions on every update
+ ctx.onChange((next) => {
+ wrapper.innerHTML = '';
+
+ next.item?.discount?.label?.forEach((label) => {
+ const discount = document.createElement('div');
+ discount.style.color = '#3d3d3d';
+ discount.innerText = label;
+ wrapper.appendChild(discount);
+ });
+ });
+},
+```
diff --git a/src/content/docs/dropins/cart/containers/cart.mdx b/src/content/docs/dropins/cart/containers/cart.mdx
new file mode 100644
index 000000000..e434791f7
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/cart.mdx
@@ -0,0 +1,194 @@
+---
+title: Cart container
+description: Learn about the Cart container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+import CodeInclude from '@components/CodeInclude.astro';
+import cartModel from '../_includes/cartModel.ts?raw';
+
+The `Cart` container serves as a central component for displaying and managing the shopping cart, providing various customization options through the `CartProps` interface. This container renders its children and passes down the received props to the relevant components. It also handles initial data and other HTML attributes through the `...props` spread operator.
+
+
+ ![Cart container](@images/dropins/cart/cart-container.png)
+
+
+## Configurations
+
+The Cart container provides the following configuration options:
+
+
+
+The `CartModel` object has the following shape:
+
+
+
+## Supported slots
+
+The `Cart` container supports the OrderSummary and ProductList slots.
+
+## Example configuration
+
+The following example data demonstrates how the `Cart` container is configured:
+
+```js
+const mockData: CartModel = {
+ id: '123',
+ totalQuantity: 2,
+ items: [
+ {
+ itemType: 'SimpleCartItem',
+ uid: '1',
+ name: 'Product 1',
+ url: {
+ urlKey: 'product-1',
+ categories: ['category-1'],
+ },
+ sku: '123',
+ quantity: 1,
+ price: {
+ value: 100,
+ currency: 'USD',
+ },
+ image: {
+ src: 'https://via.placeholder.com/300',
+ alt: 'Product 1',
+ },
+ total: {
+ value: 100,
+ currency: 'USD',
+ },
+ regularPrice: {
+ value: 200,
+ currency: 'USD',
+ },
+ discounted: true,
+ taxedPrice: {
+ value: 210,
+ currency: 'USD',
+ },
+ rowTotal: {
+ value: 250,
+ currency: 'USD',
+ },
+ rowTotalIncludingTax: {
+ value: 260,
+ currency: 'USD',
+ },
+ },
+ {
+ itemType: 'SimpleCartItem',
+ uid: '2',
+ name: 'Product 2',
+ url: {
+ urlKey: 'product-2',
+ categories: ['category-1'],
+ },
+ sku: '456',
+ quantity: 1,
+ price: {
+ value: 200,
+ currency: 'USD',
+ },
+ image: {
+ src: 'https://via.placeholder.com/300',
+ alt: 'Product 2',
+ },
+ total: {
+ value: 200,
+ currency: 'USD',
+ },
+ discount: {
+ value: 0,
+ currency: 'USD',
+ },
+ regularPrice: {
+ value: 200,
+ currency: 'USD',
+ },
+ discounted: false,
+ taxedPrice: {
+ value: 210,
+ currency: 'USD',
+ },
+ rowTotal: {
+ value: 250,
+ currency: 'USD',
+ },
+ rowTotalIncludingTax: {
+ value: 260,
+ currency: 'USD',
+ },
+ },
+ ],
+ total: {
+ includingTax: {
+ value: 300,
+ currency: 'USD',
+ },
+ excludingTax: {
+ value: 300,
+ currency: 'USD',
+ },
+ },
+ totalExcludingTax: {
+ value: 290,
+ currency: 'USD',
+ },
+
+ subtotal: {
+ excludingTax: {
+ value: 300,
+ currency: 'USD',
+ },
+ includingTax: {
+ value: 300,
+ currency: 'USD',
+ },
+ includingDiscountOnly: {
+ value: 300,
+ currency: 'USD',
+ },
+ },
+ appliedTaxes: [
+ {
+ amount: {
+ value: 10,
+ currency: 'USD',
+ },
+ label: 'Tax',
+ },
+ ],
+ totalTax: undefined,
+ appliedDiscounts: [
+ {
+ amount: {
+ value: 20,
+ currency: 'USD',
+ },
+ label: 'Cart Discount',
+ },
+ ],
+ addresses: {},
+ miniCartMaxItems: [],
+ isVirtual: false,
+};
+```
\ No newline at end of file
diff --git a/src/content/docs/dropins/cart/containers/coupons.mdx b/src/content/docs/dropins/cart/containers/coupons.mdx
new file mode 100644
index 000000000..caf507c56
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/coupons.mdx
@@ -0,0 +1,52 @@
+---
+title: Coupons container
+description: Learn about the Coupons container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+
+The `Coupons` container manages the application of coupons to the shopping cart. It provides a text box for users to enter coupon codes. The container uses the `applyCouponsToCart` function to apply the coupon to the cart.
+
+
+ ![Coupons container](@images/dropins/cart/apply-coupon.png)
+
+
+## Configurations
+
+The `Coupons` container provides the following configuration options:
+
+
+
+## Example configuration
+
+The following example demonstrates how to render the `Coupons` container as part of the OrderSummary slot:
+
+```js
+{
+ provider.render(OrderSummary, {
+ routeCheckout: () => '#checkout',
+ slots: {
+ Coupons: (ctx) => {
+ const coupons = document.createElement('div');
+
+ provider.render(Coupons)(coupons);
+
+ ctx.appendChild(coupons);
+ },
+ },
+ showTotalSaved: true,
+ })('.cart__order-summary'),
diff --git a/src/content/docs/dropins/cart/containers/empty-cart.mdx b/src/content/docs/dropins/cart/containers/empty-cart.mdx
new file mode 100644
index 000000000..50081fd84
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/empty-cart.mdx
@@ -0,0 +1,41 @@
+---
+title: EmptyCart container
+description: Learn about the EmptyCart container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+
+The `EmptyCart` container renders a message or component indicating that the cart is empty.
+It can provide navigation options to continue shopping or explore products.
+
+
+ ![EmptyCart container](@images/dropins/cart/empty-cart.png)
+
+
+
+## Configurations
+
+The `EmptyCart` container provides the following configuration options:
+
+
+
+## Example configuration
+
+The following example demonstrates how to render the `EmptyCart` container:
+
+```js
+ provider.render(EmptyCart, {
+ routeCTA: startShoppingURL ? () => startShoppingURL : undefined,
+ })($emptyCart),
+```
+`;
diff --git a/src/content/docs/dropins/cart/containers/estimate-shipping.mdx b/src/content/docs/dropins/cart/containers/estimate-shipping.mdx
new file mode 100644
index 000000000..39499564c
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/estimate-shipping.mdx
@@ -0,0 +1,52 @@
+---
+title: EstimateShipping container
+description: Learn about the EstimateShipping container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+
+The `EstimateShipping` container renders a form that allows shoppers to estimate shipping costs based on their specified location. The form includes fields for the shopper to enter their country, state, and postal code.
+
+
+ ![EstimateShipping container](@images/dropins/cart/estimate-shipping.png)
+
+
+## Configurations
+
+The `EstimateShipping` container provides the following configuration options:
+
+
+
+## Example configuration
+
+The following example demonstrates how to render the `EstimateShipping` container:
+
+```js
+EstimateShipping: (ctx) => {
+ const estimateShippingForm = document.createElement('div');
+
+provider.render(EstimateShipping, {
+ showDefaultEstimatedShippingCost: true,
+})('#estimate-shipping');
diff --git a/src/content/docs/dropins/cart/containers/minicart.mdx b/src/content/docs/dropins/cart/containers/minicart.mdx
new file mode 100644
index 000000000..46be0b5fb
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/minicart.mdx
@@ -0,0 +1,62 @@
+---
+title: MiniCart container
+description: Learn about the MiniCart container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+import CodeInclude from '@components/CodeInclude.astro';
+import cartModel from '../_includes/cartModel.ts?raw';
+
+The `MiniCart` container displays a summary of the shopper's shopping cart. It shows a list of products currently in the cart and subtotal amounts. It also provides call-to-action buttons for proceeding to checkout or updating the cart.
+
+
+ ![MiniCart container](@images/dropins/cart/mini-cart.png)
+
+
+## Configurations
+
+The `MiniCart` container provides the following configuration options:
+
+
+
+The `CartModel` object has the following shape:
+
+
+## Supported slots
+
+The `MiniCart` container supports the ProductList slot.
+
+## Example configuration
+
+The following example demonstrates how to render the `MiniCart` container:
+
+```javascript
+provider.render(MiniCart, {
+ routeProduct: (item) => {
+ return `${item.url.categories.join('/')}/${item.url.urlKey}`;
+ },
+ routeEmptyCartCTA: () => '#empty-cart',
+ routeCart: () => '#cart',
+ routeCheckout: () => '#checkout',
+ showDiscount: true,
+ // showSavings: true,
+})($miniCart);
+```
\ No newline at end of file
diff --git a/src/content/docs/dropins/cart/containers/order-summary-line.mdx b/src/content/docs/dropins/cart/containers/order-summary-line.mdx
new file mode 100644
index 000000000..0da0a8a1f
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/order-summary-line.mdx
@@ -0,0 +1,70 @@
+---
+title: OrderSummaryLine container
+description: Learn about the OrderSummaryLine container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+import CodeInclude from '@components/CodeInclude.astro';
+import cartModel from '../_includes/cartModel.ts?raw';
+
+The `OrderSummaryLine` container displays a line item in the order summary. The `OrderSummaryLine` container behaves like a wrapper for the `OrderSummaryLine` component. The component ultimately decides how to render the line item, based on the `children` attribute.
+
+
+ ![OrderSummaryLine container](@images/dropins/cart/order-summary-line.png)
+
+
+
+## Configurations
+
+The `OrderSummaryLine` container provides the following configuration options:
+
+
+
+## Example configuration
+
+The following example adds the Fixed Product Tax (PDT) line to the order summary:
+
+```js
+updateLineItems: (lineItems) => {
+ const totalFpt = ctx.data.items.reduce((allItemsFpt, item) => {
+ const itemFpt = item.fixedProductTaxes.reduce((accumulator, fpt) => {
+ accumulator.labels.push(fpt.label);
+ accumulator.total += fpt.amount.value;
+ return accumulator;
+ }, {
+ labels: [],
+ total: 0
+ });
+ allItemsFpt.labels = [...allItemsFpt.labels, ...itemFpt.labels];
+ allItemsFpt.total += itemFpt.total;
+ return allItemsFpt;
+ }, {
+ labels: [],
+ total: 0
+ });
+
+ lineItems.push({
+ key: 'fpt',
+ sortOrder: 350,
+ title: 'Fixed Product Tax',
+ content: OrderSummaryLine({label: "FPT(" + totalFpt.labels.join(',') + ')', price: Price({amount: totalFpt.total}), classSuffix: 'fpt'})
+ })
+
+ return lineItems;
+};
+```
diff --git a/src/content/docs/dropins/cart/containers/order-summary.mdx b/src/content/docs/dropins/cart/containers/order-summary.mdx
new file mode 100644
index 000000000..eac190132
--- /dev/null
+++ b/src/content/docs/dropins/cart/containers/order-summary.mdx
@@ -0,0 +1,72 @@
+---
+title: OrderSummary container
+description: Learn about the OrderSummary container.
+---
+
+import Diagram from '@components/Diagram.astro';
+import Callouts from '@components/Callouts.astro';
+import OptionsTable from '@components/OptionsTable.astro';
+import Aside from '@components/Aside.astro';
+import { Steps } from '@astrojs/starlight/components';
+import CodeInclude from '@components/CodeInclude.astro';
+import cartModel from '../_includes/cartModel.ts?raw';
+
+The `OrderSummary` container displays a detailed summary of the shopper's order. It includes the subtotal, taxes, shipping costs, and total amount due. It optionally applies discounts or coupons.
+
+
+ ![OrderSummary container](@images/dropins/cart/order-summary.png)
+
+
+This container supports the Coupon and EstimatedShipping slots.
+
+## Configurations
+
+The `OrderSummary` container provides the following configuration options:
+
+
+
+The `CartModel` object has the following shape:
+
+
+
+## Supported slots
+
+The `OrderSummary` container supports the Coupons and EstimateShipping slots.
+
+## Example configuration
+
+The following example demonstrates how to render the `OrderSummary` container with the `EstimateShipping` and `Coupons` slots:
+
+```js
+provider.render(OrderSummary, {
+ routeCheckout: () => '#checkout',
+ errors: ctx.hasErrors,
+ slots: {
+ EstimateShipping: (ctx) => {
+ const estimateShippingForm = document.createElement('div');
+ provider.render(EstimateShipping, {
+ showDefaultEstimatedShippingCost: true
+ })(estimateShippingForm);
+ ctx.appendChild(estimateShippingForm);
+ },
+ Coupons: (ctx) => {
+ const coupons = document.createElement('div');
+ provider.render(Coupons)(coupons);
+ ctx.appendChild(coupons);
+ },
+ },
+ showTotalSaved: true
+})(orderSummary);
+```
\ No newline at end of file
diff --git a/src/content/docs/dropins/cart/dictionary.mdx b/src/content/docs/dropins/cart/dictionary.mdx
new file mode 100644
index 000000000..0dba4ef2b
--- /dev/null
+++ b/src/content/docs/dropins/cart/dictionary.mdx
@@ -0,0 +1,14 @@
+---
+title: Cart dictionary
+description: Learn how to customize the default dictionary for the cart drop-in component.
+---
+
+import CodeInclude from '@components/CodeInclude.astro';
+import CodeImport from '@components/CodeImport.astro';
+import dictionary from '@dropins/storefront-cart/i18n/en_US.json.d.ts?raw';
+
+The default cart dictionary file (`i18n/en_US.json`) contains the default values for all labels and text common to the cart drop-in component.
+
+## Default keys and values
+
+
diff --git a/src/content/docs/dropins/cart/cart-functions.mdx b/src/content/docs/dropins/cart/functions.mdx
similarity index 100%
rename from src/content/docs/dropins/cart/cart-functions.mdx
rename to src/content/docs/dropins/cart/functions.mdx
diff --git a/src/content/docs/dropins/cart/index.mdx b/src/content/docs/dropins/cart/index.mdx
index 57dbe9c1b..765b8c28f 100644
--- a/src/content/docs/dropins/cart/index.mdx
+++ b/src/content/docs/dropins/cart/index.mdx
@@ -43,15 +43,15 @@ The topics in this section will help you understand how to customize and use the
### Installation
-Provides the step-by-step process for embedding the cart into your site. This topic covers everything from basic setup requirements to more advanced configurations, ensuring that the drop-in component integrates seamlessly with your existing website architecture. It is designed for compatibility with modern web technologies, focusing on ease of use and flexibility for developers. Visit the [cart installation](/dropins/cart/cart-installation/) page to get started.
+Provides the step-by-step process for embedding the cart into your site. This topic covers everything from basic setup requirements to more advanced configurations, ensuring that the drop-in component integrates seamlessly with your existing website architecture. It is designed for compatibility with modern web technologies, focusing on ease of use and flexibility for developers. Visit the [cart installation](/dropins/cart/installation/) page to get started.
### Styles
-Describes how to customize the appearance of the cart using CSS. We provide guidelines and examples for applying styles to various components within the drop-in. This customization allows brands to align the drop-in component's look and feel with their overall design aesthetic, enhancing brand consistency across the platform. Visit the [cart styles](/dropins/cart/cart-styles/) page to learn more.
+Describes how to customize the appearance of the cart using CSS. We provide guidelines and examples for applying styles to various components within the drop-in. This customization allows brands to align the drop-in component's look and feel with their overall design aesthetic, enhancing brand consistency across the platform. Visit the [cart styles](/dropins/cart/styles/) page to learn more.
### Containers
-Describes the structural elements of the cart, specifically focusing on how the container manages and displays content. It includes information on configuration options and how to leverage these settings to customize the user experience. Understanding the container is essential for developers looking to optimize the layout and styling of the cart. Visit the [cart containers](/dropins/cart/cart-containers) page to learn more.
+Describes the structural elements of the cart, specifically focusing on how the container manages and displays content. It includes information on configuration options and how to leverage these settings to customize the user experience. Understanding the container is essential for developers looking to optimize the layout and styling of the cart. Visit the [cart containers](/dropins/cart/containers/cart/) page to learn more.
### Slots
@@ -59,5 +59,5 @@ The cart does not provide any slots.
### Functions
-Describes the API functions available in the Cart dropin. These functions allow developers to retrieve and display detailed cart information dynamically. Visit the [Cart Functions](/dropins/cart/cart-functions/) page to learn more.
+Describes the API functions available in the Cart dropin. These functions allow developers to retrieve and display detailed cart information dynamically. Visit the [Cart Functions](/dropins/cart/functions/) page to learn more.
diff --git a/src/content/docs/dropins/cart/cart-installation.mdx b/src/content/docs/dropins/cart/installation.mdx
similarity index 100%
rename from src/content/docs/dropins/cart/cart-installation.mdx
rename to src/content/docs/dropins/cart/installation.mdx
diff --git a/src/content/docs/dropins/cart/cart-slots.mdx b/src/content/docs/dropins/cart/slots.mdx
similarity index 100%
rename from src/content/docs/dropins/cart/cart-slots.mdx
rename to src/content/docs/dropins/cart/slots.mdx
diff --git a/src/content/docs/dropins/cart/cart-styles.mdx b/src/content/docs/dropins/cart/styles.mdx
similarity index 100%
rename from src/content/docs/dropins/cart/cart-styles.mdx
rename to src/content/docs/dropins/cart/styles.mdx
diff --git a/src/content/docs/dropins/checkout/containers/estimate-shipping.mdx b/src/content/docs/dropins/checkout/containers/estimate-shipping.mdx
index ad50a868c..1c67de49c 100644
--- a/src/content/docs/dropins/checkout/containers/estimate-shipping.mdx
+++ b/src/content/docs/dropins/checkout/containers/estimate-shipping.mdx
@@ -9,7 +9,7 @@ The `EstimateShipping` container is designed to estimate and display shipping co
## EstimateShipping configurations
-The `EstimateShipping` container is read-only, unlike the editable [`EstimateShipping`](/dropins/cart/cart-slots/#estimateshipping) container in the cart drop-in component. Initially, it displays estimated shipping costs. After a customer provides a shipping address and selects a shipping method, it shows the actual shipping cost. This container is designed to be used as a slot within the `OrderSummary` container from the cart, where the estimated shipping information is displayed.
+The `EstimateShipping` container is read-only, unlike the editable [`EstimateShipping`](/dropins/cart/containers/estimate-shipping/) container in the cart drop-in component. Initially, it displays estimated shipping costs. After a customer provides a shipping address and selects a shipping method, it shows the actual shipping cost. This container is designed to be used as a slot within the `OrderSummary` container from the cart, where the estimated shipping information is displayed.
## Example
@@ -33,4 +33,4 @@ CartProvider.render(OrderSummary, {
},
},
})($orderSummary),
-```
\ No newline at end of file
+```
diff --git a/src/content/docs/dropins/checkout/dictionary.mdx b/src/content/docs/dropins/checkout/dictionary.mdx
new file mode 100644
index 000000000..53d05d7e5
--- /dev/null
+++ b/src/content/docs/dropins/checkout/dictionary.mdx
@@ -0,0 +1,14 @@
+---
+title: Checkout dictionary
+description: Learn how to customize the default dictionary for the checkout drop-in component.
+---
+
+import CodeInclude from '@components/CodeInclude.astro';
+import CodeImport from '@components/CodeImport.astro';
+import dictionary from '@dropins/storefront-checkout/i18n/en_US.json.d.ts?raw';
+
+The default checkout dictionary file (`i18n/en_US.json`) contains the default values for all labels and text common to the checkout drop-in component.
+
+## Default keys and values
+
+
diff --git a/src/content/docs/dropins/order/_includes/order-data-model.ts b/src/content/docs/dropins/order/_includes/order-data-model.ts
new file mode 100644
index 000000000..b80e42f0d
--- /dev/null
+++ b/src/content/docs/dropins/order/_includes/order-data-model.ts
@@ -0,0 +1,28 @@
+type OrderDataModel = {
+ id: string;
+ orderStatusChangeDate?: string;
+ number: string;
+ email?: string;
+ token?: string;
+ status: string;
+ isVirtual: boolean;
+ totalQuantity: number;
+ shippingMethod?: string;
+ carrier?: string;
+ coupons: {
+ code: string;
+ }[];
+ payments: {
+ code: string;
+ name: string;
+ }[];
+ shipping?: { code: string; amount: number; currency: string };
+ shipments: ShipmentsModel[];
+ items: OrderItemModel[];
+ grandTotal: MoneyProps;
+ subtotal: MoneyProps;
+ totalTax: MoneyProps;
+ shippingAddress: OrderAddressModel;
+ billingAddress: OrderAddressModel;
+ availableActions: AvailableActionsProps[];
+};
diff --git a/src/content/docs/dropins/order/dictionary.mdx b/src/content/docs/dropins/order/dictionary.mdx
new file mode 100644
index 000000000..b33e9b34d
--- /dev/null
+++ b/src/content/docs/dropins/order/dictionary.mdx
@@ -0,0 +1,14 @@
+---
+title: Order Dictionary
+description: Learn how to customize the default dictionary for the order drop-in component.
+---
+
+import CodeImport from '@components/CodeImport.astro';
+import CodeInclude from '@components/CodeInclude.astro';
+import dictionary from '@dropins/storefront-order/i18n/en_US.json.d.ts?raw';
+
+The default order dictionary file (`i18n/en_US.json`) contains the default values for all labels and text common to the order drop-in component.
+
+## Default keys and values
+
+
diff --git a/src/content/docs/dropins/order/functions.mdx b/src/content/docs/dropins/order/functions.mdx
index 4a2ef763a..2c5e47857 100644
--- a/src/content/docs/dropins/order/functions.mdx
+++ b/src/content/docs/dropins/order/functions.mdx
@@ -8,3 +8,542 @@ tableOfContents:
import Aside from '@components/Aside.astro';
import OptionsTable from '@components/OptionsTable.astro';
+import CodeInclude from '@components/CodeInclude.astro';
+import orderDataModel from '_includes/order-data-model.ts?raw';
+
+The Order drop-in component provides the following API endpoints, allowing developers to perform various account-related operations and create custom implementations:
+
+## cancelOrder
+
+The `cancelOrder` function is a wrapper for the [`cancelOrder`](https://developer.adobe.com/commerce/webapi/graphql/schema/orders/mutations/cancel-order/) mutation. You must pass an order ID and reason,
+
+```ts
+export const cancelOrder = async (
+ orderId: string,
+ reason: string,
+ onSuccess: Function,
+ onError: Function
+): Promise
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to a void, null, or undefined value.
+
+### Usage
+
+```js
+cancelOrder(
+ {
+ orderId: '12345',;
+ reason: 'I don't like the color;
+ }
+)
+```
+
+## confirmCancelOrder
+
+The `confirmCancelOrder` function confirms the cancellation of an order after the guest user clicks on a URL provided in an order cancellation confirmation email. The confirmation key is generated when the guest requests to cancel an order.
+
+```ts
+confirmCancelOrder(
+ orderId: string,
+ confirmationKey: string
+): Promise;
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to an `OrderDataModel` object.
+
+
+
+### Usage
+
+```js
+import { confirmCancelOrder } from './confirmCancelOrder';
+
+const orderId = '12345';
+const confirmationKey = 'abcde12345';
+
+confirmCancelOrder(orderId, confirmationKey)
+ .then(response => {
+ console.log('Order cancellation confirmed:', response);
+ })
+ .catch(error => {
+ console.error('Error confirming order cancellation:', error);
+ });
+```
+
+## getAttributesForm
+
+The `getAttributesForm` function is a wrapper for the [`attributesForm`](https://developer.adobe.com/commerce/webapi/graphql/schema/attributes/queries/attributes-form/) query. You must pass an attribute code to retrieve the form.
+
+```ts
+export const getAttributesForm = async (
+ formCode: string
+): Promise
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to an array of `AttributesFormModel` objects.
+
+```ts
+export interface AttributesFormItemsProps {
+ code?: string;
+ name?: string;
+ id?: string;
+ required?: boolean;
+ label?: string;
+ options?: { is_default: boolean; label: string; value: string }[];
+ entityType?: string;
+ className?: string;
+ defaultValue?: string | boolean | number;
+ fieldType?: FieldEnumList;
+ multilineCount?: number;
+ isUnique?: boolean;
+ orderNumber: number;
+ isHidden?: boolean;
+ customUpperCode: string;
+ validateRules: Record[];
+}
+
+export interface AttributesFormModel extends AttributesFormItemsProps {}
+```
+
+### Usage
+
+```ts
+getAttributesForm(formCode: 'customer_address_edit');
+```
+
+## getAttributesList
+
+The `getAttributesList` function is a wrapper for the [`attributesList`](https://developer.adobe.com/commerce/webapi/graphql/schema/attributes/queries/attributes-list/) query. You must pass an attribute code to retrieve the list. The system default values are `CUSTOMER`, `CUSTOMER_ADDRESS`, `CATALOG_PRODUCT` and `RMA_ITEM`.
+
+```ts
+export const getAttributesList = async (
+ entityType: string
+): Promise
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to an array of `AttributesFormModel` objects or an empty array.
+
+```ts
+export interface AttributesFormItemsProps {
+ code?: string;
+ name?: string;
+ id?: string;
+ required?: boolean;
+ label?: string;
+ options?: { is_default: boolean; label: string; value: string }[];
+ entityType?: string;
+ className?: string;
+ defaultValue?: string | boolean | number;
+ fieldType?: FieldEnumList;
+ multilineCount?: number;
+ isUnique?: boolean;
+ orderNumber: number;
+ isHidden?: boolean;
+ customUpperCode: string;
+ validateRules: Record[];
+}
+
+export interface AttributesFormModel extends AttributesFormItemsProps {}
+```
+
+### Usage
+
+```ts
+getAttributesList(entityType: 'RMA_ITEM');
+```
+
+## getCustomer
+
+The `getCustomer` function is a wrapper for the [`customer`](https://developer.adobe.com/commerce/webapi/graphql/schema/customer/queries/customer/) query. You must pass a customer ID to retrieve the customer data.
+
+```ts
+export const getCustomer = async (): Promise
+```
+### Returns
+
+Returns a promise that resolves to a `CustomerDataModelShort` object.
+
+```ts
+export interface CustomerDataModelShort {
+ firstname: string;
+ lastname: string;
+ email: string;
+}
+```
+
+### Usage
+
+```ts
+getCustomer();
+```
+## getCustomerOrdersReturn
+
+The `getCustomerOrdersReturn` function returns details about the returns a customer has requested. It is a wrapper for the [`customer`](https://developer.adobe.com/commerce/webapi/graphql/schema/customer/queries/customer/) query.
+
+```ts
+export const getCustomerOrdersReturn = async (
+ pageSize = 10
+): Promise
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to a `CustomerOrdersReturnModel` object or null.
+
+```ts
+export interface CustomerOrdersReturnModel {
+ ordersReturn: OrdersReturnPropsModel[];
+ pageInfo?: PageInfoProps;
+}
+
+export interface OrdersReturnItemsPropsModel extends OrderItemModel {
+ quantity: number;
+ requestQuantity: number;
+ status: string;
+ uid: string;
+}
+
+export interface PageInfoProps {
+ pageSize: number;
+ totalPages: number;
+ currentPage: number;
+}
+```
+
+### Usage
+
+The following example demonstrates how to retrieve a customer's return orders:
+
+```ts
+getCustomerOrdersReturn();
+```
+
+## getGuestOrder
+
+The `getGuestOrder` function is a wrapper for the [`guestOrder`](https://developer.adobe.com/commerce/webapi/graphql/schema/orders/queries/guest-order/) query.
+
+```ts
+export const getGuestOrder = async (form: {
+ number: string;
+ email: string;
+ lastname: string;
+}): Promise
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to an `OrderDataModel` object or null.
+
+
+
+### Usage
+
+The following example demonstrates how to retrieve a guest order:
+
+```ts
+getGuestOrder({
+ number: '12345',
+ email: 'jdoe@example.com',
+ lastname: 'Doe'
+});
+```
+
+## getOrderDetailsById
+
+The `getOrderDetailsById` function is a wrapper for the [`customer`](https://developer.adobe.com/commerce/webapi/graphql/schema/customer/queries/customer/) query. You must pass an order ID to retrieve the order details.
+
+```ts
+export const getOrderDetailsById = async ({
+ orderId,
+ returnRef,
+ queryType,
+ returnsPageSize = 50,
+}: GetOrderDetailsByIdProps): Promise>
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to a `TransformedData` object.
+
+### Usage
+
+type QueryType = 'orderData';
+
+```ts
+getOrderDetailsById(
+ orderId?: string;
+ queryType: QueryType;
+);
+```
+
+## getStoreConfig
+
+The `getStoreConfig` function returns information about the storefront configuration. It is a wrapper for the [`storeConfig`](https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/store-config/) query.
+
+```ts
+export const getStoreConfig = async (): Promise
+```
+
+### Returns
+
+Returns a promise that resolves to a `StoreConfigModel` object or null.
+
+```ts
+type StoreConfigModel = {
+ order_cancellation_enabled: boolean;
+ order_cancellation_reasons: {
+ description: string;
+ };
+};
+```
+
+### Usage
+
+The following example demonstrates how to retrieve the store configuration:
+
+```ts
+getStoreConfig();
+```
+
+## guestOrderByToken
+
+The `guestOrderByToken` function retrieves a guest order using a token generated by Adobe Commerce. It is a wrapper for the `guestOrderByToken` query.
+
+```ts
+export const guestOrderByToken = async (
+ token?: string,
+ returnRef?: string
+): Promise
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to an `OrderDataModel` object or null.
+
+
+
+### Usage
+
+```ts
+guestOrderByToken(token:'abcde12345');
+```
+
+## reorderItems
+
+The `reorderItems` function allows a logged-in customer to add all the products from a previous order into their cart. It is a wrapper for the [`reorderItems`](https://developer.adobe.com/commerce/webapi/graphql/schema/orders/mutations/reorder-items/) mutation.
+
+```ts
+export const reorderItems = async (
+ orderNumber: string
+): Promise
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to a `ReorderItemsProps` object.
+
+```ts
+export interface ReorderItemsResponse {
+ data: {
+ reorderItems: {
+ cart: {
+ itemsV2: {
+ items: { uid: string }[];
+ };
+ };
+ userInputErrors: UserInputErrorProps[];
+ };
+ };
+
+ errors?: {
+ message: string;
+ }[];
+}
+```
+
+### Usage
+
+The following example demonstrates how to reorder items from a previous order:
+
+```ts
+reorderItems(orderNumber: string);
+```
+
+## requestGuestOrderCancel
+
+The `requestGuestOrderCancel` function is simmilar to the `cancelOrder` function, but it is used for guest orders.
+The token is a unique value generated using guest's email, order number and postcode
+
+```ts
+export const requestGuestOrderCancel = async (
+ token: string,
+ reason: string,
+ onSuccess: Function,
+ onError: Function
+): Promise
+```
+
+
+
+### Returns
+
+Returns a promise that resolves to a boolean value.
+
+### Usage
+
+```ts
+requestGuestOrderCancel(
+ {
+ token: `abcde12345`,;
+ reason: `It is too big`;
+ }
+): boolean
+```
+
+## requestReturn
+
+The `requestReturn` function takes the `RequestReturnProps` form as an argument and initiates the process of returning items from an order. It is a wrapper for the [`requestReturn`](https://developer.adobe.com/commerce/webapi/graphql/schema/orders/mutations/request-return/) mutation.
+
+```ts
+export const requestReturn = async (
+ form: RequestReturnProps
+): Promise<{
+ uid: string;
+ number: string;
+ status: string;
+ createdAt: string;
+}>
+```
+
+
+
+The `RequestReturnProps` object has the following properties:
+
+```ts
+export interface RequestReturnProps {
+ orderUid: string;
+ contactEmail: string;
+ items: {
+ orderItemUid: string;
+ quantityToReturn: number;
+ selectedCustomAttributes?: { attribute_code: string; value: string }[];
+ enteredCustomAttributes?: { attribute_code: string; value: string }[];
+ }[];
+}
+```
+
+### Returns
+
+Returns a promise that resolves to an object containing the return request details.
+
+### Usage
+
+```ts
+requestReturn(token:'abcde12345');
+```
diff --git a/src/content/docs/dropins/order/initialization.mdx b/src/content/docs/dropins/order/initialization.mdx
index 891763366..c41e2d0e8 100644
--- a/src/content/docs/dropins/order/initialization.mdx
+++ b/src/content/docs/dropins/order/initialization.mdx
@@ -6,3 +6,92 @@ description: Learn how to configure initializer for the Order drop-in component.
import OptionsTable from '@components/OptionsTable.astro';
The order drop-in component initializer provides options for configuring language definitions and extending the default models with new fields and transformers.
+
+The initialization code is located in the `/scripts/initializers/order.js` file of the boilerplate.
+
+## Configuration options
+
+The initialization process relies on several key parameters to handle automated redirects and initialize components under different conditions, such as handling errors during order data fetching. Containers within the order drop-in DO NOT fetch data themselves. Instead, they listen for the `order/data` event and use the received order data for initialization. This applies to both order and return pages.
+
+
+
+The following code shows an example implementation of the order initializer configuration:
+
+```js
+await initializers.mountImmediately(initialize, {
+ langDefinitions,
+ orderRef,
+ returnRef,
+});
+```
+## Redirection
+
+The following outlines the current redirect behaviors handled within initialization code. The constants referenced below are defined in the `/scripts/constants.js` file within the boilerplate setup:
+
+### Page loads
+
+The authentication status of the user factors into how the page is loaded.
+
+#### Authenticated users
+
+If the user is authenticated and no `orderRef` URL parameter is provided, redirect to CUSTOMER_ORDERS_PATH.
+
+Otherwise, the type of page determines the redirect behavior.
+
+On an account page (the `pathname` includes `CUSTOMER_PATH`):
+
+- If the `orderRef` URL parameter is provided with a valid token, redirect to `${ORDER_DETAILS_PATH}?orderRef={orderRef}`.
+
+- If no valid token is provided in the `orderRef` URL parameter, proceed without a redirect.
+
+On all other pages:
+
+- If an `orderRef` URL parameter is provided with a valid token, proceed without a redirect.
+
+- If a valid token is not provided in the `orderRef` URL parameter, redirect to `${CUSTOMER_ORDER_DETAILS_PATH}?orderRef={orderRef}`.
+
+#### Unauthenticated users
+
+If the user is not authenticated:
+
+- If the `orderRef` URL parameter is provided, proceed without a redirect.
+
+- If no `orderRef` URL parameter is provided, redirect to ORDER_STATUS_PATH.
+
+### Error handling
+
+An `order/error` event is emitted when an error occurs during order data fetching. The event listener redirects the user based on the following conditions:
+
+- If the user is authenticated, redirect to CUSTOMER_ORDERS_PATH.
+
+- If the user is not authenticated, then the behavior depends on the presence of an `orderRef` URL parameter:
+
+ - If it is present, along with a valid order token, redirect to ORDER_STATUS_PATH.
+ - Otherwise, redirect to ORDER_STATUS_PATH with the `orderRef` parameter from the current URL.
+
+## Initialization example
+
+Import /scripts/initializers/order.js into the appropriate file, as shown in the initialization of the `commerce-order-product-list` block:
+
+```js
+/* eslint-disable import/no-unresolved */
+/* eslint-disable import/no-extraneous-dependencies */
+import { render as orderRenderer } from '@dropins/storefront-order/render.js';
+import { OrderProductList } from '@dropins/storefront-order/containers/OrderProductList.js';
+
+// Initialize
+import '../../scripts/initializers/order.js';
+
+export default async function decorate(block) {
+ await orderRenderer.render(OrderProductList, {
+ routeProductDetails: (product) => `/products/${product.productUrlKey}/${product.product.sku}`,
+ })(block);
+}
+```
diff --git a/src/content/docs/dropins/payment-services/dictionary.mdx b/src/content/docs/dropins/payment-services/dictionary.mdx
new file mode 100644
index 000000000..c9f23e16a
--- /dev/null
+++ b/src/content/docs/dropins/payment-services/dictionary.mdx
@@ -0,0 +1,11 @@
+---
+title: Payment Services dictionary
+description: Learn how to customize the default dictionary for the Payment Service drop-in component.
+---
+
+import CodeImport from '@components/CodeImport.astro';
+import CodeInclude from '@components/CodeInclude.astro';
+
+The default Payment Services dictionary file (`i18n/en_US.json`) contains the default values for all labels and text common to the Payment Services drop-in component.
+
+## Default keys and values
diff --git a/src/content/docs/dropins/product-details/pdp-containers.mdx b/src/content/docs/dropins/product-details/containers.mdx
similarity index 99%
rename from src/content/docs/dropins/product-details/pdp-containers.mdx
rename to src/content/docs/dropins/product-details/containers.mdx
index 04bdaccce..5665df2f9 100644
--- a/src/content/docs/dropins/product-details/pdp-containers.mdx
+++ b/src/content/docs/dropins/product-details/containers.mdx
@@ -102,7 +102,7 @@ View the [Example configuration](#example-configuration) section for an example
## Slots
-Slots allow for the customization of component parts. Each slot accepts a `SlotProps` object with a context containing `data`, `values`, and a `valid` state. Custom actions and content can be added through these slots. Visit the [Slots](/dropins/product-details/pdp-slots/) page for slot details and usage information.
+Slots allow for the customization of component parts. Each slot accepts a `SlotProps` object with a context containing `data`, `values`, and a `valid` state. Custom actions and content can be added through these slots. Visit the [Slots](/dropins/product-details/slots/) page for slot details and usage information.
## Carousel
diff --git a/src/content/docs/dropins/product-details/dictionary.mdx b/src/content/docs/dropins/product-details/dictionary.mdx
new file mode 100644
index 000000000..c312515ee
--- /dev/null
+++ b/src/content/docs/dropins/product-details/dictionary.mdx
@@ -0,0 +1,14 @@
+---
+title: Product details page dictionary
+description: Learn how to customize the default dictionary for the product details page (PDP) drop-in component.
+---
+
+import CodeImport from '@components/CodeImport.astro';
+import CodeInclude from '@components/CodeInclude.astro';
+import dictionary from '@dropins/storefront-pdp/i18n/en_US.json.d.ts?raw';
+
+The product details page (PDP) dictionary file (`i18n/en_US.json`) contains the default values for all labels and text common to the PDP drop-in component.
+
+## Default keys and values
+
+
diff --git a/src/content/docs/dropins/product-details/pdp-functions.mdx b/src/content/docs/dropins/product-details/functions.mdx
similarity index 100%
rename from src/content/docs/dropins/product-details/pdp-functions.mdx
rename to src/content/docs/dropins/product-details/functions.mdx
diff --git a/src/content/docs/dropins/product-details/pdp-initialization.mdx b/src/content/docs/dropins/product-details/initialization.mdx
similarity index 100%
rename from src/content/docs/dropins/product-details/pdp-initialization.mdx
rename to src/content/docs/dropins/product-details/initialization.mdx
diff --git a/src/content/docs/dropins/product-details/pdp-installation.mdx b/src/content/docs/dropins/product-details/installation.mdx
similarity index 100%
rename from src/content/docs/dropins/product-details/pdp-installation.mdx
rename to src/content/docs/dropins/product-details/installation.mdx
diff --git a/src/content/docs/dropins/product-details/pdp-slots.mdx b/src/content/docs/dropins/product-details/slots.mdx
similarity index 100%
rename from src/content/docs/dropins/product-details/pdp-slots.mdx
rename to src/content/docs/dropins/product-details/slots.mdx
diff --git a/src/content/docs/dropins/product-details/pdp-styles.mdx b/src/content/docs/dropins/product-details/styles.mdx
similarity index 100%
rename from src/content/docs/dropins/product-details/pdp-styles.mdx
rename to src/content/docs/dropins/product-details/styles.mdx
diff --git a/src/content/docs/dropins/user-account/dictionary.mdx b/src/content/docs/dropins/user-account/dictionary.mdx
new file mode 100644
index 000000000..402821091
--- /dev/null
+++ b/src/content/docs/dropins/user-account/dictionary.mdx
@@ -0,0 +1,14 @@
+---
+title: User account dictionary
+description: Learn how to customize the default dictionary for the user account drop-in component.
+---
+
+import CodeImport from '@components/CodeImport.astro';
+import CodeInclude from '@components/CodeInclude.astro';
+import dictionary from '@dropins/storefront-account/i18n/en_US.json.d.ts?raw';
+
+The default user account dictionary file (`i18n/en_US.json`) contains the default values for all labels and text common to the user account drop-in component.
+
+## Default keys and values
+
+
diff --git a/src/content/docs/dropins/user-auth/dictionary.mdx b/src/content/docs/dropins/user-auth/dictionary.mdx
new file mode 100644
index 000000000..1de91eaf6
--- /dev/null
+++ b/src/content/docs/dropins/user-auth/dictionary.mdx
@@ -0,0 +1,14 @@
+---
+title: User authentication dictionary
+description: Learn how to customize the default dictionary for the user authentication drop-in component.
+---
+
+import CodeImport from '@components/CodeImport.astro';
+import CodeInclude from '@components/CodeInclude.astro';
+import dictionary from '@dropins/storefront-auth/i18n/en_US.json.d.ts?raw';
+
+The default user authentication dictionary file (`i18n/en_US.json`) contains the default values for all labels and text common to the user authentication drop-in component.
+
+## Default keys and values
+
+
diff --git a/src/content/docs/resources/placeholders.mdx b/src/content/docs/resources/placeholders.mdx
new file mode 100644
index 000000000..6dad0cf31
--- /dev/null
+++ b/src/content/docs/resources/placeholders.mdx
@@ -0,0 +1,532 @@
+---
+title: Placeholders file
+description: Placeholders file
+tableOfContents: false
+---
+
+
+The `placeholders` file is the source for storefront labels across drop-in components. The `placeholders` file has two columns: **Key** and **Value**. The Key column contains the text variables that are replaced at runtime. The Value column contains the text values that replace the variables. This file provides a quick and easy way for content creators and merchants to make changes to the site's labels without developer involvement.
+
+## Placeholders default values
+
+The initial values in the `placeholder` file within the boilerplate's starter content provides the default out-of-the-box labels for the drop-in components.
+
+| **Key** | **Value** |
+|-----------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| PDP\.Product\.Incrementer\.label | Item Quantity |
+| PDP\.Product\.OutOfStock\.label | Out of Stock |
+| PDP\.Product\.AddToCart\.label | Add to Cart |
+| PDP\.Product\.Details\.label | Details |
+| PDP\.Product\.RegularPrice\.label | Regular Price |
+| PDP\.Product\.SpecialPrice\.label | Special Price |
+| PDP\.Product\.PriceRange\.From\.label | From |
+| PDP\.Product\.PriceRange\.To\.label | to |
+| PDP\.Product\.Image\.label | \{product\} Image \{key\} of \{total\} |
+| PDP\.Swatches\.Required\.label | Required |
+| PDP\.Swatches\.ChooseOption\.label | Choose an option |
+| PDP\.Carousel\.label | Carousel |
+| PDP\.Carousel\.Next\.label | Next |
+| PDP\.Carousel\.Previous\.label | Previous |
+| PDP\.Carousel\.Slide\.label | Slide |
+| PDP\.Carousel\.Controls\.label | Carousel Controls |
+| PDP\.Carousel\.Controls\.Button\.label | Show slide \{key\} of \{total\} |
+| PDP\.Overlay\.Close\.label | Close |
+| PDP\.Zoom\.Close\.label | Close |
+| Cart\.Cart\.heading | Shopping Cart \(\{count\}\) |
+| Cart\.Cart\.editCart | Edit |
+| Cart\.Cart\.viewAll | View all in cart |
+| Cart\.Cart\.viewMore | View more |
+| Cart\.MiniCart\.heading | Shopping Cart \(\{count\}\) |
+| Cart\.MiniCart\.subtotal | Subtotal |
+| Cart\.MiniCart\.subtotalExcludingTaxes | Subtotal excluding taxes |
+| Cart\.MiniCart\.cartLink | View Cart |
+| Cart\.MiniCart\.checkoutLink | Checkout |
+| Cart\.EmptyCart\.heading | Your cart is empty |
+| Cart\.EmptyCart\.cta | Start shopping |
+| Cart\.PriceSummary\.taxToBeDetermined | TBD |
+| Cart\.PriceSummary\.checkout | Checkout |
+| Cart\.PriceSummary\.orderSummary | Order Summary |
+| Cart\.PriceSummary\.subTotal\.label | Subtotal |
+| Cart\.PriceSummary\.subTotal\.withTaxes | Including taxes |
+| Cart\.PriceSummary\.subTotal\.withoutTaxes | excluding taxes |
+| Cart\.PriceSummary\.shipping\.label | Shipping |
+| Cart\.PriceSummary\.shipping\.editZipAction | Apply |
+| Cart\.PriceSummary\.shipping\.estimated | Estimated Shipping |
+| Cart\.PriceSummary\.shipping\.estimatedDestination | Estimated Shipping to |
+| Cart\.PriceSummary\.shipping\.destinationLinkAriaLabel | Change destination |
+| Cart\.PriceSummary\.shipping\.zipPlaceholder | Zip Code |
+| Cart\.PriceSummary\.shipping\.withTaxes | Including taxes |
+| Cart\.PriceSummary\.shipping\.withoutTaxes | excluding taxes |
+| Cart\.PriceSummary\.shipping\.alternateField\.zip | Estimate using country/zip |
+| Cart\.PriceSummary\.shipping\.alternateField\.state | Estimate using country/state |
+| Cart\.PriceSummary\.taxes\.total | Tax Total |
+| Cart\.PriceSummary\.taxes\.totalOnly | Tax |
+| Cart\.PriceSummary\.taxes\.breakdown | Taxes |
+| Cart\.PriceSummary\.taxes\.showBreakdown | Show Tax Breakdown |
+| Cart\.PriceSummary\.taxes\.hideBreakdown | Hide Tax Breakdown |
+| Cart\.PriceSummary\.taxes\.estimated | Estimated Tax |
+| Cart\.PriceSummary\.total\.estimated | Estimated Total |
+| Cart\.PriceSummary\.total\.free | Free |
+| Cart\.PriceSummary\.total\.label | Total |
+| Cart\.PriceSummary\.total\.withoutTax | Total excluding taxes |
+| Cart\.PriceSummary\.estimatedShippingForm\.country\.placeholder | Country |
+| Cart\.PriceSummary\.estimatedShippingForm\.state\.placeholder | State |
+| Cart\.PriceSummary\.estimatedShippingForm\.zip\.placeholder | Zip Code |
+| Cart\.PriceSummary\.estimatedShippingForm\.apply\.label | Apply |
+| Cart\.PriceSummary\.freeShipping | Free |
+| Cart\.PriceSummary\.coupon\.applyAction | Apply |
+| Cart\.PriceSummary\.coupon\.placeholder | Enter code |
+| Cart\.PriceSummary\.coupon\.title | Discount code |
+| Cart\.CartItem\.discountedPrice | Discounted Price |
+| Cart\.CartItem\.download | file |
+| Cart\.CartItem\.message | Note |
+| Cart\.CartItem\.recipient | To |
+| Cart\.CartItem\.regularPrice | Regular Price |
+| Cart\.CartItem\.sender | From |
+| Cart\.CartItem\.file | \{count\} file |
+| Cart\.CartItem\.files | \{count\} files |
+| Cart\.CartItem\.lowInventory | Only \{count\} left\! |
+| Cart\.CartItem\.insufficientQuantity | Only \{inventory\} of \{count\} in stock |
+| Cart\.CartItem\.insufficientQuantityGeneral | Not enough items for sale |
+| Cart\.CartItem\.notAvailableMessage | Requested qty\. not available |
+| Cart\.CartItem\.discountPercentage | \{discount\}% off |
+| Cart\.CartItem\.savingsAmount | Savings |
+| Cart\.EstimateShipping\.label | Shipping |
+| Cart\.EstimateShipping\.editZipAction | Apply |
+| Cart\.EstimateShipping\.estimated | Estimated Shipping |
+| Cart\.EstimateShipping\.estimatedDestination | Estimated Shipping to |
+| Cart\.EstimateShipping\.destinationLinkAriaLabel | Change destination |
+| Cart\.EstimateShipping\.zipPlaceholder | Zip Code |
+| Cart\.EstimateShipping\.withTaxes | Including taxes |
+| Cart\.EstimateShipping\.withoutTaxes | excluding taxes |
+| Cart\.EstimateShipping\.alternateField\.zip | Estimate using country/zip |
+| Cart\.EstimateShipping\.alternateField\.state | Estimate using country/state |
+| Cart\.OutOfStockMessage\.heading | Your cart contains items with limited stock |
+| Cart\.OutOfStockMessage\.message | Please adjust quantities to continue |
+| Cart\.OutOfStockMessage\.alert | Out of stock |
+| Cart\.OutOfStockMessage\.action | Remove all out of stock items from cart |
+| Checkout\.title | Checkout |
+| Checkout\.LoginForm\.title | Contact details |
+| Checkout\.LoginForm\.account | Already have an account? |
+| Checkout\.LoginForm\.ariaLabel | Email |
+| Checkout\.LoginForm\.invalidEmailError | Please enter a valid email address\. |
+| Checkout\.LoginForm\.missingEmailError | Enter an email address\. |
+| Checkout\.LoginForm\.emailExists\.alreadyHaveAccount | It looks like you already have an account\. |
+| Checkout\.LoginForm\.emailExists\.signInButton | Sign in |
+| Checkout\.LoginForm\.emailExists\.forFasterCheckout | for a faster checkout\. |
+| Checkout\.LoginForm\.floatingLabel | Email \* |
+| Checkout\.LoginForm\.placeholder | Enter your email address |
+| Checkout\.LoginForm\.signIn | Sign In |
+| Checkout\.LoginForm\.switch | Do you want to switch account? |
+| Checkout\.LoginForm\.signOut | Sign Out |
+| Checkout\.ShippingMethods\.title | Shipping options |
+| Checkout\.ShippingMethods\.emptyState | This order can't be shipped to the address provided\. Please review the address details you entered and make sure they're correct\. |
+| Checkout\.BillToShippingAddress\.title | Bill to shipping address |
+| Checkout\.PaymentMethods\.title | Payment |
+| Checkout\.PaymentMethods\.emptyState | No payment methods available |
+| Checkout\.OutOfStock\.title | Your cart contains items that are out of stock |
+| Checkout\.OutOfStock\.message | The following items are out of stock: |
+| Checkout\.OutOfStock\.actions\.reviewCart | Review cart |
+| Checkout\.OutOfStock\.actions\.removeOutOfStock | Remove out of stock items |
+| Checkout\.OutOfStock\.lowInventory\.one | Last item\! |
+| Checkout\.OutOfStock\.lowInventory\.many | Only \{\{count\}\} left\! |
+| Checkout\.OutOfStock\.alert | Out of stock\! |
+| Checkout\.PlaceOrder\.button | Place Order |
+| Checkout\.ServerError\.title | We were unable to process your order |
+| Checkout\.ServerError\.contactSupport | If you continue to have issues, please contact support\. |
+| Checkout\.ServerError\.unexpected | An unexpected error occurred while processing your order\. Please try again later\. |
+| Checkout\.ServerError\.button | Try again |
+| Checkout\.EmptyCart\.title | Your cart is empty |
+| Checkout\.EmptyCart\.button | Start shopping |
+| Checkout\.ErrorBanner\.genericMessage | Server error detected\. Please check your connection and try again\. |
+| Checkout\.MergedCartBanner\.items\.one | 1 item from a previous session was added to your cart\. Please review your new subtotal\. |
+| Checkout\.MergedCartBanner\.items\.many | \{\{count\}\} items from a previous session were added to your cart\. Please review your new subtotal\. |
+| Checkout\.EstimateShipping\.estimated | Estimated Shipping |
+| Checkout\.EstimateShipping\.freeShipping | Free |
+| Checkout\.EstimateShipping\.label | Shipping |
+| Checkout\.EstimateShipping\.taxToBeDetermined | TBD |
+| Checkout\.EstimateShipping\.withTaxes | Including taxes |
+| Checkout\.EstimateShipping\.withoutTaxes | Excluding taxes |
+| Checkout\.OrderConfirmationHeader\.title | \{\{name\}\}, thank you for your order\! |
+| Checkout\.OrderConfirmationHeader\.defaultTitle | Thank you for your order\! |
+| Checkout\.OrderConfirmationHeader\.order | ORDER \#\{\{order\}\} |
+| Checkout\.OrderConfirmationHeader\.CreateAccount\.message | Save your information for faster checkout next time\. |
+| Checkout\.OrderConfirmationHeader\.CreateAccount\.button | Create an account |
+| OrderConfirmation\.Header\.title | \{\{name\}\}, thank you for your order\! |
+| OrderConfirmation\.Header\.defaultTitle | Thank you for your order\! |
+| OrderConfirmation\.Header\.order | ORDER \#\{\{order\}\} |
+| OrderConfirmation\.Header\.CreateAccount\.message | Save your information for faster checkout next time\. |
+| OrderConfirmation\.Header\.CreateAccount\.button | Create an account |
+| OrderConfirmation\.OrderSearchForm\.title | Enter your information to view order details |
+| OrderConfirmation\.OrderSearchForm\.description | You can find your order number in the receipt you received via email\. |
+| OrderConfirmation\.OrderSearchForm\.button | View Order |
+| OrderConfirmation\.OrderSearchForm\.email | Email |
+| OrderConfirmation\.OrderSearchForm\.postcode | Zip Code |
+| OrderConfirmation\.OrderSearchForm\.orderNumber | Order Number |
+| OrderConfirmation\.OrderSummary\.title | Order summary |
+| OrderConfirmation\.OrderSummary\.total | Total |
+| OrderConfirmation\.OrderSummary\.totalExclTax | Total excluding taxes |
+| OrderConfirmation\.OrderSummary\.subtotal | Subtotal |
+| OrderConfirmation\.OrderSummary\.tax | Tax |
+| OrderConfirmation\.OrderSummary\.taxTotal | Tax total |
+| OrderConfirmation\.OrderSummary\.taxBreakdown | Taxes |
+| OrderConfirmation\.OrderSummary\.includingTaxes | Including taxes |
+| OrderConfirmation\.OrderSummary\.shipping | Shipping |
+| OrderConfirmation\.OrderSummary\.freeShipping | Free shipping |
+| OrderConfirmation\.Message\.title | Your order is confirmed |
+| OrderConfirmation\.Message\.description | We have successfully processed your order and will be soon prepared for shipping\. You will also receive an email with details and we will let you know when your order has shipped\. |
+| OrderConfirmation\.Details\.title | Order details |
+| OrderConfirmation\.Details\.contact | Contact details |
+| OrderConfirmation\.Details\.shippingAddress | Shipping address |
+| OrderConfirmation\.Details\.billingAddress | Billing address |
+| OrderConfirmation\.Details\.shippingMethod | Shipping method |
+| OrderConfirmation\.Details\.freeShipping | Free shipping |
+| OrderConfirmation\.Details\.paymentMethod | Payment method |
+| OrderConfirmation\.Footer\.continueShopping | Continue shopping |
+| OrderConfirmation\.Footer\.help | Need help? |
+| OrderConfirmation\.Footer\.contactSupport | Contact us |
+| OrderConfirmation\.CartSummary\.title | Your order |
+| OrderConfirmation\.CartSummary\.GiftCard\.sender | Sender |
+| OrderConfirmation\.CartSummary\.GiftCard\.recipient | Recipient |
+| OrderConfirmation\.Errors\.invalidOrder | Invalid order\. Please try again\. |
+| OrderConfirmation\.Errors\.invalidSearch | No order found with these order details\. |
+| OrderConfirmation\.Errors\.unknown | Something went wrong\. Please try again\. |
+| Order\.CreateReturn\.headerText | Return items |
+| Order\.CreateReturn\.downloadableCount | Files |
+| Order\.CreateReturn\.returnedItems | Returned items: |
+| Order\.CreateReturn\.stockStatus\.inStock | In stock |
+| Order\.CreateReturn\.stockStatus\.outOfStock | Out of stock |
+| Order\.CreateReturn\.giftCard\.sender | Sender |
+| Order\.CreateReturn\.giftCard\.recipient | Recipient |
+| Order\.CreateReturn\.giftCard\.message | Note |
+| Order\.CreateReturn\.success\.title | Return submitted |
+| Order\.CreateReturn\.success\.message | Your return request has been successfully submitted\. |
+| Order\.CreateReturn\.buttons\.nextStep | Continue |
+| Order\.CreateReturn\.buttons\.backStep | Back |
+| Order\.CreateReturn\.buttons\.submit | Submit return |
+| Order\.CreateReturn\.buttons\.backStore | Back to order |
+| Order\.OrderCostSummary\.headerText | Order summary |
+| Order\.OrderCostSummary\.headerReturnText | Return summary |
+| Order\.OrderCostSummary\.subtotal\.title | Subtotal |
+| Order\.OrderCostSummary\.shipping\.title | Shipping |
+| Order\.OrderCostSummary\.shipping\.freeShipping | Free shipping |
+| Order\.OrderCostSummary\.tax\.accordionTitle | Taxes |
+| Order\.OrderCostSummary\.tax\.accordionTotalTax | Tax Total |
+| Order\.OrderCostSummary\.tax\.totalExcludingTaxes | Total excluding taxes |
+| Order\.OrderCostSummary\.tax\.title | Tax |
+| Order\.OrderCostSummary\.tax\.incl | Including taxes |
+| Order\.OrderCostSummary\.tax\.excl | Excluding taxes |
+| Order\.OrderCostSummary\.discount\.title | Discount |
+| Order\.OrderCostSummary\.discount\.subtitle | discounted |
+| Order\.OrderCostSummary\.total\.title | Total |
+| Order\.Returns\.minifiedView\.returnsList\.viewAllOrdersButton | View all returns |
+| Order\.Returns\.minifiedView\.returnsList\.ariaLabelLink | Redirect to full order information |
+| Order\.Returns\.minifiedView\.returnsList\.emptyOrdersListMessage | No returns |
+| Order\.Returns\.minifiedView\.returnsList\.minifiedViewTitle | Recent returns |
+| Order\.Returns\.minifiedView\.returnsList\.orderNumber | Order number: |
+| Order\.Returns\.minifiedView\.returnsList\.returnNumber | Return number: |
+| Order\.Returns\.minifiedView\.returnsList\.carrier | Carrier: |
+| Order\.Returns\.minifiedView\.returnsList\.itemText\.none | |
+| Order\.Returns\.minifiedView\.returnsList\.itemText\.one | item |
+| Order\.Returns\.minifiedView\.returnsList\.itemText\.many | items |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.pending | Pending |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.authorized | Authorized |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.partiallyAuthorized | Partially authorized |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.received | Received |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.partiallyReceived | Partially received |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.approved | Approved |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.partiallyApproved | Partially approved |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.rejected | Rejected |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.partiallyRejected | Partially rejected |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.denied | Denied |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.processedAndClosed | Processed and closed |
+| Order\.Returns\.minifiedView\.returnsList\.returnStatus\.closed | Closed |
+| Order\.Returns\.fullSizeView\.returnsList\.viewAllOrdersButton | View all orders |
+| Order\.Returns\.fullSizeView\.returnsList\.ariaLabelLink | Redirect to full order information |
+| Order\.Returns\.fullSizeView\.returnsList\.emptyOrdersListMessage | No returns |
+| Order\.Returns\.fullSizeView\.returnsList\.minifiedViewTitle | Returns |
+| Order\.Returns\.fullSizeView\.returnsList\.orderNumber | Order number: |
+| Order\.Returns\.fullSizeView\.returnsList\.returnNumber | Return number: |
+| Order\.Returns\.fullSizeView\.returnsList\.carrier | Carrier: |
+| Order\.Returns\.fullSizeView\.returnsList\.itemText\.none | |
+| Order\.Returns\.fullSizeView\.returnsList\.itemText\.one | item |
+| Order\.Returns\.fullSizeView\.returnsList\.itemText\.many | items |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.pending | Pending |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.authorized | Authorized |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.partiallyAuthorized | Partially authorized |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.received | Received |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.partiallyReceived | Partially received |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.approved | Approved |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.partiallyApproved | Partially approved |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.rejected | Rejected |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.partiallyRejected | Partially rejected |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.denied | Denied |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.processedAndClosed | Processed and closed |
+| Order\.Returns\.fullSizeView\.returnsList\.returnStatus\.closed | Closed |
+| Order\.OrderProductListContent\.cancelledTitle | Cancelled |
+| Order\.OrderProductListContent\.allOrdersTitle | Your order |
+| Order\.OrderProductListContent\.returnedTitle | Returned |
+| Order\.OrderProductListContent\.refundedTitle | Your refunded |
+| Order\.OrderProductListContent\.downloadableCount | Files |
+| Order\.OrderProductListContent\.stockStatus\.inStock | In stock |
+| Order\.OrderProductListContent\.stockStatus\.outOfStock | Out of stock |
+| Order\.OrderProductListContent\.GiftCard\.sender | Sender |
+| Order\.OrderProductListContent\.GiftCard\.recipient | Recipient |
+| Order\.OrderProductListContent\.GiftCard\.message | Note |
+| Order\.OrderSearchForm\.title | Enter your information to view order details |
+| Order\.OrderSearchForm\.description | You can find your order number in the receipt you received via email\. |
+| Order\.OrderSearchForm\.button | View Order |
+| Order\.OrderSearchForm\.email | Email |
+| Order\.OrderSearchForm\.postcode | Zip Code |
+| Order\.OrderSearchForm\.orderNumber | Order Number |
+| Order\.Form\.notifications\.requiredFieldError | This is a required field\. |
+| Order\.ShippingStatusCard\.orderNumber | Order number: |
+| Order\.ShippingStatusCard\.returnNumber | Return number: |
+| Order\.ShippingStatusCard\.itemText\.none | |
+| Order\.ShippingStatusCard\.itemText\.one | Package contents \(\{\{count\}\} item\) |
+| Order\.ShippingStatusCard\.itemText\.many | Package contents \(\{\{count\}\} items\) |
+| Order\.ShippingStatusCard\.trackButton | Track package |
+| Order\.ShippingStatusCard\.carrier | Carrier: |
+| Order\.ShippingStatusCard\.prepositionOf | of |
+| Order\.ShippingStatusCard\.returnOrderCardTitle | Package details |
+| Order\.ShippingStatusCard\.shippingCardTitle | Package details |
+| Order\.ShippingStatusCard\.shippingInfoTitle | Shipping information |
+| Order\.ShippingStatusCard\.notYetShippedTitle | Not yet shipped |
+| Order\.ShippingStatusCard\.notYetShippedImagesTitle\.singular | Package contents \(\{\{count\}\} item\) |
+| Order\.ShippingStatusCard\.notYetShippedImagesTitle\.plural | Package contents \(\{\{count\}\} items\) |
+| Order\.OrderStatusContent\.noInfoTitle | Check back later for more details\. |
+| Order\.OrderStatusContent\.returnMessage | The order was placed on \{ORDER\_CREATE\_DATE\} and your return process started on \{RETURN\_CREATE\_DATE\} |
+| Order\.OrderStatusContent\.returnStatus\.pending | Pending |
+| Order\.OrderStatusContent\.returnStatus\.authorized | Authorized |
+| Order\.OrderStatusContent\.returnStatus\.partiallyAuthorized | Partially authorized |
+| Order\.OrderStatusContent\.returnStatus\.received | Received |
+| Order\.OrderStatusContent\.returnStatus\.partiallyReceived | Partially received |
+| Order\.OrderStatusContent\.returnStatus\.approved | Approved |
+| Order\.OrderStatusContent\.returnStatus\.partiallyApproved | Partially approved"" |
+| Order\.OrderStatusContent\.returnStatus\.rejected | Rejected |
+| Order\.OrderStatusContent\.returnStatus\.partiallyRejected | Partially rejected |
+| Order\.OrderStatusContent\.returnStatus\.denied | Denied |
+| Order\.OrderStatusContent\.returnStatus\.processedAndClosed | Processed and closed |
+| Order\.OrderStatusContent\.returnStatus\.closed | Closed |
+| Order\.OrderStatusContent\.actions\.cancel | Cancel order |
+| Order\.OrderStatusContent\.actions\.createReturn | Return or replace |
+| Order\.OrderStatusContent\.actions\.createAnotherReturn | Start another return |
+| Order\.OrderStatusContent\.actions\.reorder | Reorder |
+| Order\.OrderStatusContent\.orderPending\.title | Pending |
+| Order\.OrderStatusContent\.orderPending\.message | The order was successfully placed on \{DATE\} and your order is processing\. Check back for more details when your order ships\. |
+| Order\.OrderStatusContent\.orderPending\.messageWithoutDate | Your order is processing\. Check back for more details when your order ships\. |
+| Order\.OrderStatusContent\.orderProcessing\.title | Processing |
+| Order\.OrderStatusContent\.orderProcessing\.message | The order was successfully placed on \{DATE\} and your order is processing\. Check back for more details when your order ships\. |
+| Order\.OrderStatusContent\.orderProcessing\.messageWithoutDate | Your order is processing\. Check back for more details when your order ships\. |
+| Order\.OrderStatusContent\.orderOnHold\.title | On hold |
+| Order\.OrderStatusContent\.orderOnHold\.message | We�ve run into an issue while processing your order on \{DATE\}\. Please check back later or contact us at support@adobe\.com for more information\. |
+| Order\.OrderStatusContent\.orderOnHold\.messageWithoutDate | We�ve run into an issue while processing your order\. Please check back later or contact us at support@adobe\.com for more information\. |
+| Order\.OrderStatusContent\.orderReceived\.title | Order received |
+| Order\.OrderStatusContent\.orderReceived\.message | The order was successfully placed on \{DATE\} and your order is processing\. Check back for more details when your order ships\. |
+| Order\.OrderStatusContent\.orderReceived\.messageWithoutDate | Your order is processing\. Check back for more details when your order ships\. |
+| Order\.OrderStatusContent\.orderComplete\.title | Complete |
+| Order\.OrderStatusContent\.orderComplete\.message | Your order is complete\. Need help with your order? Contact us at support@adobe\.com |
+| Order\.OrderStatusContent\.orderCanceled\.title | Canceled |
+| Order\.OrderStatusContent\.orderCanceled\.message | This order was cancelled by you\. You should see a refund to your original payment method with 5\-7 business days\. |
+| Order\.OrderStatusContent\.orderCanceled\.messageWithoutDate | This order was cancelled by you\. You should see a refund to your original payment method with 5\-7 business days\. |
+| Order\.OrderStatusContent\.orderSuspectedFraud\.title | Suspected fraud |
+| Order\.OrderStatusContent\.orderSuspectedFraud\.message | We�ve run into an issue while processing your order on \{DATE\}\. Please check back later or contact us at support@adobe\.com for more information\. |
+| Order\.OrderStatusContent\.orderSuspectedFraud\.messageWithoutDate | We�ve run into an issue while processing your order\. Please check back later or contact us at support@adobe\.com for more information\. |
+| Order\.OrderStatusContent\.orderPaymentReview\.title | Payment Review |
+| Order\.OrderStatusContent\.orderPaymentReview\.message | The order was successfully placed on \{DATE\} and your order is processing\. Check back for more details when your order ships\. |
+| Order\.OrderStatusContent\.orderPaymentReview\.messageWithoutDate | Your order is processing\. Check back for more details when your order ships\. |
+| Order\.OrderStatusContent\.guestOrderCancellationRequested\.title | cancellation requested |
+| Order\.OrderStatusContent\.guestOrderCancellationRequested\.message | The cancellation has been requested on \{DATE\}\. Check your email for further instructions\. |
+| Order\.OrderStatusContent\.guestOrderCancellationRequested\.messageWithoutDate | The cancellation has been requested\. Check your email for further instructions\. |
+| Order\.CustomerDetails\.headerText | Customer information |
+| Order\.CustomerDetails\.freeShipping | Free shipping |
+| Order\.CustomerDetails\.orderReturnLabels\.createdReturnAt | Return requested on: |
+| Order\.CustomerDetails\.orderReturnLabels\.returnStatusLabel | Return status: |
+| Order\.CustomerDetails\.orderReturnLabels\.orderNumberLabel | Order number: |
+| Order\.CustomerDetails\.returnStatus\.pending | Pending |
+| Order\.CustomerDetails\.returnStatus\.authorized | Authorized |
+| Order\.CustomerDetails\.returnStatus\.partiallyAuthorized | Partially authorized |
+| Order\.CustomerDetails\.returnStatus\.received | Received |
+| Order\.CustomerDetails\.returnStatus\.partiallyReceived | Partially received |
+| Order\.CustomerDetails\.returnStatus\.approved | Approved |
+| Order\.CustomerDetails\.returnStatus\.partiallyApproved | Partially approved |
+| Order\.CustomerDetails\.returnStatus\.rejected | Rejected |
+| Order\.CustomerDetails\.returnStatus\.partiallyRejected | Partially rejected |
+| Order\.CustomerDetails\.returnStatus\.denied | Denied |
+| Order\.CustomerDetails\.returnStatus\.processedAndClosed | Processed and closed |
+| Order\.CustomerDetails\.returnStatus\.closed | Closed |
+| Order\.CustomerDetails\.email\.title | Contact details |
+| Order\.CustomerDetails\.shippingAddress\.title | Shipping address |
+| Order\.CustomerDetails\.shippingMethods\.title | Shipping method |
+| Order\.CustomerDetails\.billingAddress\.title | Billing address |
+| Order\.CustomerDetails\.paymentMethods\.title | Payment method |
+| Order\.CustomerDetails\.returnInformation\.title | Return details |
+| Order\.Errors\.invalidOrder | Invalid order\. Please try again\. |
+| Order\.Errors\.invalidSearch | No order found with these order details\. |
+| Order\.OrderCancel\.buttonText | Cancel Order |
+| Order\.OrderCancelForm\.title | Cancel order |
+| Order\.OrderCancelForm\.description | Select a reason for canceling the order |
+| Order\.OrderCancelForm\.label | Reason for cancel |
+| Order\.OrderCancelForm\.button | Submit Cancellation |
+| Order\.OrderCancelForm\.errorHeading | Error |
+| Order\.OrderCancelForm\.errorDescription | There was an error processing your order cancellation\. |
+| Account\.minifiedView\.CustomerInformation\.containerTitle | Account settings |
+| Account\.minifiedView\.CustomerInformation\.genderMale | Male |
+| Account\.minifiedView\.CustomerInformation\.genderFemale | Female |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.passwordValidationMessage\.chartTwoSymbols | Use characters and numbers or symbols |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.passwordValidationMessage\.chartThreeSymbols | Use characters, numbers and symbols |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.passwordValidationMessage\.chartFourSymbols | Use uppercase characters, lowercase characters, numbers and symbols |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.passwordValidationMessage\.messageLengthPassword | At least \{minLength\} characters long |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.passwordValidationMessage\.passwordMismatch | Passwords do not match\. Please make sure both password fields are identical |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.passwordValidationMessage\.incorrectCurrentPassword | The current password you entered is incorrect\. Please check and try again\. |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.passwordValidationMessage\.passwordUpdateMessage | Your password has been updated |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.containerTitle | Change password |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.currentPassword\.placeholder | Password |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.currentPassword\.floatingLabel | Password |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.newPassword\.placeholder | New Password |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.newPassword\.floatingLabel | New Password |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.confirmPassword\.placeholder | Confirm new password |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.confirmPassword\.floatingLabel | Confirm new password |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.buttonSecondary | Cancel |
+| Account\.minifiedView\.CustomerInformation\.changePassword\.buttonPrimary | Save |
+| Account\.minifiedView\.CustomerInformation\.customerInformationCard\.buttonSecondary | Change password |
+| Account\.minifiedView\.CustomerInformation\.customerInformationCard\.buttonPrimary | Edit |
+| Account\.minifiedView\.CustomerInformation\.customerInformationCard\.accountCreation | Account creation date |
+| Account\.minifiedView\.CustomerInformation\.editCustomerInformation\.containerTitle | Edit details |
+| Account\.minifiedView\.CustomerInformation\.editCustomerInformation\.buttonSecondary | Cancel |
+| Account\.minifiedView\.CustomerInformation\.editCustomerInformation\.buttonPrimary | Save |
+| Account\.minifiedView\.CustomerInformation\.editCustomerInformation\.accountSuccess | Your account information has been updated\. |
+| Account\.minifiedView\.CustomerInformation\.editCustomerInformation\.accountError | Your account information has not been updated\. |
+| Account\.minifiedView\.CustomerInformation\.editCustomerInformation\.passwordField\.placeholder | Password |
+| Account\.minifiedView\.CustomerInformation\.editCustomerInformation\.passwordField\.floatingLabel | Password |
+| Account\.minifiedView\.Addresses\.containerTitle | Addresses |
+| Account\.minifiedView\.Addresses\.editAddressFormTitle | Edit address |
+| Account\.minifiedView\.Addresses\.differentAddressFormTitle | Deliver to new address |
+| Account\.minifiedView\.Addresses\.viewAllAddressesButton | View address list |
+| Account\.minifiedView\.Addresses\.differentAddressButton | Use a different address |
+| Account\.minifiedView\.Addresses\.addressCard\.actionRemove | Remove |
+| Account\.minifiedView\.Addresses\.addressCard\.actionEdit | Edit |
+| Account\.minifiedView\.Addresses\.addressCard\.cardLabelShipping | Shipping |
+| Account\.minifiedView\.Addresses\.addressCard\.cardLabelBilling | Billing |
+| Account\.minifiedView\.Addresses\.addressCard\.defaultLabelText | DEFAULT |
+| Account\.minifiedView\.Addresses\.removeAddressModal\.title | Remove address |
+| Account\.minifiedView\.Addresses\.removeAddressModal\.description | Are you sure you would like to remove this address? |
+| Account\.minifiedView\.Addresses\.removeAddressModal\.actionCancel | Cancel |
+| Account\.minifiedView\.Addresses\.removeAddressModal\.actionConfirm | Remove |
+| Account\.minifiedView\.OrdersList\.containerTitle | Recent orders |
+| Account\.minifiedView\.OrdersList\.viewAllOrdersButton | View all orders |
+| Account\.minifiedView\.OrdersList\.ariaLabelLink | Redirect to full order information |
+| Account\.minifiedView\.OrdersList\.dateOrderPlaced | Date order placed |
+| Account\.minifiedView\.OrdersList\.OrdersListCard\.orderNumber | Order number: |
+| Account\.minifiedView\.OrdersList\.OrdersListCard\.itemsAmount | items |
+| Account\.minifiedView\.OrdersList\.OrdersListCard\.carrier | Carrier: |
+| Account\.minifiedView\.OrdersList\.OrdersListCard\.returns | Return\(s\): |
+| Account\.minifiedView\.OrdersList\.OrdersListCard\.orderDate | Placed on |
+| Account\.minifiedView\.OrdersList\.OrdersListSelectDate\.pastSixMonths | Past 6 months |
+| Account\.minifiedView\.OrdersList\.OrdersListSelectDate\.currentYear | Current year |
+| Account\.minifiedView\.OrdersList\.OrdersListSelectDate\.viewAll | View all |
+| Account\.minifiedView\.EmptyList\.Addresses\.message | No saved addresses |
+| Account\.minifiedView\.EmptyList\.OrdersList\.message | No orders |
+| Account\.fullSizeView\.Addresses\.containerTitle | Addresses |
+| Account\.fullSizeView\.Addresses\.editAddressFormTitle | Edit address |
+| Account\.fullSizeView\.Addresses\.differentAddressFormTitle | Deliver to new address |
+| Account\.fullSizeView\.Addresses\.newAddressFormTitle | Add address |
+| Account\.fullSizeView\.Addresses\.addNewAddressButton | Create new |
+| Account\.fullSizeView\.Addresses\.differentAddressButton | Use a different address |
+| Account\.fullSizeView\.Addresses\.addressCard\.actionRemove | Remove |
+| Account\.fullSizeView\.Addresses\.addressCard\.actionEdit | Edit |
+| Account\.fullSizeView\.Addresses\.addressCard\.cardLabelShipping | Shipping |
+| Account\.fullSizeView\.Addresses\.addressCard\.cardLabelBilling | Billing |
+| Account\.fullSizeView\.Addresses\.addressCard\.defaultLabelText | DEFAULT |
+| Account\.fullSizeView\.Addresses\.removeAddressModal\.title | Remove address |
+| Account\.fullSizeView\.Addresses\.removeAddressModal\.description | Are you sure you would like to remove this address? |
+| Account\.fullSizeView\.Addresses\.removeAddressModal\.actionCancel | Cancel |
+| Account\.fullSizeView\.Addresses\.removeAddressModal\.actionConfirm | Remove |
+| Account\.fullSizeView\.OrdersList\.containerTitle | Your orders |
+| Account\.fullSizeView\.OrdersList\.ariaLabelLink | Redirect to full order information |
+| Account\.fullSizeView\.OrdersList\.dateOrderPlaced | Date order placed |
+| Account\.fullSizeView\.OrdersList\.OrdersListCard\.orderNumber | Order number: |
+| Account\.fullSizeView\.OrdersList\.OrdersListCard\.itemsAmount | items |
+| Account\.fullSizeView\.OrdersList\.OrdersListCard\.carrier | Carrier: |
+| Account\.fullSizeView\.OrdersList\.OrdersListCard\.returns | Return\(s\): |
+| Account\.fullSizeView\.OrdersList\.OrdersListCard\.orderDate | Placed on |
+| Account\.fullSizeView\.OrdersList\.OrdersListSelectDate\.pastSixMonths | Past 6 months |
+| Account\.fullSizeView\.OrdersList\.OrdersListSelectDate\.currentYear | Current year |
+| Account\.fullSizeView\.OrdersList\.OrdersListSelectDate\.viewAll | View all |
+| Account\.fullSizeView\.EmptyList\.Addresses\.message | No saved addresses |
+| Account\.fullSizeView\.EmptyList\.OrdersList\.message | No orders |
+| Account\.AddressForm\.formText\.secondaryButton | Cancel |
+| Account\.AddressForm\.formText\.primaryButton | Save |
+| Account\.AddressForm\.formText\.defaultShippingLabel | Set as default shipping address |
+| Account\.AddressForm\.formText\.defaultBillingLabel | Set as default billing address |
+| Account\.AddressForm\.formText\.saveAddressBook | Save in address book |
+| Account\.FormText\.requiredFieldError | This is a required field\. |
+| Account\.FormText\.numericError | Only numeric values are allowed\. |
+| Account\.FormText\.alphaNumWithSpacesError | Only alphanumeric characters and spaces are allowed\. |
+| Account\.FormText\.alphaNumericError | Only alphanumeric characters are allowed\. |
+| Account\.FormText\.alphaError | Only alphabetic characters are allowed\. |
+| Account\.FormText\.emailError | Please enter a valid email address\. |
+| Account\.FormText\.dateError | Please enter a valid date\. |
+| Account\.FormText\.dateLengthError | Date must be between \{min\} and \{max\}\. |
+| Account\.FormText\.urlError | Please enter a valid URL, e\.g\., http://www\.adobe\.com\. |
+| Account\.FormText\.lengthTextError | Text length must be between \{min\} and \{max\} characters\. |
+| Auth\.PasswordValidationMessage\.chartTwoSymbols | Use characters and numbers or symbols |
+| Auth\.PasswordValidationMessage\.chartThreeSymbols | Use characters, numbers and symbols |
+| Auth\.PasswordValidationMessage\.chartFourSymbols | Use uppercase characters, lowercase characters, numbers and symbols |
+| Auth\.PasswordValidationMessage\.messageLengthPassword | At least \{minLength\} characters long |
+| Auth\.ResetPasswordForm\.title | Reset your password |
+| Auth\.ResetPasswordForm\.buttonPrimary | Reset password |
+| Auth\.ResetPasswordForm\.buttonSecondary | Back to sign in |
+| Auth\.SignInForm\.title | Sign in |
+| Auth\.SignInForm\.buttonPrimary | Sign in |
+| Auth\.SignInForm\.buttonSecondary | Sign up |
+| Auth\.SignInForm\.buttonTertiary | Forgot password? |
+| Auth\.SignUpForm\.title | Sign up |
+| Auth\.SignUpForm\.buttonPrimary | Create account |
+| Auth\.SignUpForm\.buttonSecondary | Already a member? Sign in |
+| Auth\.SignUpForm\.privacyPolicyDefaultText | I�ve read and accept the Terms of Use and Privacy Policy\. |
+| Auth\.SignUpForm\.subscribedDefaultText | Subscribe to our newsletter and be the first to know about new arrivals, sales and exclusive offers\. |
+| Auth\.SignUpForm\.keepMeLoggedText | Keep me logged in after account creation |
+| Auth\.SignUpForm\.failedCreateCustomerAddress | Failed to create customer addresses: |
+| Auth\.SignUpForm\.confirmPassword\.placeholder | Confirm password |
+| Auth\.SignUpForm\.confirmPassword\.floatingLabel | Confirm password \* |
+| Auth\.SignUpForm\.confirmPassword\.passwordMismatch | Passwords do not match\. Please make sure both password fields are identical\. |
+| Auth\.UpdatePasswordForm\.title | Update password |
+| Auth\.UpdatePasswordForm\.buttonPrimary | Update password |
+| Auth\.FormText\.requiredFieldError | This is a required field\. |
+| Auth\.FormText\.numericError | Only numeric values are allowed\. |
+| Auth\.FormText\.alphaNumWithSpacesError | Only alphanumeric characters and spaces are allowed\. |
+| Auth\.FormText\.alphaNumericError | Only alphanumeric characters are allowed\. |
+| Auth\.FormText\.alphaError | Only alphabetic characters are allowed\. |
+| Auth\.FormText\.emailError | Please enter a valid email address\. |
+| Auth\.FormText\.dateError | Please enter a valid date\. |
+| Auth\.FormText\.dateLengthError | Date must be between \{min\} and \{max\}\. |
+| Auth\.FormText\.dateMaxError | Date must be less than or equal to \{max\}\. |
+| Auth\.FormText\.dateMinError | Date must be greater than or equal to \{min\}\. |
+| Auth\.FormText\.urlError | Please enter a valid URL, e\.g\., https://www\.website\.com\. |
+| Auth\.FormText\.lengthTextError | Text length must be between \{min\} and \{max\} characters\. |
+| Auth\.EmailConfirmationForm\.title | Verify your email address |
+| Auth\.EmailConfirmationForm\.subtitle | We\`ve sent an email to |
+| Auth\.EmailConfirmationForm\.mainText | Check your inbox and click on the link we just send you to confirm your email address and activate your account\. |
+| Auth\.EmailConfirmationForm\.buttonSecondary | Resend email |
+| Auth\.EmailConfirmationForm\.buttonPrimary | Close |
+| Auth\.EmailConfirmationForm\.accountConfirmMessage | Account confirmed |
+| Auth\.EmailConfirmationForm\.accountConfirmationEmailSuccessMessage | Congratulations\! Your account at \{email\} email has been successfully confirmed\. |
+| Auth\.Notification\.errorNotification | Your password update failed due to validation errors\. Please check your information and try again\. |
+| Auth\.Notification\.updatePasswordMessage | The password has been updated\. |
+| Auth\.Notification\.updatePasswordActionMessage | Sign in |
+| Auth\.Notification\.successPasswordResetEmailNotification | If there is an account associated with \{email\} you will receive an email with a link to reset your password\. |
+| Auth\.Notification\.resendEmailNotification\.informationText | This account is not confirmed\. |
+| Auth\.Notification\.resendEmailNotification\.buttonText | Resend confirmation email |
+| Auth\.Notification\.emailConfirmationMessage | Please check your email for confirmation link\. |
+| Auth\.Notification\.technicalErrors\.technicalErrorSendEmail | A technical error occurred while trying to send the email\. Please try again later\. |
+| Auth\.SuccessNotification\.headingText | Welcome\! |
+| Auth\.SuccessNotification\.messageText | We are glad to see you\! |
+| Auth\.SuccessNotification\.primaryButtonText | Continue shopping |
+| Auth\.SuccessNotification\.secondaryButtonText | Logout |
+| Auth\.Api\.customerTokenErrorMessage | Unable to log in\. Please try again later or contact support if the issue persists\. |
+| Auth\.InputPassword\.placeholder | Password |
+| Auth\.InputPassword\.floatingLabel | Password \* |
+| Custom\.AddingToCart\.label | Adding to Cart |
+| Custom\.CommerceOrderHeader\.backToAllOrders | < Back to all orders |
+| Custom\.CommerceReturnHeader\.backToAllReturns | < Back to all returns |
diff --git a/src/content/docs/setup/storefront-compatibility.mdx b/src/content/docs/setup/storefront-compatibility.mdx
index 906b62baa..aa6f6dad2 100644
--- a/src/content/docs/setup/storefront-compatibility.mdx
+++ b/src/content/docs/setup/storefront-compatibility.mdx
@@ -39,9 +39,21 @@ This package defines the following queries and mutations:
## Release information
-**Latest version:** 4.7.0-beta25
+**Latest version:** 4.7.0-beta26
-**Release date:** November 17, 2024
+**Release date:** November 26, 2024
+
+### 4.7.0-beta26
+
+- Added the `subtotal`, `subtotal_incl_tax`, and `subtotal_excl_tax` fields to the `OrderTotal` object.
+
+- Removed empty B2B tests.
+
+- Added the `CustomerOrder.total` field.
+
+- Updated the date format returned by the `OrderStatusChangeDate` resolver.
+
+- Corrected the behavior of the `CartItemPrices.original_item_price` field so that it does not include discounts or taxes.
### 4.7.0-beta25
diff --git a/src/content/i18n/index.json b/src/content/i18n/index.json
index 0967ef424..311847daa 100644
--- a/src/content/i18n/index.json
+++ b/src/content/i18n/index.json
@@ -1 +1,2 @@
{}
+
diff --git a/src/styles/asides.css b/src/styles/asides.css
index 2fdf47ab6..31b51ec0d 100644
--- a/src/styles/asides.css
+++ b/src/styles/asides.css
@@ -5,6 +5,10 @@
margin-bottom: 2.5rem;
}
+.ac-task .starlight-aside.starlight-aside {
+ margin-bottom: 1rem;
+}
+
.starlight-aside__content {
text-wrap: pretty;
}
diff --git a/src/styles/custom.css b/src/styles/custom.css
index 050090ff6..993907da2 100644
--- a/src/styles/custom.css
+++ b/src/styles/custom.css
@@ -109,6 +109,15 @@ ul li details ul:last-child {
color: currentColor, var(--sl-color-white);
}
+.sl-markdown-content :is(th, td):not(:where(.not-content *)) {
+ border-bottom: 1px solid var(--sl-color-gray-5);
+ padding: 0.5rem 1rem;
+ vertical-align: baseline;
+ max-width: 400px;
+ width: 30%;
+ overflow-x: auto;
+}
+
.content-panel.content-panel {
border-top: 0;
}
@@ -245,7 +254,7 @@ body {
}
.expressive-code.expressive-code {
margin-top: 0;
- margin-bottom: 1.25rem;
+ margin-bottom: 0;
}
.sl-markdown-content details:not(:where(.not-content *)) {
--sl-details-border-color: var(--sl-color-gray-5);
@@ -263,16 +272,13 @@ body {
cursor: pointer;
display: flex;
font-weight: 600;
- margin-inline-start: -1rem;
- margin-left: -1rem;
- margin-right: -1rem;
padding-right: 0;
}
.sl-markdown-content summary.toggle-button {
align-items: center;
padding: 0.5rem;
- gap: 0.5rem;
+ gap: 0;
color: var(--sl-color-white);
font-family: var(--sl-font-system);
font-size: 1rem;
diff --git a/src/utils/convertDtsToJson.ts b/src/utils/convertDtsToJson.ts
new file mode 100644
index 000000000..096b4dcea
--- /dev/null
+++ b/src/utils/convertDtsToJson.ts
@@ -0,0 +1,16 @@
+
+export default function convertDtsToJson(inputCode: string) {
+ try {
+ // Remove the TypeScript-specific syntax
+ const cleanedInput = inputCode
+ .replace(/^declare\s+const\s+_default:\s*/, '') // Remove declare const _default:
+ .replace(/;\s*export\s+default\s+_default;\s*$/, '') // Remove export default _default;
+ .replace(/"([^"]+)":/g, '$1:') // Remove quotes from keys
+ .replace(/({|,)\s*"(label)":/g, '$1 $2:') // Remove quotes specifically around "label" keys
+ .replace(/:\s*"(.*?)"/g, ': $1'); // Remove quotes around string values
+
+ return cleanedInput;
+ } catch (error) {
+ console.error('Error converting DTS to JSON:', error);
+ }
+}