@liquidcommerce/elements-sdk 2.1.0-beta.49

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 (201) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +1183 -0
  3. package/dist/index.esm.js +16834 -0
  4. package/dist/types/auto-initialize.d.ts +2 -0
  5. package/dist/types/constants/core.constant.d.ts +6 -0
  6. package/dist/types/constants/index.d.ts +2 -0
  7. package/dist/types/constants/z-index.constant.d.ts +24 -0
  8. package/dist/types/core/auth.service.d.ts +29 -0
  9. package/dist/types/core/base-component.service.d.ts +93 -0
  10. package/dist/types/core/client/client-action.service.d.ts +70 -0
  11. package/dist/types/core/client/client-config.service.d.ts +47 -0
  12. package/dist/types/core/command/base-command.service.d.ts +17 -0
  13. package/dist/types/core/command/command.service.d.ts +16 -0
  14. package/dist/types/core/command/common-command.service.d.ts +5 -0
  15. package/dist/types/core/component-factory.service.d.ts +27 -0
  16. package/dist/types/core/fingerprint.service.d.ts +28 -0
  17. package/dist/types/core/google-tag-manager.service.d.ts +93 -0
  18. package/dist/types/core/logger/logger-factory.d.ts +8 -0
  19. package/dist/types/core/logger/logger.service.d.ts +17 -0
  20. package/dist/types/core/pubsub/index.d.ts +2 -0
  21. package/dist/types/core/pubsub/interfaces/address.interface.d.ts +16 -0
  22. package/dist/types/core/pubsub/interfaces/cart.interface.d.ts +107 -0
  23. package/dist/types/core/pubsub/interfaces/checkout.interface.d.ts +84 -0
  24. package/dist/types/core/pubsub/interfaces/core.interface.d.ts +81 -0
  25. package/dist/types/core/pubsub/interfaces/index.d.ts +5 -0
  26. package/dist/types/core/pubsub/interfaces/product.interface.d.ts +91 -0
  27. package/dist/types/core/pubsub/pubsub.service.d.ts +12 -0
  28. package/dist/types/core/singleton-manager.service.d.ts +12 -0
  29. package/dist/types/core/store/index.d.ts +2 -0
  30. package/dist/types/core/store/interfaces/address.interface.d.ts +16 -0
  31. package/dist/types/core/store/interfaces/cart.interface.d.ts +94 -0
  32. package/dist/types/core/store/interfaces/checkout.interface.d.ts +154 -0
  33. package/dist/types/core/store/interfaces/core.interface.d.ts +40 -0
  34. package/dist/types/core/store/interfaces/index.d.ts +5 -0
  35. package/dist/types/core/store/interfaces/product.interface.d.ts +81 -0
  36. package/dist/types/core/store/store.constant.d.ts +8 -0
  37. package/dist/types/core/store/store.service.d.ts +41 -0
  38. package/dist/types/core/utils.d.ts +27 -0
  39. package/dist/types/elements-client-helper.d.ts +1 -0
  40. package/dist/types/elements-client.d.ts +2 -0
  41. package/dist/types/enums/cloud.enum.d.ts +77 -0
  42. package/dist/types/enums/core.enum.d.ts +134 -0
  43. package/dist/types/enums/index.d.ts +2 -0
  44. package/dist/types/index.d.ts +4 -0
  45. package/dist/types/index.umd.d.ts +2 -0
  46. package/dist/types/interfaces/cloud/address.interface.d.ts +36 -0
  47. package/dist/types/interfaces/cloud/cart.interface.d.ts +132 -0
  48. package/dist/types/interfaces/cloud/checkout.interface.d.ts +214 -0
  49. package/dist/types/interfaces/cloud/core.interface.d.ts +22 -0
  50. package/dist/types/interfaces/cloud/index.d.ts +6 -0
  51. package/dist/types/interfaces/cloud/product.interface.d.ts +156 -0
  52. package/dist/types/interfaces/cloud/retailer.interface.d.ts +66 -0
  53. package/dist/types/interfaces/cloud/user.interface.d.ts +100 -0
  54. package/dist/types/interfaces/configs/address.interface.d.ts +8 -0
  55. package/dist/types/interfaces/configs/cart.interface.d.ts +15 -0
  56. package/dist/types/interfaces/configs/checkout.interface.d.ts +34 -0
  57. package/dist/types/interfaces/configs/configurations.interface.d.ts +13 -0
  58. package/dist/types/interfaces/configs/global.interface.d.ts +46 -0
  59. package/dist/types/interfaces/configs/index.d.ts +6 -0
  60. package/dist/types/interfaces/configs/product.interface.d.ts +25 -0
  61. package/dist/types/interfaces/core.interface.d.ts +81 -0
  62. package/dist/types/modules/address/address-display.component.d.ts +13 -0
  63. package/dist/types/modules/address/address-input.component.d.ts +40 -0
  64. package/dist/types/modules/address/address.command.d.ts +15 -0
  65. package/dist/types/modules/address/address.component.d.ts +12 -0
  66. package/dist/types/modules/address/address.interface.d.ts +10 -0
  67. package/dist/types/modules/address/index.d.ts +4 -0
  68. package/dist/types/modules/api-client/api-client.interface.d.ts +21 -0
  69. package/dist/types/modules/api-client/api-client.service.d.ts +28 -0
  70. package/dist/types/modules/api-client/index.d.ts +2 -0
  71. package/dist/types/modules/cart/cart.commands.d.ts +36 -0
  72. package/dist/types/modules/cart/cart.commands.helper.d.ts +8 -0
  73. package/dist/types/modules/cart/cart.component.d.ts +11 -0
  74. package/dist/types/modules/cart/components/cart-body.component.d.ts +24 -0
  75. package/dist/types/modules/cart/components/cart-footer.component.d.ts +21 -0
  76. package/dist/types/modules/cart/components/cart-fulfillment.component.d.ts +26 -0
  77. package/dist/types/modules/cart/components/cart-header.component.d.ts +6 -0
  78. package/dist/types/modules/cart/components/cart-item-quantity-price.component.d.ts +21 -0
  79. package/dist/types/modules/cart/components/cart-item.component.d.ts +13 -0
  80. package/dist/types/modules/cart/components/cart-promo-code.component.d.ts +17 -0
  81. package/dist/types/modules/cart/components/cart-retailer-subtotal.component.d.ts +10 -0
  82. package/dist/types/modules/cart/components/cart-retailer.component.d.ts +23 -0
  83. package/dist/types/modules/cart/components/index.d.ts +8 -0
  84. package/dist/types/modules/cart/index.d.ts +1 -0
  85. package/dist/types/modules/checkout/checkout.commands.d.ts +50 -0
  86. package/dist/types/modules/checkout/checkout.commands.helper.d.ts +13 -0
  87. package/dist/types/modules/checkout/checkout.component.d.ts +11 -0
  88. package/dist/types/modules/checkout/components/checkout-header.component.d.ts +9 -0
  89. package/dist/types/modules/checkout/components/checkout-information-section.component.d.ts +12 -0
  90. package/dist/types/modules/checkout/components/checkout-presale-countdown.component.d.ts +26 -0
  91. package/dist/types/modules/checkout/components/checkout-summary-section.component.d.ts +12 -0
  92. package/dist/types/modules/checkout/components/checkout.type.d.ts +4 -0
  93. package/dist/types/modules/checkout/components/index.d.ts +20 -0
  94. package/dist/types/modules/checkout/components/information/checkout-billing-form.component.d.ts +18 -0
  95. package/dist/types/modules/checkout/components/information/checkout-buyer-information-form.component.d.ts +12 -0
  96. package/dist/types/modules/checkout/components/information/checkout-delivery-information-form.component.d.ts +17 -0
  97. package/dist/types/modules/checkout/components/information/checkout-payment-form.component.d.ts +21 -0
  98. package/dist/types/modules/checkout/components/information/checkout-stripe-form.component.d.ts +52 -0
  99. package/dist/types/modules/checkout/components/summary/checkout-amounts.component.d.ts +7 -0
  100. package/dist/types/modules/checkout/components/summary/checkout-completed.component.d.ts +12 -0
  101. package/dist/types/modules/checkout/components/summary/checkout-gift-cards.component.d.ts +14 -0
  102. package/dist/types/modules/checkout/components/summary/checkout-item-quantity.component.d.ts +19 -0
  103. package/dist/types/modules/checkout/components/summary/checkout-item.component.d.ts +21 -0
  104. package/dist/types/modules/checkout/components/summary/checkout-items.component.d.ts +16 -0
  105. package/dist/types/modules/checkout/components/summary/checkout-place-order-button.component.d.ts +23 -0
  106. package/dist/types/modules/checkout/components/summary/checkout-presale-expired.component.d.ts +16 -0
  107. package/dist/types/modules/checkout/components/summary/checkout-promo-code.component.d.ts +17 -0
  108. package/dist/types/modules/checkout/components/summary/checkout-tips.component.d.ts +19 -0
  109. package/dist/types/modules/checkout/components/summary/promo-pc-gc.component.d.ts +16 -0
  110. package/dist/types/modules/checkout/constant.d.ts +32 -0
  111. package/dist/types/modules/checkout/index.d.ts +1 -0
  112. package/dist/types/modules/product/components/components.d.ts +20 -0
  113. package/dist/types/modules/product/components/index.d.ts +13 -0
  114. package/dist/types/modules/product/components/product-add-to-cart-section.component.d.ts +26 -0
  115. package/dist/types/modules/product/components/product-description.component.d.ts +9 -0
  116. package/dist/types/modules/product/components/product-drawer.component.d.ts +19 -0
  117. package/dist/types/modules/product/components/product-image-carousel.component.d.ts +36 -0
  118. package/dist/types/modules/product/components/product-interactions.component.d.ts +14 -0
  119. package/dist/types/modules/product/components/product-options.component.d.ts +12 -0
  120. package/dist/types/modules/product/components/product-price.component.d.ts +11 -0
  121. package/dist/types/modules/product/components/product-retailers-carousel.component.d.ts +32 -0
  122. package/dist/types/modules/product/components/product-retailers-popup-list.component.d.ts +13 -0
  123. package/dist/types/modules/product/components/product-retailers-popup.component.d.ts +11 -0
  124. package/dist/types/modules/product/components/product-retailers.component.d.ts +11 -0
  125. package/dist/types/modules/product/constant.d.ts +2 -0
  126. package/dist/types/modules/product/index.d.ts +1 -0
  127. package/dist/types/modules/product/product.commands.d.ts +29 -0
  128. package/dist/types/modules/product/product.component.d.ts +13 -0
  129. package/dist/types/modules/product/utils/helpers.d.ts +10 -0
  130. package/dist/types/modules/product/utils/index.d.ts +2 -0
  131. package/dist/types/modules/product/utils/retailer-hours.d.ts +9 -0
  132. package/dist/types/modules/theme-provider/constants/component-groupings.d.ts +7 -0
  133. package/dist/types/modules/theme-provider/constants/css-variable-mappings.d.ts +2 -0
  134. package/dist/types/modules/theme-provider/index.d.ts +2 -0
  135. package/dist/types/modules/theme-provider/services/css-variable-processor.service.d.ts +20 -0
  136. package/dist/types/modules/theme-provider/services/font-manager.service.d.ts +9 -0
  137. package/dist/types/modules/theme-provider/services/stylesheet-generator.service.d.ts +13 -0
  138. package/dist/types/modules/theme-provider/styles/address/address.style.d.ts +1 -0
  139. package/dist/types/modules/theme-provider/styles/address/index.d.ts +1 -0
  140. package/dist/types/modules/theme-provider/styles/cart/cart.style.d.ts +1 -0
  141. package/dist/types/modules/theme-provider/styles/cart/index.d.ts +1 -0
  142. package/dist/types/modules/theme-provider/styles/checkout/checkout.style.d.ts +1 -0
  143. package/dist/types/modules/theme-provider/styles/checkout/index.d.ts +1 -0
  144. package/dist/types/modules/theme-provider/styles/global.style.d.ts +1 -0
  145. package/dist/types/modules/theme-provider/styles/product/image-carousel.style.d.ts +1 -0
  146. package/dist/types/modules/theme-provider/styles/product/index.d.ts +3 -0
  147. package/dist/types/modules/theme-provider/styles/product/product.style.d.ts +1 -0
  148. package/dist/types/modules/theme-provider/styles/product/retailers.style.d.ts +1 -0
  149. package/dist/types/modules/theme-provider/styles/ui/drawer.style.d.ts +1 -0
  150. package/dist/types/modules/theme-provider/styles/ui/index.d.ts +3 -0
  151. package/dist/types/modules/theme-provider/styles/ui/loading.style.d.ts +1 -0
  152. package/dist/types/modules/theme-provider/styles/ui/promo-code-ticker.style.d.ts +1 -0
  153. package/dist/types/modules/theme-provider/theme-provider.service.d.ts +22 -0
  154. package/dist/types/modules/ui-components/alert/alert.component.d.ts +24 -0
  155. package/dist/types/modules/ui-components/alert/index.d.ts +1 -0
  156. package/dist/types/modules/ui-components/buttons/buttons-open-cart.component.d.ts +11 -0
  157. package/dist/types/modules/ui-components/buttons/index.d.ts +1 -0
  158. package/dist/types/modules/ui-components/drawer/drawer.component.d.ts +23 -0
  159. package/dist/types/modules/ui-components/drawer/index.d.ts +1 -0
  160. package/dist/types/modules/ui-components/engraving/engraving-form.component.d.ts +24 -0
  161. package/dist/types/modules/ui-components/engraving/engraving-view.component.d.ts +19 -0
  162. package/dist/types/modules/ui-components/engraving/index.d.ts +2 -0
  163. package/dist/types/modules/ui-components/error-view/error-view.d.ts +9 -0
  164. package/dist/types/modules/ui-components/error-view/index.d.ts +1 -0
  165. package/dist/types/modules/ui-components/input/birthdate-input.component.d.ts +51 -0
  166. package/dist/types/modules/ui-components/input/index.d.ts +2 -0
  167. package/dist/types/modules/ui-components/input/input.component.d.ts +46 -0
  168. package/dist/types/modules/ui-components/lce-element/index.d.ts +1 -0
  169. package/dist/types/modules/ui-components/lce-element/lce-element.component.d.ts +11 -0
  170. package/dist/types/modules/ui-components/loading/index.d.ts +1 -0
  171. package/dist/types/modules/ui-components/loading/product-loading.component.d.ts +6 -0
  172. package/dist/types/modules/ui-components/powered-by/index.d.ts +1 -0
  173. package/dist/types/modules/ui-components/powered-by/powered-by.component.d.ts +13 -0
  174. package/dist/types/modules/ui-components/promo-code-ticker/index.d.ts +1 -0
  175. package/dist/types/modules/ui-components/promo-code-ticker/promo-code-ticker.component.d.ts +17 -0
  176. package/dist/types/modules/ui-components/purchase-min-alert/helpers.d.ts +8 -0
  177. package/dist/types/modules/ui-components/purchase-min-alert/index.d.ts +2 -0
  178. package/dist/types/modules/ui-components/purchase-min-alert/purchase-min-alert.component.d.ts +16 -0
  179. package/dist/types/modules/ui-components/ui.commands.d.ts +7 -0
  180. package/dist/types/static/icon/arrow-right.icon.d.ts +2 -0
  181. package/dist/types/static/icon/bag.icon.d.ts +2 -0
  182. package/dist/types/static/icon/checkbox.icon.d.ts +2 -0
  183. package/dist/types/static/icon/chevron-down.icon.d.ts +2 -0
  184. package/dist/types/static/icon/chevron-left.icon.d.ts +2 -0
  185. package/dist/types/static/icon/close.icon.d.ts +2 -0
  186. package/dist/types/static/icon/completed.icon.d.ts +2 -0
  187. package/dist/types/static/icon/error-info.icon.d.ts +2 -0
  188. package/dist/types/static/icon/icon.types.d.ts +6 -0
  189. package/dist/types/static/icon/index.d.ts +15 -0
  190. package/dist/types/static/icon/info.icon.d.ts +2 -0
  191. package/dist/types/static/icon/loading-spinner.icon.d.ts +2 -0
  192. package/dist/types/static/icon/search.icon.d.ts +2 -0
  193. package/dist/types/static/icon/success.icon.d.ts +2 -0
  194. package/dist/types/static/icon/trash.icon.d.ts +2 -0
  195. package/dist/types/static/icon/warning.icon.d.ts +2 -0
  196. package/dist/types/utils/dom-polyfills.d.ts +10 -0
  197. package/dist/types/utils/format.d.ts +23 -0
  198. package/dist/types/utils/helper.d.ts +27 -0
  199. package/dist/types/utils/html-sanitizer.d.ts +2 -0
  200. package/package.json +110 -0
  201. package/umd/elements.js +1 -0
@@ -0,0 +1,84 @@
1
+ import type { ICheckoutItemStore } from '@/core/store';
2
+ import type { ICheckoutTotalAmounts } from '@/interfaces/cloud';
3
+ export interface IBaseCheckoutEventData {
4
+ cartId: string;
5
+ }
6
+ export interface ICheckoutLoadedEventData extends IBaseCheckoutEventData {
7
+ }
8
+ export interface ICheckoutTipUpdatedEventData {
9
+ deliveryTips: Array<{
10
+ fulfillmentId?: string;
11
+ tipAmount?: number;
12
+ }>;
13
+ }
14
+ export interface ICheckoutFailedEventData {
15
+ message: string;
16
+ }
17
+ export interface ICheckoutToggleEventData {
18
+ isActive: boolean;
19
+ }
20
+ export interface ICheckoutMarketingPreferencesToggleEventData {
21
+ fieldName: 'canEmail' | 'canSms';
22
+ isActive: boolean;
23
+ }
24
+ export interface ICheckoutSubmitStartedEventData {
25
+ started: boolean;
26
+ }
27
+ export interface ICheckoutSubmitCompletedEventData {
28
+ orderNumber: string;
29
+ orderTotal: number;
30
+ }
31
+ export interface ICheckoutSubmitFailedEventData {
32
+ message: string;
33
+ }
34
+ export interface ICheckoutItemQuantityChangedEventData {
35
+ cartItemId: string;
36
+ quantity: number;
37
+ previousQuantity: number;
38
+ }
39
+ export interface ICheckoutItemRemovedEventData {
40
+ cartItemId: string;
41
+ }
42
+ export interface ICheckoutItemEngravingUpdatedEventData {
43
+ cartItemId: string;
44
+ engravingLines: string[];
45
+ previousEngravingLines: string[];
46
+ }
47
+ export interface ICheckoutFormUpdatedEventData {
48
+ fieldName: string;
49
+ }
50
+ export interface ICheckoutPromoCodeEventData {
51
+ discountAmount?: number;
52
+ newTotal?: number;
53
+ applied: boolean;
54
+ }
55
+ export interface ICheckoutPromoCodeFailedEventData {
56
+ error: string;
57
+ attempted: boolean;
58
+ }
59
+ export interface ICheckoutGiftCardEventData {
60
+ applied: boolean;
61
+ newTotal?: number;
62
+ }
63
+ export interface ICheckoutGiftCardFailedEventData {
64
+ error: string;
65
+ attempted: boolean;
66
+ }
67
+ export interface ICheckoutProductAddEventData {
68
+ itemsAdded: number;
69
+ identifiers: string[];
70
+ }
71
+ export interface ICheckoutProductAddFailedEventData {
72
+ identifiers: string[];
73
+ error: string;
74
+ }
75
+ export interface ICheckoutDetails {
76
+ cartId: string;
77
+ amounts: ICheckoutTotalAmounts;
78
+ items: Record<string, Omit<ICheckoutItemStore, 'attributes'>>;
79
+ isGift: boolean;
80
+ hasAgeVerify: boolean;
81
+ hasPromoCode: boolean;
82
+ hasGiftCards: boolean;
83
+ itemCount: number;
84
+ }
@@ -0,0 +1,81 @@
1
+ import type { IAddressActionEventData, ICartFailedEventData, ICartItemAddedEventData, ICartItemEngravingUpdatedEventData, ICartItemQuantityChangedEventData, ICartItemRemovedEventData, ICartLoadedEventData, ICartProductAddEventData, ICartProductAddFailedEventData, ICartPromoCodeEventData, ICartPromoCodeFailedEventData, ICartUpdatedEventData, ICheckoutFailedEventData, ICheckoutFormUpdatedEventData, ICheckoutGiftCardEventData, ICheckoutGiftCardFailedEventData, ICheckoutItemEngravingUpdatedEventData, ICheckoutItemQuantityChangedEventData, ICheckoutItemRemovedEventData, ICheckoutLoadedEventData, ICheckoutMarketingPreferencesToggleEventData, ICheckoutProductAddEventData, ICheckoutProductAddFailedEventData, ICheckoutPromoCodeEventData, ICheckoutPromoCodeFailedEventData, ICheckoutSubmitCompletedEventData, ICheckoutSubmitFailedEventData, ICheckoutSubmitStartedEventData, ICheckoutTipUpdatedEventData, ICheckoutToggleEventData, IElementsClientIsReadyEventData, IProductAddToCartEventData, IProductEngravingUpdatedEventData, IProductFulfillmentChangedEventData, IProductFulfillmentTypeChangedEventData, IProductLoadedEventData, IProductQuantityChangedEventData, IProductSizeChangedEventData } from '@/core/pubsub';
2
+ import { ELEMENTS_ACTIONS_EVENT } from '@/enums';
3
+ export interface IEventMetadata {
4
+ eventId: string;
5
+ namespace: 'actions' | 'forms';
6
+ event: string;
7
+ originalEvent: string;
8
+ actionNamespace?: 'address' | 'product' | 'cart' | 'checkout' | 'other';
9
+ timestamp: number;
10
+ }
11
+ export interface IEnhancedEventData<T> {
12
+ data: T;
13
+ metadata: IEventMetadata;
14
+ }
15
+ export interface IElementsActionsEventsMap {
16
+ [ELEMENTS_ACTIONS_EVENT.CLIENT_READY]: IElementsClientIsReadyEventData;
17
+ [ELEMENTS_ACTIONS_EVENT.PRODUCT_LOADED]: IProductLoadedEventData;
18
+ [ELEMENTS_ACTIONS_EVENT.PRODUCT_QUANTITY_DECREASE]: IProductQuantityChangedEventData;
19
+ [ELEMENTS_ACTIONS_EVENT.PRODUCT_QUANTITY_INCREASE]: IProductQuantityChangedEventData;
20
+ [ELEMENTS_ACTIONS_EVENT.PRODUCT_ADD_TO_CART]: IProductAddToCartEventData;
21
+ [ELEMENTS_ACTIONS_EVENT.PRODUCT_SIZE_CHANGED]: IProductSizeChangedEventData;
22
+ [ELEMENTS_ACTIONS_EVENT.PRODUCT_FULFILLMENT_TYPE_CHANGED]: IProductFulfillmentTypeChangedEventData;
23
+ [ELEMENTS_ACTIONS_EVENT.PRODUCT_FULFILLMENT_CHANGED]: IProductFulfillmentChangedEventData;
24
+ [ELEMENTS_ACTIONS_EVENT.PRODUCT_ENGRAVING_UPDATED]: IProductEngravingUpdatedEventData;
25
+ [ELEMENTS_ACTIONS_EVENT.CART_CLOSED]: boolean;
26
+ [ELEMENTS_ACTIONS_EVENT.CART_OPENED]: boolean;
27
+ [ELEMENTS_ACTIONS_EVENT.CART_UPDATED]: ICartUpdatedEventData;
28
+ [ELEMENTS_ACTIONS_EVENT.CART_RESET]: boolean;
29
+ [ELEMENTS_ACTIONS_EVENT.CART_FAILED]: ICartFailedEventData;
30
+ [ELEMENTS_ACTIONS_EVENT.CART_LOADED]: ICartLoadedEventData;
31
+ [ELEMENTS_ACTIONS_EVENT.CART_ITEM_ADDED]: ICartItemAddedEventData;
32
+ [ELEMENTS_ACTIONS_EVENT.CART_ITEM_REMOVED]: ICartItemRemovedEventData;
33
+ [ELEMENTS_ACTIONS_EVENT.CART_ITEM_QUANTITY_INCREASE]: ICartItemQuantityChangedEventData;
34
+ [ELEMENTS_ACTIONS_EVENT.CART_ITEM_QUANTITY_DECREASE]: ICartItemQuantityChangedEventData;
35
+ [ELEMENTS_ACTIONS_EVENT.CART_ITEM_ENGRAVING_UPDATED]: ICartItemEngravingUpdatedEventData;
36
+ [ELEMENTS_ACTIONS_EVENT.CART_PROMO_CODE_APPLIED]: ICartPromoCodeEventData;
37
+ [ELEMENTS_ACTIONS_EVENT.CART_PROMO_CODE_REMOVED]: ICartPromoCodeEventData;
38
+ [ELEMENTS_ACTIONS_EVENT.CART_PROMO_CODE_FAILED]: ICartPromoCodeFailedEventData;
39
+ [ELEMENTS_ACTIONS_EVENT.CART_PRODUCT_ADD_SUCCESS]: ICartProductAddEventData;
40
+ [ELEMENTS_ACTIONS_EVENT.CART_PRODUCT_ADD_FAILED]: ICartProductAddFailedEventData;
41
+ [ELEMENTS_ACTIONS_EVENT.ADDRESS_UPDATED]: IAddressActionEventData;
42
+ [ELEMENTS_ACTIONS_EVENT.ADDRESS_CLEARED]: boolean;
43
+ [ELEMENTS_ACTIONS_EVENT.ADDRESS_FAILED]: IAddressActionEventData;
44
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_OPENED]: boolean;
45
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_CLOSED]: boolean;
46
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_LOADED]: ICheckoutLoadedEventData;
47
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_FAILED]: ICheckoutFailedEventData;
48
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_IS_GIFT_TOGGLED]: ICheckoutToggleEventData;
49
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_BILLING_SAME_AS_SHIPPING_TOGGLED]: ICheckoutToggleEventData;
50
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_MARKETING_PREFERENCES_TOGGLED]: ICheckoutMarketingPreferencesToggleEventData;
51
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_CUSTOMER_INFORMATION_UPDATED]: ICheckoutFormUpdatedEventData;
52
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_BILLING_INFORMATION_UPDATED]: ICheckoutFormUpdatedEventData;
53
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_GIFT_INFORMATION_UPDATED]: ICheckoutFormUpdatedEventData;
54
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_ITEM_REMOVED]: ICheckoutItemRemovedEventData;
55
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_ITEM_QUANTITY_INCREASE]: ICheckoutItemQuantityChangedEventData;
56
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_ITEM_QUANTITY_DECREASE]: ICheckoutItemQuantityChangedEventData;
57
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_ITEM_ENGRAVING_UPDATED]: ICheckoutItemEngravingUpdatedEventData;
58
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_TIP_UPDATED]: ICheckoutTipUpdatedEventData;
59
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_SUBMIT_STARTED]: ICheckoutSubmitStartedEventData;
60
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_SUBMIT_COMPLETED]: ICheckoutSubmitCompletedEventData;
61
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_SUBMIT_FAILED]: ICheckoutSubmitFailedEventData;
62
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_PROMO_CODE_APPLIED]: ICheckoutPromoCodeEventData;
63
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_PROMO_CODE_REMOVED]: ICheckoutPromoCodeEventData;
64
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_PROMO_CODE_FAILED]: ICheckoutPromoCodeFailedEventData;
65
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_GIFT_CARD_APPLIED]: ICheckoutGiftCardEventData;
66
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_GIFT_CARD_REMOVED]: ICheckoutGiftCardEventData;
67
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_GIFT_CARD_FAILED]: ICheckoutGiftCardFailedEventData;
68
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_PRODUCT_ADD_SUCCESS]: ICheckoutProductAddEventData;
69
+ [ELEMENTS_ACTIONS_EVENT.CHECKOUT_PRODUCT_ADD_FAILED]: ICheckoutProductAddFailedEventData;
70
+ }
71
+ export type SpecificActionEvent = keyof IElementsActionsEventsMap;
72
+ export interface IFormEventData {
73
+ fieldName: string;
74
+ fieldValue: string;
75
+ }
76
+ export interface IElementsFormsEventsMap {
77
+ customer: IFormEventData;
78
+ billing: IFormEventData;
79
+ gift: IFormEventData;
80
+ }
81
+ export type SpecificFormEvent = keyof IElementsFormsEventsMap;
@@ -0,0 +1,5 @@
1
+ export * from './address.interface';
2
+ export * from './cart.interface';
3
+ export * from './checkout.interface';
4
+ export * from './core.interface';
5
+ export * from './product.interface';
@@ -0,0 +1,91 @@
1
+ import type { FulfillmentType } from '@/enums';
2
+ import type { IAddress, ICoords } from '@/interfaces/cloud';
3
+ export interface IElementsClientIsReadyEventData {
4
+ isReady: boolean;
5
+ message: string;
6
+ timestamp: number;
7
+ version?: string;
8
+ }
9
+ export interface IBaseProductFulfillmentEventData {
10
+ price: number;
11
+ partNumber: string;
12
+ fulfillmentId: string;
13
+ fulfillmentType: FulfillmentType;
14
+ modalities: FulfillmentType[];
15
+ retailerId: string;
16
+ retailerName: string;
17
+ retailerAddress: (IAddress & ICoords) | null;
18
+ retailerTimezone: string;
19
+ }
20
+ export interface IBaseProductSizeEventData {
21
+ id: string;
22
+ upc: string;
23
+ size: string;
24
+ pack: boolean;
25
+ packDesc: string;
26
+ container: string;
27
+ containerType: string;
28
+ maxQuantityPerOrder: number;
29
+ image: string;
30
+ uom: string;
31
+ volume: string;
32
+ shippingFulfillments: Record<string, IBaseProductFulfillmentEventData>;
33
+ onDemandFulfillments: Record<string, IBaseProductFulfillmentEventData>;
34
+ }
35
+ export interface IBaseProductEventData {
36
+ identifier: string;
37
+ id: string;
38
+ name: string;
39
+ brand: string;
40
+ category: string;
41
+ catPath: string;
42
+ classification: string;
43
+ priceInfo: {
44
+ min: number;
45
+ max: number;
46
+ avg: number;
47
+ } | null;
48
+ sizes: Record<string, IBaseProductSizeEventData>;
49
+ }
50
+ export interface IProductLoadedEventData extends IBaseProductEventData {
51
+ }
52
+ export interface IProductQuantityChangedEventData {
53
+ identifier: string;
54
+ quantity: number;
55
+ previousQuantity: number;
56
+ }
57
+ export interface IProductAddToCartEventData {
58
+ identifier: string;
59
+ upc: string;
60
+ fulfillmentId: string;
61
+ partNumber: string;
62
+ quantity: number;
63
+ engravingLines?: string[];
64
+ }
65
+ export interface IProductSizeChangedEventData {
66
+ identifier: string;
67
+ selectedSizeId: string;
68
+ size: string;
69
+ previousSizeId: string;
70
+ previousSize: string;
71
+ }
72
+ export interface IProductFulfillmentTypeChangedEventData {
73
+ identifier: string;
74
+ selectedFulfillmentType: FulfillmentType;
75
+ selectedFulfillmentId: string | null;
76
+ previousFulfillmentType: FulfillmentType;
77
+ previousFulfillmentId: string | null;
78
+ fulfillmentHasAvailability: boolean;
79
+ }
80
+ export interface IProductFulfillmentChangedEventData {
81
+ identifier: string;
82
+ selectedFulfillmentId: string;
83
+ selectedFulfillmentType: FulfillmentType;
84
+ previousFulfillmentId: string;
85
+ previousFulfillmentType: FulfillmentType;
86
+ }
87
+ export interface IProductEngravingUpdatedEventData {
88
+ identifier: string;
89
+ engravingLines: string[];
90
+ previousEngravingLines: string[];
91
+ }
@@ -0,0 +1,12 @@
1
+ import type { IElementsActionsEventsMap, IElementsFormsEventsMap, SpecificActionEvent, SpecificFormEvent } from '@/core/pubsub/interfaces';
2
+ export declare class PubSubService {
3
+ private readonly logger;
4
+ constructor();
5
+ private readonly eventPrefix;
6
+ static getInstance(): PubSubService;
7
+ publishAction<K extends SpecificActionEvent>(eventType: K, data: IElementsActionsEventsMap[K]): void;
8
+ publishForm<K extends SpecificFormEvent>(eventType: K, data: IElementsFormsEventsMap[K]): void;
9
+ private publishSpecific;
10
+ private dispatchNativeEvents;
11
+ private generateEventId;
12
+ }
@@ -0,0 +1,12 @@
1
+ import type { IClientConfigs } from '@/core/client/client-config.service';
2
+ import type { LiquidCommerceElementsClientConstructor } from '@/interfaces/core.interface';
3
+ export declare class SingletonManager {
4
+ private static instances;
5
+ private static clientConstructor;
6
+ private static getInstances;
7
+ private constructor();
8
+ static setClientConstructor(lceConstructor: LiquidCommerceElementsClientConstructor): void;
9
+ static getClientConstructor(): LiquidCommerceElementsClientConstructor | null;
10
+ static getClassInstance<T>(className: string, instanceCreator: () => T): T;
11
+ static getClient<T>(clientConfigs: IClientConfigs): Promise<T>;
12
+ }
@@ -0,0 +1,2 @@
1
+ export * from './interfaces';
2
+ export * from './store.service';
@@ -0,0 +1,16 @@
1
+ export interface IAddressStore {
2
+ id: string;
3
+ formattedAddress: string;
4
+ address: {
5
+ one: string;
6
+ two: string;
7
+ city: string;
8
+ state: string;
9
+ zip: string;
10
+ country: string;
11
+ };
12
+ coordinates: {
13
+ lat: number;
14
+ long: number;
15
+ };
16
+ }
@@ -0,0 +1,94 @@
1
+ import type { IElementsCartEvent } from 'utils/helper';
2
+ import type { FulfillmentType } from '@/enums';
3
+ import type { IAddress, ICartItemAttributes, IRetailerExpectation, IRetailerFees } from '@/interfaces/cloud';
4
+ export interface ICartItemStore {
5
+ id: string;
6
+ variantId: string;
7
+ liquidId: string;
8
+ retailerId: string;
9
+ partNumber: string;
10
+ fulfillmentId: string;
11
+ upc: string;
12
+ sku: string;
13
+ salsifyGrouping: string;
14
+ catPath: string;
15
+ volume: string;
16
+ uom: string;
17
+ pack: boolean;
18
+ packDesc: string;
19
+ container: string;
20
+ containerType: string;
21
+ name: string;
22
+ brand: string;
23
+ size: string;
24
+ price: number;
25
+ quantity: number;
26
+ maxQuantity: number;
27
+ unitPrice: number;
28
+ mainImage: string;
29
+ attributes: ICartItemAttributes;
30
+ loading: boolean;
31
+ updating: boolean;
32
+ error: string | null;
33
+ }
34
+ export interface ICartTotalsStore {
35
+ subtotal: number;
36
+ total: number;
37
+ shippingFee: number;
38
+ platformFee: number;
39
+ engravingFee: number;
40
+ deliveryFee: number;
41
+ discounts: number;
42
+ quantity: number;
43
+ }
44
+ export interface IRetailerFulfillmentStore {
45
+ id: string;
46
+ canEngrave: boolean;
47
+ type: FulfillmentType;
48
+ fees: IRetailerFees;
49
+ expectation: IRetailerExpectation;
50
+ shippingFee: number;
51
+ subtotal: number;
52
+ items: string[];
53
+ engravingFee: number;
54
+ deliveryFee: number;
55
+ retailerId: string;
56
+ loading?: boolean;
57
+ error?: string | null;
58
+ updating?: boolean;
59
+ }
60
+ export interface IRetailerStore {
61
+ id: string;
62
+ name: string;
63
+ platformFee: number;
64
+ shippingFee: number;
65
+ subtotal: number;
66
+ address?: IAddress;
67
+ deliveryFee: number;
68
+ engravingFee: number;
69
+ total: number;
70
+ fulfillments: string[];
71
+ loading?: boolean;
72
+ error?: string | null;
73
+ updating?: boolean;
74
+ }
75
+ export interface ICartPromoCodeStore {
76
+ code: string;
77
+ discountAmount: number;
78
+ error: string | null;
79
+ }
80
+ export interface ICartStore {
81
+ id: string | null;
82
+ loading: boolean;
83
+ error: string | null;
84
+ items: Record<string, ICartItemStore>;
85
+ totals: ICartTotalsStore;
86
+ retailers: Record<string, IRetailerStore>;
87
+ promoCode: ICartPromoCodeStore | null;
88
+ fulfillments: Record<string, IRetailerFulfillmentStore>;
89
+ rerender: boolean;
90
+ shouldReset: boolean;
91
+ updatedAt: string;
92
+ createdAt: string;
93
+ events: IElementsCartEvent[];
94
+ }
@@ -0,0 +1,154 @@
1
+ import type { IElementsCheckoutEvents } from 'utils/helper';
2
+ import type { ICartItemAttributes, ICheckoutTotalAmounts } from '@/interfaces/cloud';
3
+ export interface ICheckoutMarketingPreferencesStore {
4
+ canEmail: boolean;
5
+ canSms: boolean;
6
+ }
7
+ export interface ICheckoutPromoCodeStore {
8
+ code: string;
9
+ discountAmount: number;
10
+ }
11
+ export interface ICheckoutGiftCardStore {
12
+ code: string;
13
+ discountAmount: number;
14
+ }
15
+ export interface ICheckoutPaymentStore {
16
+ key: string;
17
+ secret: string;
18
+ paymentMethodId: string | null;
19
+ sendSubmitSignal: boolean;
20
+ }
21
+ export interface ICheckoutGiftRecipientStore {
22
+ firstName: string;
23
+ lastName: string;
24
+ email: string;
25
+ phone: string;
26
+ birthDate: string;
27
+ addressTwo: string | null;
28
+ company: string | null;
29
+ message: string | null;
30
+ }
31
+ export interface ICheckoutCustomerStore {
32
+ id?: string;
33
+ firstName: string;
34
+ lastName: string;
35
+ email: string;
36
+ phone: string;
37
+ birthDate: string;
38
+ addressTwo: string;
39
+ company: string;
40
+ }
41
+ export interface ICheckoutBillingStore {
42
+ firstName: string;
43
+ lastName: string;
44
+ email: string;
45
+ phone: string;
46
+ company: string | null;
47
+ addressOne: string;
48
+ addressTwo: string | null;
49
+ city: string;
50
+ state: string;
51
+ zipCode: string;
52
+ }
53
+ export interface ICheckoutItemStore {
54
+ liquidId: string;
55
+ variantId: string;
56
+ cartItemId: string;
57
+ retailerId: string;
58
+ fulfillmentId: string;
59
+ salsifyGrouping: string;
60
+ name: string;
61
+ catPath: string;
62
+ volume: string;
63
+ uom: string;
64
+ proof: string;
65
+ abv: string;
66
+ containerType: string;
67
+ container: string;
68
+ size: string;
69
+ pack: boolean;
70
+ packDesc: string;
71
+ mainImage: string;
72
+ brand: string;
73
+ partNumber: string;
74
+ upc: string;
75
+ sku: string;
76
+ price: number;
77
+ unitPrice: number;
78
+ quantity: number;
79
+ unitTax: number;
80
+ bottleDeposits: number;
81
+ attributes: ICartItemAttributes;
82
+ retailerName: string;
83
+ expectationDetail: string;
84
+ loading: boolean;
85
+ updating: boolean;
86
+ error: string | null;
87
+ }
88
+ export interface ICheckoutReadyForSubmitStore {
89
+ customer: boolean;
90
+ gift: boolean;
91
+ billing: boolean;
92
+ payment: boolean;
93
+ prepared: boolean;
94
+ }
95
+ export interface IOnDemandFulfillmentTipInfo {
96
+ fulfillmentId: string;
97
+ retailerId: string;
98
+ retailerName: string;
99
+ subtotal: number;
100
+ tip: number;
101
+ }
102
+ export interface ICheckoutStripeFormStatusStore {
103
+ isComplete: boolean;
104
+ hasError: boolean;
105
+ isProcessing: boolean;
106
+ errorMessage: string | null;
107
+ }
108
+ export interface ICheckoutCardInfoStore {
109
+ brand: string | null;
110
+ country: string | null;
111
+ expMonth: number | null;
112
+ expYear: number | null;
113
+ last4: string | null;
114
+ funding: string | null;
115
+ }
116
+ export interface ICheckoutStore {
117
+ token: string;
118
+ cartId: string;
119
+ loading: boolean;
120
+ updating: boolean;
121
+ error: string | null;
122
+ warning: string[];
123
+ isPresaleLocked: boolean;
124
+ presaleExpiresAt: string | null;
125
+ acceptedAccountCreation: boolean;
126
+ deliveryTips: [];
127
+ hasAgeVerify: boolean;
128
+ hasSubstitutionPolicy: boolean;
129
+ isGift: boolean;
130
+ billingSameAsShipping: boolean;
131
+ marketingPreferences: ICheckoutMarketingPreferencesStore;
132
+ giftRecipient: ICheckoutGiftRecipientStore;
133
+ customer: ICheckoutCustomerStore;
134
+ payment: ICheckoutPaymentStore;
135
+ billing: ICheckoutBillingStore | null;
136
+ promoCode: ICheckoutPromoCodeStore | null;
137
+ giftCards: ICheckoutGiftCardStore[];
138
+ amounts: ICheckoutTotalAmounts;
139
+ items: Record<string, ICheckoutItemStore>;
140
+ readyForSubmit: ICheckoutReadyForSubmitStore;
141
+ orderNumber: string | null;
142
+ rerender: boolean;
143
+ isFormValid: boolean;
144
+ invalidFields: string[];
145
+ focusField: string | null;
146
+ onDemandFulfillmentTipInfo: Record<string, IOnDemandFulfillmentTipInfo>;
147
+ tipSelection: number;
148
+ stripeFormStatus: ICheckoutStripeFormStatusStore;
149
+ deliveryInstructions: string | null;
150
+ card: ICheckoutCardInfoStore;
151
+ giftCardError: string | null;
152
+ promoCodeError: string | null;
153
+ events: IElementsCheckoutEvents[];
154
+ }
@@ -0,0 +1,40 @@
1
+ import type { IAddressStore, ICheckoutBillingStore, ICheckoutCustomerStore, ICheckoutItemStore, ICheckoutMarketingPreferencesStore, ICheckoutPaymentStore, ICheckoutStore, IProductSizeStore, IProductStore } from '@/core/store';
2
+ import type { ComponentType } from '@/enums';
3
+ import type { ICartItemStore, ICartStore, ICartTotalsStore, IRetailerFulfillmentStore, IRetailerStore } from './cart.interface';
4
+ export interface IDrawerContentConfig {
5
+ type: ComponentType;
6
+ data?: Record<string, any>;
7
+ }
8
+ export interface IDrawerStore {
9
+ isOpen: boolean;
10
+ contentConfig: IDrawerContentConfig | null;
11
+ }
12
+ export interface IUIStore {
13
+ drawer: IDrawerStore;
14
+ }
15
+ export interface IGlobalStore {
16
+ cart: ICartStore;
17
+ address: IAddressStore;
18
+ checkout: ICheckoutStore;
19
+ ui: IUIStore;
20
+ products: Record<string, IProductStore>;
21
+ }
22
+ export interface IPersistedStore {
23
+ p: string;
24
+ c: string;
25
+ }
26
+ export type StorePaths = keyof IGlobalStore | `products.${string}` | `products.${string}.${keyof IProductStore}` | `products.${string}.sizes.${string}` | `products.${string}.sizes.${string}.${keyof IProductSizeStore}` | `address.${keyof IAddressStore}` | `cart.${keyof ICartStore}` | `cart.items.${string}` | `cart.items.${string}.${keyof ICartItemStore}` | `cart.totals.${keyof ICartTotalsStore}` | `cart.retailers.${string}` | `cart.items.${string}.${keyof IRetailerStore}` | `cart.fulfillments.${string}` | `cart.fulfillments.${string}.${keyof IRetailerFulfillmentStore}` | `cart.promoCode.${keyof ICartStore['promoCode']}` | `ui.${keyof IUIStore}` | `ui.drawer.${keyof IDrawerStore}` | `checkout.${keyof ICheckoutStore}` | `checkout.customer.${keyof ICheckoutCustomerStore}` | `checkout.marketingPreferences.${keyof ICheckoutMarketingPreferencesStore}` | `checkout.payment.${keyof ICheckoutPaymentStore}` | `checkout.billing.${keyof ICheckoutBillingStore}` | `checkout.giftRecipient.${keyof ICheckoutStore['giftRecipient']}` | `checkout.giftCards.${string}` | `checkout.items.${string}` | `checkout.items.${string}.${keyof ICheckoutItemStore}` | `checkout.readyForSubmit.${keyof ICheckoutStore['readyForSubmit']}` | `checkout.onDemandFulfillmentTipInfo.${string}` | `checkout.readyForSubmit.${string}` | `checkout.stripeFormStatus.${keyof ICheckoutStore['stripeFormStatus']}`;
27
+ interface MiddlewareContext {
28
+ action: string;
29
+ payload: any;
30
+ state: IGlobalStore;
31
+ next: () => any;
32
+ }
33
+ export type StoreMiddleware = (context: MiddlewareContext) => any;
34
+ export interface StateChange {
35
+ path: string;
36
+ oldValue: any;
37
+ newValue: any;
38
+ timestamp: number;
39
+ }
40
+ export {};
@@ -0,0 +1,5 @@
1
+ export * from './address.interface';
2
+ export * from './cart.interface';
3
+ export * from './checkout.interface';
4
+ export * from './core.interface';
5
+ export * from './product.interface';
@@ -0,0 +1,81 @@
1
+ import type { ComponentType, FulfillmentType } from '@/enums';
2
+ import type { IAddress, ICoords, IProductSizeAttributes, IRetailerExpectation, IRetailerFees, RetailerHours } from '@/interfaces/cloud';
3
+ export interface IProductDrawerContentConfig {
4
+ type: ComponentType;
5
+ data?: Record<string, any>;
6
+ }
7
+ export interface IProductDrawerStore {
8
+ isOpen: boolean;
9
+ contentConfig: IProductDrawerContentConfig | null;
10
+ }
11
+ export interface IProductFulfillmentStore {
12
+ isVariantEngravable: boolean;
13
+ stock: number;
14
+ price: number;
15
+ retailerId: string;
16
+ partNumber: string;
17
+ fulfillmentId: string;
18
+ fulfillmentType: FulfillmentType;
19
+ modalities: FulfillmentType[];
20
+ retailerName: string;
21
+ retailerAddress: (IAddress & ICoords) | null;
22
+ type: FulfillmentType;
23
+ timezone: string;
24
+ canEngrave: boolean;
25
+ expectation: IRetailerExpectation;
26
+ fees: IRetailerFees;
27
+ hours: RetailerHours;
28
+ }
29
+ export interface IProductSizeStore {
30
+ id: string;
31
+ upc: string;
32
+ size: string;
33
+ pack: boolean;
34
+ packDesc: string | null;
35
+ container: string;
36
+ containerType: string;
37
+ maxQuantityPerOrder: number;
38
+ image: string;
39
+ uom: string;
40
+ volume: string;
41
+ attributes: IProductSizeAttributes;
42
+ onDemandFulfillments: Record<string, IProductFulfillmentStore>;
43
+ shippingFulfillments: Record<string, IProductFulfillmentStore>;
44
+ loading: boolean;
45
+ error: string | null;
46
+ }
47
+ export interface IProductStore {
48
+ identifier: string;
49
+ id: string;
50
+ name: string;
51
+ brand: string;
52
+ category: string;
53
+ catPath: string;
54
+ classification: string;
55
+ type: string;
56
+ subType: string;
57
+ salsifyGrouping: string;
58
+ priceInfo?: {
59
+ min: number;
60
+ max: number;
61
+ avg: number;
62
+ };
63
+ description: string;
64
+ htmlDescription: string;
65
+ images: string[];
66
+ quantity: number;
67
+ sizes: Record<string, IProductSizeStore>;
68
+ productHasAvailability: boolean;
69
+ selectedSizeId: string | null;
70
+ selectedFulfillmentType: FulfillmentType;
71
+ selectedFulfillmentId: string | null;
72
+ selectedFulfillment: IProductFulfillmentStore | null;
73
+ fulfillmentHasAvailability: boolean;
74
+ loading: boolean;
75
+ updating: boolean;
76
+ error: string | null;
77
+ engravingLines: string[];
78
+ drawer: IProductDrawerStore;
79
+ rerender: boolean;
80
+ mainImage: string | null;
81
+ }