@liquidcommerce/elements-sdk 2.6.0-beta.7 → 2.6.0-beta.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/README.md +83 -2519
  2. package/dist/index.checkout.esm.js +16607 -0
  3. package/dist/index.esm.js +23330 -20416
  4. package/dist/ssr-stub.checkout.esm.js +18 -0
  5. package/dist/ssr-stub.esm.js +270 -0
  6. package/dist/types/auto-initialize/checkout.d.ts +2 -0
  7. package/dist/types/auto-initialize/shared-utils.d.ts +46 -0
  8. package/dist/types/{elements-base-client.d.ts → clients/base.d.ts} +15 -2
  9. package/dist/types/clients/builder.d.ts +3 -0
  10. package/dist/types/clients/checkout.d.ts +6 -0
  11. package/dist/types/{elements-client-helper.d.ts → clients/helpers.d.ts} +3 -1
  12. package/dist/types/clients/main.d.ts +3 -0
  13. package/dist/types/constants/core.constant.d.ts +2 -6
  14. package/dist/types/core/api/api-client.service.d.ts +20 -18
  15. package/dist/types/core/api/api-result.d.ts +19 -0
  16. package/dist/types/core/api/auth-client.service.d.ts +40 -13
  17. package/dist/types/core/api/http-client.service.d.ts +0 -1
  18. package/dist/types/core/base-component.service.d.ts +2 -1
  19. package/dist/types/core/client/actions/base-action.service.d.ts +15 -0
  20. package/dist/types/core/client/actions/client-address-action.service.d.ts +18 -0
  21. package/dist/types/core/client/actions/client-cart-action.service.d.ts +37 -0
  22. package/dist/types/core/client/actions/client-checkout-action.service.d.ts +56 -0
  23. package/dist/types/core/client/actions/client-product-action.service.d.ts +15 -0
  24. package/dist/types/core/client/client-action.service.d.ts +6 -70
  25. package/dist/types/core/client/client-config.service.d.ts +8 -2
  26. package/dist/types/core/command/common-command.service.d.ts +1 -0
  27. package/dist/types/core/google-tag-manager.service.d.ts +2 -1
  28. package/dist/types/core/logger/logger.service.d.ts +1 -1
  29. package/dist/types/core/pubsub/interfaces/cart.interface.d.ts +27 -52
  30. package/dist/types/core/pubsub/interfaces/checkout.interface.d.ts +45 -51
  31. package/dist/types/core/pubsub/interfaces/core.interface.d.ts +9 -4
  32. package/dist/types/core/pubsub/interfaces/product.interface.d.ts +16 -74
  33. package/dist/types/core/pubsub/pubsub.service.d.ts +1 -2
  34. package/dist/types/core/singleton-manager.service.d.ts +12 -8
  35. package/dist/types/core/store/interfaces/cart.interface.d.ts +3 -4
  36. package/dist/types/core/store/interfaces/checkout.interface.d.ts +17 -108
  37. package/dist/types/core/store/interfaces/core.interface.d.ts +12 -2
  38. package/dist/types/core/store/interfaces/metadata.interface.d.ts +11 -0
  39. package/dist/types/core/store/interfaces/product-list.interface.d.ts +30 -0
  40. package/dist/types/core/store/interfaces/product.interface.d.ts +1 -0
  41. package/dist/types/core/store/store.constant.d.ts +5 -0
  42. package/dist/types/core/store/store.service.d.ts +1 -0
  43. package/dist/types/core/telemetry/telemetry.service.d.ts +1 -0
  44. package/dist/types/enums/core.enum.d.ts +39 -1
  45. package/dist/types/enums/index.d.ts +0 -1
  46. package/dist/types/index.checkout.d.ts +8 -0
  47. package/dist/types/index.checkout.umd.d.ts +4 -0
  48. package/dist/types/index.d.ts +8 -3
  49. package/dist/types/interfaces/api/cart.interface.d.ts +13 -8
  50. package/dist/types/interfaces/api/checkout.interface.d.ts +239 -0
  51. package/dist/types/interfaces/api/index.d.ts +5 -0
  52. package/dist/types/interfaces/api/product-list.interface.d.ts +39 -0
  53. package/dist/types/interfaces/api/product.interface.d.ts +10 -4
  54. package/dist/types/interfaces/client.interface.d.ts +72 -0
  55. package/dist/types/interfaces/component.interface.d.ts +7 -0
  56. package/dist/types/interfaces/config.interface.d.ts +41 -0
  57. package/dist/types/interfaces/configs/address.interface.d.ts +1 -1
  58. package/dist/types/interfaces/configs/cart.interface.d.ts +1 -1
  59. package/dist/types/interfaces/configs/checkout.interface.d.ts +2 -1
  60. package/dist/types/interfaces/configs/global.interface.d.ts +5 -3
  61. package/dist/types/interfaces/configs/index.d.ts +1 -0
  62. package/dist/types/interfaces/configs/product-list.interface.d.ts +47 -0
  63. package/dist/types/interfaces/configs/product.interface.d.ts +4 -1
  64. package/dist/types/interfaces/injection.interface.d.ts +47 -0
  65. package/dist/types/modules/address/address.command.d.ts +2 -1
  66. package/dist/types/modules/address/styles/register-styles.d.ts +1 -0
  67. package/dist/types/modules/cart/cart.commands.d.ts +4 -4
  68. package/dist/types/modules/cart/components/cart-body.component.d.ts +2 -1
  69. package/dist/types/modules/cart/styles/register-styles.d.ts +1 -0
  70. package/dist/types/modules/checkout/checkout.commands.d.ts +23 -9
  71. package/dist/types/modules/checkout/checkout.component.d.ts +2 -0
  72. package/dist/types/modules/checkout/components/checkout-billing.component.d.ts +2 -2
  73. package/dist/types/modules/checkout/components/checkout-completed.component.d.ts +3 -0
  74. package/dist/types/modules/checkout/components/checkout-header.component.d.ts +1 -0
  75. package/dist/types/modules/checkout/components/checkout-items.component.d.ts +4 -3
  76. package/dist/types/modules/checkout/components/checkout-presale-countdown.component.d.ts +14 -1
  77. package/dist/types/modules/checkout/components/checkout-presale-expired.component.d.ts +7 -1
  78. package/dist/types/modules/checkout/components/checkout-stripe-form.component.d.ts +2 -1
  79. package/dist/types/modules/checkout/components/checkout-tips.component.d.ts +2 -2
  80. package/dist/types/modules/checkout/components/promo-pc-gc.component.d.ts +0 -2
  81. package/dist/types/modules/checkout/constant.d.ts +3 -0
  82. package/dist/types/modules/checkout/styles/register-styles.d.ts +1 -0
  83. package/dist/types/modules/product/components/product-add-to-cart-section.component.d.ts +1 -0
  84. package/dist/types/modules/product/components/product-description.component.d.ts +1 -0
  85. package/dist/types/modules/product/components/product-image-carousel.component.d.ts +3 -0
  86. package/dist/types/modules/product/components/product-options.component.d.ts +2 -1
  87. package/dist/types/modules/product/components/product-retailers-carousel.component.d.ts +3 -0
  88. package/dist/types/modules/product/components/product-retailers-popup-list.component.d.ts +5 -2
  89. package/dist/types/modules/product/product.commands.d.ts +2 -3
  90. package/dist/types/modules/product/styles/register-styles.d.ts +1 -0
  91. package/dist/types/modules/product-list/components/card-components/index.d.ts +5 -0
  92. package/dist/types/modules/product-list/components/card-components/product-badge.d.ts +9 -0
  93. package/dist/types/modules/product-list/components/card-components/product-button.d.ts +9 -0
  94. package/dist/types/modules/product-list/components/card-components/product-price-and-personalization.d.ts +13 -0
  95. package/dist/types/modules/product-list/components/card-components/product-quantity-selector.d.ts +9 -0
  96. package/dist/types/modules/product-list/components/card-components/product-sizes-list.d.ts +13 -0
  97. package/dist/types/modules/product-list/components/filter-components/index.d.ts +7 -0
  98. package/dist/types/modules/product-list/components/filter-components/product-list-apply-filter-button.d.ts +1 -0
  99. package/dist/types/modules/product-list/components/filter-components/product-list-chip.d.ts +5 -0
  100. package/dist/types/modules/product-list/components/filter-components/product-list-filters-chips.d.ts +13 -0
  101. package/dist/types/modules/product-list/components/filter-components/product-list-fulfillment-filter.d.ts +14 -0
  102. package/dist/types/modules/product-list/components/{product-list-filters-subcomponents/product-list-price-filter.components.d.ts → filter-components/product-list-price-filter.d.ts} +1 -1
  103. package/dist/types/modules/product-list/components/filter-components/product-list-toggle-filters.d.ts +7 -0
  104. package/dist/types/modules/product-list/components/index.d.ts +6 -2
  105. package/dist/types/modules/product-list/components/product-list-card-loading.component.d.ts +2 -1
  106. package/dist/types/modules/product-list/components/product-list-card.component.d.ts +27 -30
  107. package/dist/types/modules/product-list/components/product-list-engraving.component.d.ts +12 -0
  108. package/dist/types/modules/product-list/components/product-list-filters.component.d.ts +55 -36
  109. package/dist/types/modules/product-list/components/product-list-product-engraving-lines.component.d.ts +22 -0
  110. package/dist/types/modules/product-list/components/product-list-product-pre-cart.component.d.ts +49 -0
  111. package/dist/types/modules/product-list/components/{product-list-filters-subcomponents/product-list-search.component.d.ts → product-list-search.component.d.ts} +11 -4
  112. package/dist/types/modules/product-list/product-list-filter.utils.d.ts +8 -0
  113. package/dist/types/modules/product-list/product-list.commands.d.ts +23 -8
  114. package/dist/types/modules/product-list/product-list.component.d.ts +10 -45
  115. package/dist/types/modules/product-list/product-list.constants.d.ts +38 -0
  116. package/dist/types/modules/product-list/product-list.interface.d.ts +20 -35
  117. package/dist/types/modules/product-list/styles/product-list-card.style.d.ts +1 -0
  118. package/dist/types/modules/product-list/styles/product-list-filters.style.d.ts +1 -0
  119. package/dist/types/modules/product-list/styles/register-styles.d.ts +1 -0
  120. package/dist/types/modules/theme-provider/constants/component-groupings.d.ts +1 -0
  121. package/dist/types/modules/theme-provider/constants/css-variable-mappings.d.ts +1 -1
  122. package/dist/types/modules/theme-provider/services/style-registry.service.d.ts +16 -0
  123. package/dist/types/modules/theme-provider/services/stylesheet-generator.service.d.ts +0 -1
  124. package/dist/types/modules/theme-provider/styles/register-styles.d.ts +1 -0
  125. package/dist/types/modules/theme-provider/theme-provider.service.d.ts +2 -2
  126. package/dist/types/modules/ui-components/drawer/drawer.component.d.ts +1 -0
  127. package/dist/types/modules/ui-components/engraving/engraving-form.component.d.ts +6 -1
  128. package/dist/types/modules/ui-components/engraving/engraving-view.component.d.ts +6 -1
  129. package/dist/types/modules/ui-components/input/index.d.ts +0 -1
  130. package/dist/types/modules/ui-components/input/input.component.d.ts +8 -1
  131. package/dist/types/modules/ui-components/lce-element/lce-element.component.d.ts +2 -1
  132. package/dist/types/modules/ui-components/promo-code-ticker/promo-code-ticker.component.d.ts +1 -1
  133. package/dist/types/modules/ui-components/ui.commands.d.ts +5 -1
  134. package/dist/types/ssr/stub.checkout.d.ts +6 -0
  135. package/dist/types/ssr/stub.d.ts +10 -0
  136. package/dist/types/static/icon/check.icon.d.ts +2 -0
  137. package/dist/types/static/icon/index.d.ts +1 -0
  138. package/dist/types/utils/dom-compat.d.ts +2 -0
  139. package/dist/types/utils/format.d.ts +0 -14
  140. package/dist/types/utils/product-selection.d.ts +16 -0
  141. package/dist/types/utils/product.d.ts +10 -0
  142. package/docs/v1/README.md +210 -0
  143. package/docs/v1/api/actions/address-actions.md +281 -0
  144. package/docs/v1/api/actions/cart-actions.md +337 -0
  145. package/docs/v1/api/actions/checkout-actions.md +427 -0
  146. package/docs/v1/api/actions/product-actions.md +158 -0
  147. package/docs/v1/api/client.md +495 -0
  148. package/docs/v1/api/configuration.md +528 -0
  149. package/docs/v1/api/injection-methods.md +261 -0
  150. package/docs/v1/api/typescript-types.md +398 -0
  151. package/docs/v1/api/ui-helpers.md +200 -0
  152. package/docs/v1/examples/advanced-patterns.md +198 -0
  153. package/docs/v1/examples/checkout-flow.md +91 -0
  154. package/docs/v1/examples/custom-theming.md +63 -0
  155. package/docs/v1/examples/multi-product-page.md +90 -0
  156. package/docs/v1/examples/simple-product-page.md +89 -0
  157. package/docs/v1/getting-started/concepts.md +507 -0
  158. package/docs/v1/getting-started/installation.md +328 -0
  159. package/docs/v1/getting-started/quick-start.md +405 -0
  160. package/docs/v1/guides/address-component.md +431 -0
  161. package/docs/v1/guides/best-practices.md +353 -0
  162. package/docs/v1/guides/cart-component.md +737 -0
  163. package/docs/v1/guides/checkout-component.md +672 -0
  164. package/docs/v1/guides/events.md +926 -0
  165. package/docs/v1/guides/product-component.md +686 -0
  166. package/docs/v1/guides/product-list-component.md +507 -0
  167. package/docs/v1/guides/theming.md +216 -0
  168. package/docs/v1/integration/angular.md +39 -0
  169. package/docs/v1/integration/laravel.md +41 -0
  170. package/docs/v1/integration/nextjs.md +69 -0
  171. package/docs/v1/integration/proxy-setup.md +89 -0
  172. package/docs/v1/integration/react.md +64 -0
  173. package/docs/v1/integration/vanilla-js.md +84 -0
  174. package/docs/v1/integration/vue.md +58 -0
  175. package/docs/v1/reference/browser-support.md +44 -0
  176. package/docs/v1/reference/error-handling.md +70 -0
  177. package/docs/v1/reference/performance.md +54 -0
  178. package/docs/v1/reference/troubleshooting.md +136 -0
  179. package/package.json +31 -27
  180. package/dist/types/elements-builder-client.d.ts +0 -2
  181. package/dist/types/elements-client.d.ts +0 -2
  182. package/dist/types/enums/cloud.enum.d.ts +0 -106
  183. package/dist/types/interfaces/cloud/catalog.interface.d.ts +0 -42
  184. package/dist/types/interfaces/cloud/checkout.interface.d.ts +0 -218
  185. package/dist/types/interfaces/cloud/core.interface.d.ts +0 -22
  186. package/dist/types/interfaces/cloud/index.d.ts +0 -4
  187. package/dist/types/interfaces/cloud/retailer.interface.d.ts +0 -67
  188. package/dist/types/interfaces/cloud/user.interface.d.ts +0 -100
  189. package/dist/types/interfaces/core.interface.d.ts +0 -111
  190. package/dist/types/modules/cart/cart.commands.helper.d.ts +0 -4
  191. package/dist/types/modules/checkout/components/checkout.type.d.ts +0 -4
  192. package/dist/types/modules/product-list/components/product-list-filters-subcomponents/index.d.ts +0 -6
  193. package/dist/types/modules/product-list/components/product-list-filters-subcomponents/product-list-apply-filter-button.component.d.ts +0 -1
  194. package/dist/types/modules/product-list/components/product-list-filters-subcomponents/product-list-delivery-options-filter.components.d.ts +0 -16
  195. package/dist/types/modules/product-list/components/product-list-filters-subcomponents/product-list-toggle-filters.components.d.ts +0 -18
  196. package/dist/types/modules/theme-provider/styles/address/index.d.ts +0 -1
  197. package/dist/types/modules/theme-provider/styles/cart/index.d.ts +0 -1
  198. package/dist/types/modules/theme-provider/styles/checkout/index.d.ts +0 -1
  199. package/dist/types/modules/theme-provider/styles/product/index.d.ts +0 -3
  200. package/dist/types/modules/theme-provider/styles/product-list/index.d.ts +0 -1
  201. package/dist/types/modules/theme-provider/styles/ui/index.d.ts +0 -3
  202. package/dist/types/modules/ui-components/input/birthdate-input.component.d.ts +0 -53
  203. package/dist/types/utils/helper.d.ts +0 -28
  204. package/docs/ACTIONS.md +0 -1300
  205. package/docs/BROWSER_SUPPORT.md +0 -279
  206. package/docs/CONFIGURATION.md +0 -853
  207. package/docs/DOCUMENTATION_INDEX.md +0 -311
  208. package/docs/EVENTS.md +0 -798
  209. package/docs/PROXY.md +0 -228
  210. package/docs/THEMING.md +0 -592
  211. package/docs/TROUBLESHOOTING.md +0 -793
  212. package/umd/elements.js +0 -1
  213. /package/dist/types/{auto-initialize.d.ts → auto-initialize/main.d.ts} +0 -0
  214. /package/dist/types/modules/{theme-provider/styles/address → address/styles}/address.style.d.ts +0 -0
  215. /package/dist/types/modules/{theme-provider/styles/cart → cart/styles}/cart.style.d.ts +0 -0
  216. /package/dist/types/modules/{theme-provider/styles/checkout → checkout/styles}/checkout.style.d.ts +0 -0
  217. /package/dist/types/modules/{theme-provider/styles/product → product/styles}/image-carousel.style.d.ts +0 -0
  218. /package/dist/types/modules/{theme-provider/styles/product → product/styles}/product.style.d.ts +0 -0
  219. /package/dist/types/modules/{theme-provider/styles/product → product/styles}/retailers.style.d.ts +0 -0
  220. /package/dist/types/modules/product-list/components/{product-list-filters-subcomponents/product-list-checkbox-filter.components.d.ts → filter-components/product-list-checkbox-filter.d.ts} +0 -0
  221. /package/dist/types/modules/{theme-provider/styles/product-list → product-list/styles}/product-list.style.d.ts +0 -0
  222. /package/dist/types/modules/{theme-provider/styles/ui → ui-components/styles}/drawer.style.d.ts +0 -0
  223. /package/dist/types/modules/{theme-provider/styles/ui → ui-components/styles}/loading.style.d.ts +0 -0
  224. /package/dist/types/modules/{theme-provider/styles/ui → ui-components/styles}/promo-code-ticker.style.d.ts +0 -0
@@ -0,0 +1,337 @@
1
+ # Cart Actions API
2
+
3
+ Cart actions allow you to programmatically control the shopping cart.
4
+
5
+ ## actions.cart.openCart()
6
+
7
+ Open the cart drawer.
8
+
9
+ ### Signature
10
+
11
+ ```typescript
12
+ openCart(): void
13
+ ```
14
+
15
+ ### Example
16
+
17
+ ```javascript
18
+ window.LiquidCommerce.elements.actions.cart.openCart();
19
+ ```
20
+
21
+ ---
22
+
23
+ ## actions.cart.closeCart()
24
+
25
+ Close the cart drawer.
26
+
27
+ ### Signature
28
+
29
+ ```typescript
30
+ closeCart(): void
31
+ ```
32
+
33
+ ### Example
34
+
35
+ ```javascript
36
+ window.LiquidCommerce.elements.actions.cart.closeCart();
37
+ ```
38
+
39
+ ---
40
+
41
+ ## actions.cart.toggleCart()
42
+
43
+ Toggle the cart drawer open/closed.
44
+
45
+ ### Signature
46
+
47
+ ```typescript
48
+ toggleCart(): void
49
+ ```
50
+
51
+ ### Example
52
+
53
+ ```javascript
54
+ // Add to your cart button
55
+ document.getElementById('cart-btn').addEventListener('click', () => {
56
+ window.LiquidCommerce.elements.actions.cart.toggleCart();
57
+ });
58
+ ```
59
+
60
+ ---
61
+
62
+ ## actions.cart.addProduct()
63
+
64
+ Add products to the cart programmatically.
65
+
66
+ ### Signature
67
+
68
+ ```typescript
69
+ addProduct(params: IAddProductParams[], openCart?: boolean): Promise<void>
70
+ ```
71
+
72
+ ### Parameters
73
+
74
+ | Parameter | Type | Required | Description |
75
+ |-----------|------|----------|-------------|
76
+ | `params` | IAddProductParams[] | Yes | Array of products to add |
77
+ | `openCart` | boolean | No | Open cart after adding (default: false) |
78
+
79
+ ```typescript
80
+ interface IAddProductParams {
81
+ identifier: string; // Product UPC, SKU, or ID
82
+ fulfillmentType: FulfillmentType; // 'shipping' or 'onDemand'
83
+ quantity: number; // Number of items
84
+ }
85
+ ```
86
+
87
+ ### Example
88
+
89
+ ```javascript
90
+ // Add single product
91
+ await window.LiquidCommerce.elements.actions.cart.addProduct([
92
+ {
93
+ identifier: '00619947000020',
94
+ fulfillmentType: 'shipping',
95
+ quantity: 1
96
+ }
97
+ ], true); // Open cart after adding
98
+
99
+ // Add multiple products
100
+ await window.LiquidCommerce.elements.actions.cart.addProduct([
101
+ {
102
+ identifier: '00619947000020',
103
+ fulfillmentType: 'shipping',
104
+ quantity: 2
105
+ },
106
+ {
107
+ identifier: '08504405135',
108
+ fulfillmentType: 'onDemand',
109
+ quantity: 1
110
+ }
111
+ ]);
112
+ ```
113
+
114
+ ### Address Requirement
115
+
116
+ If no address is set, the SDK automatically:
117
+ 1. Opens address input drawer
118
+ 2. Waits for user to set address
119
+ 3. Retries add-to-cart operation
120
+
121
+ ### Errors
122
+
123
+ **Throws `SDKError` if:**
124
+ - Identifier is invalid
125
+ - Fulfillment type is not `'shipping'` or `'onDemand'`
126
+ - Quantity is less than 1
127
+ - Product is not available
128
+ - Product is a presale item
129
+
130
+ ---
131
+
132
+ ## actions.cart.applyPromoCode()
133
+
134
+ Apply a promo code to the cart.
135
+
136
+ ### Signature
137
+
138
+ ```typescript
139
+ applyPromoCode(promoCode: string): Promise<void>
140
+ ```
141
+
142
+ ### Parameters
143
+
144
+ | Parameter | Type | Required | Description |
145
+ |-----------|------|----------|-------------|
146
+ | `promoCode` | string | Yes | Promo code to apply |
147
+
148
+ ### Example
149
+
150
+ ```javascript
151
+ try {
152
+ await window.LiquidCommerce.elements.actions.cart.applyPromoCode('SUMMER20');
153
+ console.log('Promo code applied successfully');
154
+ } catch (error) {
155
+ console.error('Invalid promo code:', error);
156
+ }
157
+ ```
158
+
159
+ ### Notes
160
+
161
+ - Code is automatically normalized (trimmed, uppercased)
162
+ - Promo codes must be enabled in configuration
163
+ - Only one promo code can be active at a time
164
+ - Applying a new code replaces the existing one
165
+
166
+ ---
167
+
168
+ ## actions.cart.removePromoCode()
169
+
170
+ Remove the active promo code.
171
+
172
+ ### Signature
173
+
174
+ ```typescript
175
+ removePromoCode(): Promise<void>
176
+ ```
177
+
178
+ ### Example
179
+
180
+ ```javascript
181
+ await window.LiquidCommerce.elements.actions.cart.removePromoCode();
182
+ ```
183
+
184
+ ---
185
+
186
+ ## actions.cart.resetCart()
187
+
188
+ Clear all items from the cart.
189
+
190
+ ### Signature
191
+
192
+ ```typescript
193
+ resetCart(): Promise<void>
194
+ ```
195
+
196
+ ### Example
197
+
198
+ ```javascript
199
+ await window.LiquidCommerce.elements.actions.cart.resetCart();
200
+ console.log('Cart cleared');
201
+ ```
202
+
203
+ ### Warning
204
+
205
+ This permanently removes all cart items. There is no undo.
206
+
207
+ ---
208
+
209
+ ## actions.cart.getDetails()
210
+
211
+ Retrieve current cart information.
212
+
213
+ ### Signature
214
+
215
+ ```typescript
216
+ getDetails(): IBaseCartEventData
217
+ ```
218
+
219
+ ### Returns
220
+
221
+ ```typescript
222
+ interface IBaseCartEventData {
223
+ cartId: string;
224
+ items: ICartItem[];
225
+ subtotal: number; // in cents
226
+ total: number; // in cents
227
+ itemsCount: number;
228
+ itemsQuantity: number;
229
+ promoCode?: {
230
+ code: string;
231
+ discount: number; // in cents
232
+ };
233
+ retailers: IRetailer[];
234
+ // ... additional fields
235
+ }
236
+ ```
237
+
238
+ ### Example
239
+
240
+ ```javascript
241
+ const cart = window.LiquidCommerce.elements.actions.cart.getDetails();
242
+
243
+ console.log(`Cart ID: ${cart.cartId}`);
244
+ console.log(`Items: ${cart.itemsCount}`);
245
+ console.log(`Subtotal: $${cart.subtotal / 100}`);
246
+ console.log(`Total: $${cart.total / 100}`);
247
+
248
+ if (cart.promoCode) {
249
+ console.log(`Discount: $${cart.promoCode.discount / 100}`);
250
+ }
251
+ ```
252
+
253
+ ### Use Cases
254
+
255
+ #### Display Cart Summary
256
+
257
+ ```javascript
258
+ function updateCartSummary() {
259
+ const cart = window.LiquidCommerce.elements.actions.cart.getDetails();
260
+
261
+ document.getElementById('cart-count').textContent = cart.itemsCount;
262
+ document.getElementById('cart-total').textContent = `$${cart.total / 100}`;
263
+ }
264
+
265
+ // Update on cart changes
266
+ window.addEventListener('lce:actions.cart_updated', updateCartSummary);
267
+ ```
268
+
269
+ #### Check Cart Before Checkout
270
+
271
+ ```javascript
272
+ document.getElementById('checkout-btn').addEventListener('click', () => {
273
+ const cart = window.LiquidCommerce.elements.actions.cart.getDetails();
274
+
275
+ if (cart.itemsCount === 0) {
276
+ alert('Your cart is empty');
277
+ return;
278
+ }
279
+
280
+ window.LiquidCommerce.elements.actions.checkout.openCheckout();
281
+ });
282
+ ```
283
+
284
+ #### Track Cart Value
285
+
286
+ ```javascript
287
+ const cart = window.LiquidCommerce.elements.actions.cart.getDetails();
288
+
289
+ gtag('event', 'view_cart', {
290
+ value: cart.total / 100,
291
+ currency: 'USD',
292
+ items: cart.items.map(item => ({
293
+ item_id: item.identifier,
294
+ quantity: item.quantity
295
+ }))
296
+ });
297
+ ```
298
+
299
+ ## Events
300
+
301
+ Cart actions trigger events that you can listen for:
302
+
303
+ ```javascript
304
+ // Item added
305
+ window.addEventListener('lce:actions.cart_item_added', (event) => {
306
+ console.log('Item added:', event.detail.data);
307
+ });
308
+
309
+ // Cart updated
310
+ window.addEventListener('lce:actions.cart_updated', (event) => {
311
+ console.log('Cart updated:', event.detail.data);
312
+ });
313
+
314
+ // Promo code applied
315
+ window.addEventListener('lce:actions.cart_promo_code_applied', (event) => {
316
+ console.log('Promo applied:', event.detail.data);
317
+ });
318
+
319
+ // Product add success
320
+ window.addEventListener('lce:actions.cart_product_add_success', (event) => {
321
+ console.log('Products added:', event.detail.data);
322
+ });
323
+
324
+ // Product add failed
325
+ window.addEventListener('lce:actions.cart_product_add_failed', (event) => {
326
+ console.error('Failed to add:', event.detail.data);
327
+ });
328
+ ```
329
+
330
+ See [Events Guide](../../guides/events.md) for all cart events.
331
+
332
+ ## See Also
333
+
334
+ - [Cart Component Guide](../../guides/cart-component.md)
335
+ - [Cart Events](../../guides/events.md#cart-events)
336
+ - [Product Actions](./product-actions.md)
337
+ - [Checkout Actions](./checkout-actions.md)