@weareconceptstudio/account 0.0.0 → 0.0.1

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 (165) hide show
  1. package/dist/AccountConfig.d.ts +5 -0
  2. package/dist/AccountConfig.js +21 -0
  3. package/dist/components/AccountButton/index.d.ts +3 -0
  4. package/dist/components/AccountButton/index.js +22 -0
  5. package/dist/components/AccountButton/style.d.ts +2 -0
  6. package/dist/components/AccountButton/style.js +249 -0
  7. package/dist/components/AddressForm/index.d.ts +3 -0
  8. package/dist/components/AddressForm/index.js +100 -0
  9. package/dist/components/AddressForm/style.d.ts +2 -0
  10. package/dist/components/AddressForm/style.js +180 -0
  11. package/dist/components/AddressItem/index.d.ts +3 -0
  12. package/dist/components/AddressItem/index.js +41 -0
  13. package/dist/components/AddressItem/style.d.ts +2 -0
  14. package/dist/components/AddressItem/style.js +191 -0
  15. package/dist/components/CustomCheckbox/index.d.ts +7 -0
  16. package/dist/components/CustomCheckbox/index.js +15 -0
  17. package/dist/components/CustomCheckbox/style.d.ts +2 -0
  18. package/dist/components/CustomCheckbox/style.js +85 -0
  19. package/dist/components/EmptyCart/index.d.ts +5 -0
  20. package/dist/components/EmptyCart/index.js +14 -0
  21. package/dist/components/EmptyCart/style.d.ts +2 -0
  22. package/dist/components/EmptyCart/style.js +62 -0
  23. package/dist/components/EmptyOrders/index.d.ts +3 -0
  24. package/dist/components/EmptyOrders/index.js +12 -0
  25. package/dist/components/EmptyOrders/style.d.ts +2 -0
  26. package/dist/components/EmptyOrders/style.js +46 -0
  27. package/dist/components/FormInputCode/index.d.ts +24 -0
  28. package/dist/components/FormInputCode/index.js +145 -0
  29. package/dist/components/FormInputCode/style.d.ts +2 -0
  30. package/dist/components/FormInputCode/style.js +109 -0
  31. package/dist/components/OrderDetails/index.d.ts +3 -0
  32. package/dist/components/OrderDetails/index.js +48 -0
  33. package/dist/components/OrderDetails/style.d.ts +2 -0
  34. package/dist/components/OrderDetails/style.js +90 -0
  35. package/dist/components/OrderedItems/ReviewPopup/index.d.ts +0 -0
  36. package/dist/components/OrderedItems/ReviewPopup/index.js +202 -0
  37. package/dist/components/OrderedItems/ReviewPopup/style.d.ts +2 -0
  38. package/dist/components/OrderedItems/ReviewPopup/style.js +329 -0
  39. package/dist/components/OrderedItems/index.d.ts +7 -0
  40. package/dist/components/OrderedItems/index.js +108 -0
  41. package/dist/components/OrderedItems/style.d.ts +2 -0
  42. package/dist/components/OrderedItems/style.js +783 -0
  43. package/dist/components/OrdersList/OrderItem/index.d.ts +3 -0
  44. package/dist/components/OrdersList/OrderItem/index.js +21 -0
  45. package/dist/components/OrdersList/index.d.ts +10 -0
  46. package/dist/components/OrdersList/index.js +68 -0
  47. package/dist/components/OrdersList/style.d.ts +2 -0
  48. package/dist/components/OrdersList/style.js +373 -0
  49. package/dist/components/Pagination/index.d.ts +3 -0
  50. package/dist/components/Pagination/index.js +18 -0
  51. package/dist/components/Pagination/style.d.ts +2 -0
  52. package/dist/components/Pagination/style.js +72 -0
  53. package/dist/components/SelectShippingBilling/index.d.ts +3 -0
  54. package/dist/components/SelectShippingBilling/index.js +31 -0
  55. package/dist/components/SelectShippingBilling/style.d.ts +2 -0
  56. package/dist/components/SelectShippingBilling/style.js +112 -0
  57. package/dist/components/Sequence/index.d.ts +5 -0
  58. package/dist/components/Sequence/index.js +65 -0
  59. package/dist/components/Sequence/style.d.ts +2 -0
  60. package/dist/components/Sequence/style.js +317 -0
  61. package/dist/components/ShippingBillingForm/index.d.ts +3 -0
  62. package/dist/components/ShippingBillingForm/index.js +96 -0
  63. package/dist/components/ShippingBillingForm/style.d.ts +2 -0
  64. package/dist/components/ShippingBillingForm/style.js +77 -0
  65. package/dist/components/ShippingBillingInfo/index.d.ts +3 -0
  66. package/dist/components/ShippingBillingInfo/index.js +22 -0
  67. package/dist/components/ShippingBillingInfo/style.d.ts +2 -0
  68. package/dist/components/ShippingBillingInfo/style.js +98 -0
  69. package/dist/components/TotalCheckout/index.d.ts +3 -0
  70. package/dist/components/TotalCheckout/index.js +49 -0
  71. package/dist/components/TotalCheckout/style.d.ts +2 -0
  72. package/dist/components/TotalCheckout/style.js +211 -0
  73. package/dist/components/WarningMessage/index.d.ts +3 -0
  74. package/dist/components/WarningMessage/index.js +10 -0
  75. package/dist/components/WarningMessage/style.d.ts +2 -0
  76. package/dist/components/WarningMessage/style.js +34 -0
  77. package/dist/components/WarningMessageForPopup/index.d.ts +3 -0
  78. package/dist/components/WarningMessageForPopup/index.js +31 -0
  79. package/dist/components/WarningMessageForPopup/style.d.ts +2 -0
  80. package/dist/components/WarningMessageForPopup/style.js +82 -0
  81. package/dist/components/index.d.ts +18 -0
  82. package/dist/components/index.js +18 -0
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.js +2 -0
  85. package/dist/styles/helperClass.d.ts +2 -0
  86. package/dist/styles/helperClass.js +278 -0
  87. package/dist/styles/theme.d.ts +2 -0
  88. package/dist/styles/theme.js +63 -0
  89. package/dist/styles/typography.d.ts +2 -0
  90. package/dist/styles/typography.js +129 -0
  91. package/dist/styles/variables.d.ts +2 -0
  92. package/dist/styles/variables.js +401 -0
  93. package/dist/templates/AccountSettingsTemplate/AccountInfo/index.d.ts +38 -0
  94. package/dist/templates/AccountSettingsTemplate/AccountInfo/index.js +37 -0
  95. package/dist/templates/AccountSettingsTemplate/AccountInfo/style.d.ts +2 -0
  96. package/dist/templates/AccountSettingsTemplate/AccountInfo/style.js +165 -0
  97. package/dist/templates/AccountSettingsTemplate/AccountInfo/utils.d.ts +32 -0
  98. package/dist/templates/AccountSettingsTemplate/AccountInfo/utils.js +45 -0
  99. package/dist/templates/AccountSettingsTemplate/AccountPassword/index.d.ts +15 -0
  100. package/dist/templates/AccountSettingsTemplate/AccountPassword/index.js +36 -0
  101. package/dist/templates/AccountSettingsTemplate/AccountPassword/style.d.ts +2 -0
  102. package/dist/templates/AccountSettingsTemplate/AccountPassword/style.js +141 -0
  103. package/dist/templates/AccountSettingsTemplate/AccountPassword/utils.d.ts +10 -0
  104. package/dist/templates/AccountSettingsTemplate/AccountPassword/utils.js +22 -0
  105. package/dist/templates/AccountSettingsTemplate/index.d.ts +11 -0
  106. package/dist/templates/AccountSettingsTemplate/index.js +10 -0
  107. package/dist/templates/AccountSettingsTemplate/style.d.ts +2 -0
  108. package/dist/templates/AccountSettingsTemplate/style.js +37 -0
  109. package/dist/templates/AccountTemplate/index.d.ts +8 -0
  110. package/dist/templates/AccountTemplate/index.js +32 -0
  111. package/dist/templates/AccountTemplate/style.d.ts +2 -0
  112. package/dist/templates/AccountTemplate/style.js +293 -0
  113. package/dist/templates/AddressesTemplate/index.d.ts +3 -0
  114. package/dist/templates/AddressesTemplate/index.js +21 -0
  115. package/dist/templates/AddressesTemplate/style.d.ts +2 -0
  116. package/dist/templates/AddressesTemplate/style.js +89 -0
  117. package/dist/templates/CartTemplate/index.d.ts +3 -0
  118. package/dist/templates/CartTemplate/index.js +23 -0
  119. package/dist/templates/CartTemplate/style.d.ts +2 -0
  120. package/dist/templates/CartTemplate/style.js +37 -0
  121. package/dist/templates/CheckoutTemplate/index.d.ts +9 -0
  122. package/dist/templates/CheckoutTemplate/index.js +155 -0
  123. package/dist/templates/CheckoutTemplate/style.d.ts +2 -0
  124. package/dist/templates/CheckoutTemplate/style.js +173 -0
  125. package/dist/templates/ForgotPasswordTemplate/index.d.ts +5 -2
  126. package/dist/templates/ForgotPasswordTemplate/index.js +86 -3
  127. package/dist/templates/ForgotPasswordTemplate/style.d.ts +2 -0
  128. package/dist/templates/ForgotPasswordTemplate/style.js +186 -0
  129. package/dist/templates/OrderHistoryTemplate/index.d.ts +7 -0
  130. package/dist/templates/OrderHistoryTemplate/index.js +9 -0
  131. package/dist/templates/OrderHistoryTemplate/style.d.ts +2 -0
  132. package/dist/templates/OrderHistoryTemplate/style.js +3 -0
  133. package/dist/templates/OrderIndividualTemplate/index.d.ts +5 -0
  134. package/dist/templates/OrderIndividualTemplate/index.js +21 -0
  135. package/dist/templates/OrderIndividualTemplate/style.d.ts +2 -0
  136. package/dist/templates/OrderIndividualTemplate/style.js +3 -0
  137. package/dist/templates/ResetPasswordTemplate/index.d.ts +7 -2
  138. package/dist/templates/ResetPasswordTemplate/index.js +35 -2
  139. package/dist/templates/ResetPasswordTemplate/style.d.ts +2 -0
  140. package/dist/templates/ResetPasswordTemplate/style.js +163 -0
  141. package/dist/templates/SignInTemplate/index.d.ts +5 -2
  142. package/dist/templates/SignInTemplate/index.js +27 -2
  143. package/dist/templates/SignInTemplate/style.d.ts +2 -0
  144. package/dist/templates/SignInTemplate/style.js +168 -0
  145. package/dist/templates/SignUpTemplate/defaultFormFields.d.ts +11 -0
  146. package/dist/templates/SignUpTemplate/defaultFormFields.js +42 -0
  147. package/dist/templates/SignUpTemplate/index.d.ts +6 -2
  148. package/dist/templates/SignUpTemplate/index.js +33 -3
  149. package/dist/templates/SignUpTemplate/style.d.ts +2 -0
  150. package/dist/templates/SignUpTemplate/style.js +175 -0
  151. package/dist/templates/VerifyEmailAddressTemplate/index.d.ts +3 -0
  152. package/dist/templates/VerifyEmailAddressTemplate/index.js +105 -0
  153. package/dist/templates/VerifyEmailAddressTemplate/style.d.ts +2 -0
  154. package/dist/templates/VerifyEmailAddressTemplate/style.js +165 -0
  155. package/dist/templates/index.d.ts +8 -0
  156. package/dist/templates/index.js +11 -0
  157. package/dist/translations/en.d.ts +257 -0
  158. package/dist/translations/en.js +256 -0
  159. package/dist/translations/index.d.ts +259 -0
  160. package/dist/translations/index.js +2 -0
  161. package/dist/utils/_functions.d.ts +5 -0
  162. package/dist/utils/_functions.js +28 -0
  163. package/dist/utils/icons.d.ts +3 -0
  164. package/dist/utils/icons.js +27 -0
  165. package/package.json +5 -6
@@ -0,0 +1,3 @@
1
+ export default AddressesTemplate;
2
+ declare const AddressesTemplate: React.NamedExoticComponent<object>;
3
+ import React from 'react';
@@ -0,0 +1,21 @@
1
+ import React, { memo, useCallback } from 'react';
2
+ import { useUi, Text } from '@weareconceptstudio/core';
3
+ //* Components
4
+ import { AccountButton, AddressForm, AddressItem } from '../../components';
5
+ //* Style
6
+ import AddressesTemplateStyle from './style';
7
+ const AddressesTemplate = memo(({ shipping_addresses, billing_addresses }) => {
8
+ const { openPopup } = useUi();
9
+ //! Handle Add New Address Click
10
+ const handleAddNewAddressPopup = useCallback((type) => {
11
+ openPopup(React.createElement(AddressForm, { title: `addNew${type.charAt(0).toUpperCase() + type.slice(1)}Address`, selected: { values: false, type } }));
12
+ }, []);
13
+ return (React.createElement(AddressesTemplateStyle, null, ['shipping', 'billing'].map((type) => (React.createElement("div", { key: type, className: `address-wrap ${type}` },
14
+ React.createElement("div", { className: `address-title-container` },
15
+ React.createElement(Text, { className: `account-p account-p1 account-font-bold account-primary-color1`, text: `${type}Address` }),
16
+ React.createElement(AccountButton, { text: `addNewAdd`, btnType: `purple-text`, onClick: () => handleAddNewAddressPopup(type) })),
17
+ eval(`${type}_addresses`) && eval(`${type}_addresses`).length > 0 ? (React.createElement("div", { className: `flex-wrapper` }, eval(`${type}_addresses`).map((item, index) => {
18
+ return (React.createElement(AddressItem, { select_address: false, checkout_review: false, data: item, type: type, key: index }));
19
+ }))) : (React.createElement(Text, { className: `account-p account-p2 account-font-regular account-primary-color1 empty-address-text`, text: `emptyAddress` })))))));
20
+ });
21
+ export default AddressesTemplate;
@@ -0,0 +1,2 @@
1
+ export default AddressesTemplateStyle;
2
+ declare const AddressesTemplateStyle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
@@ -0,0 +1,89 @@
1
+ import styled from 'styled-components';
2
+ const AddressesTemplateStyle = styled.section `
3
+ --account_addressWrapMTop: var(--sp16x);
4
+ --account_emptyAddressTextMTop: var(--sp2-5x);
5
+
6
+ --account_itemDistance: var(--sp5x);
7
+ --account_flexWrapperMTop: var(--sp5x);
8
+
9
+ .billing {
10
+ margin-top: var(--account_addressWrapMTop);
11
+ }
12
+
13
+ .address-wrap {
14
+ .address-title-container {
15
+ display: flex;
16
+ justify-content: space-between;
17
+ align-items: center;
18
+ }
19
+
20
+ .empty-address-text {
21
+ margin-top: var(--account_emptyAddressTextMTop);
22
+ }
23
+
24
+ .flex-wrapper {
25
+ display: flex;
26
+ flex-wrap: wrap;
27
+ margin-left: calc(-1 * calc(var(--account_itemDistance) / 2));
28
+ margin-right: calc(-1 * calc(var(--account_itemDistance) / 2));
29
+ margin-top: var(--account_flexWrapperMTop);
30
+ }
31
+ }
32
+
33
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeL}) {
34
+ --account_addressWrapMTop: var(--sp11x);
35
+ --account_emptyAddressTextMTop: var(--sp2x);
36
+
37
+ --account_itemDistance: var(--sp4x);
38
+ --account_flexWrapperMTop: var(--sp4x);
39
+ }
40
+
41
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeM}) {
42
+ --account_addressWrapMTop: var(--sp8x);
43
+ --account_emptyAddressTextMTop: var(--sp2x);
44
+
45
+ --account_itemDistance: var(--sp4x);
46
+ --account_flexWrapperMTop: var(--sp3x);
47
+ }
48
+
49
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeMMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeS}) {
50
+ --account_addressWrapMTop: var(--sp8x);
51
+ --account_emptyAddressTextMTop: var(--sp2x);
52
+
53
+ --account_itemDistance: var(--sp4x);
54
+ --account_flexWrapperMTop: var(--sp3x);
55
+ }
56
+
57
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXS}) {
58
+ --account_addressWrapMTop: var(--sp8x);
59
+ --account_emptyAddressTextMTop: var(--sp2x);
60
+
61
+ --account_itemDistance: var(--sp3x);
62
+ --account_flexWrapperMTop: var(--sp3x);
63
+ }
64
+
65
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSize}) {
66
+ --account_addressWrapMTop: var(--sp8x);
67
+ --account_emptyAddressTextMTop: var(--sp1-5x);
68
+
69
+ --account_itemDistance: var(--sp3x);
70
+ --account_flexWrapperMTop: var(--sp3x);
71
+ }
72
+
73
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeS}) {
74
+ --account_addressWrapMTop: var(--sp8x);
75
+ --account_emptyAddressTextMTop: var(--sp1-5x);
76
+
77
+ --account_itemDistance: var(--sp3x);
78
+ --account_flexWrapperMTop: var(--sp2x);
79
+ }
80
+
81
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeSMin}) {
82
+ --account_addressWrapMTop: var(--sp6x);
83
+ --account_emptyAddressTextMTop: var(--sp2x);
84
+
85
+ --account_flexWrapperMTop: var(--sp2x);
86
+ --account_itemDistance: var(--sp2x);
87
+ }
88
+ `;
89
+ export default AddressesTemplateStyle;
@@ -0,0 +1,3 @@
1
+ export default CartTemplate;
2
+ declare const CartTemplate: React.NamedExoticComponent<object>;
3
+ import React from 'react';
@@ -0,0 +1,23 @@
1
+ import React, { memo, useState, useEffect } from 'react';
2
+ import { Container, Page } from '@weareconceptstudio/core';
3
+ import { EmptyCart, TotalCheckout, AccountButton } from '../../components';
4
+ import CartTemplateStyle from './style';
5
+ const CartTemplate = memo(({ items, itemsCount, loading, favorites, children, shoppingUrl }) => {
6
+ //! State
7
+ const [isAnyItemOutOfStock, setIsAnyItemOutOfStock] = useState();
8
+ useEffect(() => {
9
+ setIsAnyItemOutOfStock(items.find((item) => item.qty > item.qty));
10
+ }, [items]);
11
+ return (React.createElement(Page, { className: 'cart use-account' },
12
+ React.createElement(Container, null,
13
+ React.createElement(CartTemplateStyle, null,
14
+ React.createElement(TotalCheckout, { buttonProps: {
15
+ url: '/checkout/',
16
+ text: 'proceedToCheckout',
17
+ disabled: !!isAnyItemOutOfStock,
18
+ } }, itemsCount > 0 ? (React.createElement(React.Fragment, null,
19
+ React.createElement("div", null, "Cart Items"),
20
+ shoppingUrl ? (React.createElement(AccountButton, { btnType: `purple-text`, text: `continueShopping`, className: `continue-shop-text`, url: shoppingUrl })) : null)) : (!loading && (React.createElement(EmptyCart, { data: items, shoppingUrl: shoppingUrl })))),
21
+ children))));
22
+ });
23
+ export default CartTemplate;
@@ -0,0 +1,2 @@
1
+ export default CartTemplateStyle;
2
+ declare const CartTemplateStyle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
@@ -0,0 +1,37 @@
1
+ import styled from 'styled-components';
2
+ const CartTemplateStyle = styled.section `
3
+ --account_continueShopTextMT: var(--sp7x);
4
+
5
+ .continue-shop-text {
6
+ margin-top: var(--account_continueShopTextMT);
7
+ }
8
+
9
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeL}) {
10
+ --account_continueShopTextMT: var(--sp5x);
11
+ }
12
+
13
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeM}) {
14
+ --account_continueShopTextMT: var(--sp4x);
15
+ }
16
+
17
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeMMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeS}) {
18
+ --account_continueShopTextMT: var(--sp4x);
19
+ }
20
+
21
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXS}) {
22
+ --account_continueShopTextMT: var(--sp3x);
23
+ }
24
+
25
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSize}) {
26
+ --account_continueShopTextMT: var(--sp3x);
27
+ }
28
+
29
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeS}) {
30
+ --account_continueShopTextMT: var(--sp3x);
31
+ }
32
+
33
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeSMin}) {
34
+ --account_continueShopTextMT: var(--sp3x);
35
+ }
36
+ `;
37
+ export default CartTemplateStyle;
@@ -0,0 +1,9 @@
1
+ export default CheckoutTemplate;
2
+ declare function CheckoutTemplate({ items, total, subtotal, shippingCost, currency }: {
3
+ items: any;
4
+ total: any;
5
+ subtotal: any;
6
+ shippingCost: any;
7
+ currency: any;
8
+ }): React.JSX.Element;
9
+ import React from 'react';
@@ -0,0 +1,155 @@
1
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { Container, useUi, Page } from '@weareconceptstudio/core';
3
+ //* Style
4
+ import CheckoutTemplateStyle from './style';
5
+ //* Components
6
+ import { AddressForm, AddressItem, CustomCheckbox, SelectShippingBilling, Sequence, ShippingBillingForm, TotalCheckout } from '../../components';
7
+ //TODO: router.push, createAddress, shipping_addresses, billing_addresses, globalData, user, items, total, subtotal, shippingCost, currency, getCart , checkout
8
+ const createAddress = () => { };
9
+ const shipping_addresses = [
10
+ {
11
+ first_name: 'Karlen',
12
+ last_name: 'Nersisyan',
13
+ address_1: 'Araratyan st.',
14
+ address_2: '58/5',
15
+ region: {
16
+ name: 'Sengavit',
17
+ },
18
+ zip_code: '3027',
19
+ city: {
20
+ name: 'Yerevan',
21
+ },
22
+ country: {
23
+ name: 'Armenia',
24
+ },
25
+ phone_number: '077250899',
26
+ is_default: true,
27
+ },
28
+ ];
29
+ const billing_addresses = [
30
+ {
31
+ first_name: 'Karlen',
32
+ last_name: 'Nersisyan',
33
+ address_1: 'Araratyan st.',
34
+ address_2: '58/5',
35
+ region: {
36
+ name: 'Sengavit',
37
+ },
38
+ zip_code: '3027',
39
+ city: {
40
+ name: 'Yerevan',
41
+ },
42
+ country: {
43
+ name: 'Armenia',
44
+ },
45
+ phone_number: '077250899',
46
+ is_default: true,
47
+ },
48
+ ];
49
+ const globalData = {
50
+ countries: [],
51
+ };
52
+ const user = {
53
+ verified: true,
54
+ };
55
+ const getCart = () => { };
56
+ const checkout = () => { };
57
+ const CheckoutTemplate = ({ items, total, subtotal, shippingCost, currency }) => {
58
+ const { openPopup } = useUi();
59
+ //! Ref
60
+ const formRef = useRef();
61
+ const getDefaultShippingAddress = useMemo(() => {
62
+ return shipping_addresses.find((item) => item.is_default);
63
+ }, [shipping_addresses]);
64
+ const getDefaultBillingAddress = useMemo(() => {
65
+ return billing_addresses.find((item) => item.is_default);
66
+ }, [billing_addresses]);
67
+ //! States
68
+ const [hide, setHide] = useState(false);
69
+ const [countryShippingId, setShippingCountryId] = useState(globalData.countries.length > 1 ? '' : 1);
70
+ const [countryBillingId, setBillingCountryId] = useState(globalData.countries.length > 1 ? '' : 1);
71
+ const [regionShippingId, setShippingRegionId] = useState();
72
+ const [regionBillingId, setBillingRegionId] = useState();
73
+ const [selectedAddresses, setSelectedAddresses] = useState({ shipping: getDefaultShippingAddress, billing: getDefaultBillingAddress });
74
+ useEffect(() => {
75
+ setSelectedAddresses({ shipping: getDefaultShippingAddress, billing: getDefaultBillingAddress });
76
+ getCart({ addressId: getDefaultShippingAddress?.id });
77
+ }, [getDefaultShippingAddress, getDefaultBillingAddress]);
78
+ const handleCheckoutFirstStep = useCallback(() => {
79
+ return formRef.current.submit();
80
+ }, []);
81
+ const handleCheckoutSecondStep = useCallback((note) => {
82
+ return checkout({ shipping_address_id: selectedAddresses.shipping.id, billing_address_id: selectedAddresses.billing.id, subtotal, total, note });
83
+ }, [total, subtotal, selectedAddresses]);
84
+ const handleFormFinish = useCallback((vals) => {
85
+ if (hide) {
86
+ let shippingAddress = Object.assign({}, vals.shipping);
87
+ let billingAddress = Object.assign({}, vals.shipping);
88
+ billingAddress.type = 'billing';
89
+ return createAddress({ ...shippingAddress }), createAddress({ ...billingAddress });
90
+ }
91
+ else {
92
+ return vals.shipping && createAddress({ ...vals.shipping }), vals.billing && createAddress({ ...vals.billing });
93
+ }
94
+ }, [hide]);
95
+ //! handle form change
96
+ const handleFormChange = useCallback((val) => {
97
+ const name = Object.keys(Object.values(val)[0])[0];
98
+ const value = Object.values(val)[0]?.[`${name}`];
99
+ if (name === 'country_id') {
100
+ setShippingCountryId(value);
101
+ setBillingCountryId(value);
102
+ setShippingRegionId('');
103
+ setBillingRegionId('');
104
+ formRef.current.setFieldsValue({ region_id: '', city_id: '' });
105
+ }
106
+ else if (name === 'region_id') {
107
+ setShippingRegionId(value);
108
+ setBillingRegionId(value);
109
+ formRef.current.setFieldsValue({ city_id: '' });
110
+ }
111
+ }, []);
112
+ //! Handle Popups
113
+ const handleAddNewShippingAddressPopup = useCallback(() => {
114
+ openPopup(React.createElement(AddressForm, { title: `addNewShippingAddress`, selected: { value: false, type: 'shipping' } }));
115
+ }, []);
116
+ const handleAddNewBillingAddressPopup = useCallback(() => {
117
+ openPopup(React.createElement(AddressForm, { title: `addNewBillingAddress`, selected: { value: false, type: 'billing' } }));
118
+ }, []);
119
+ const handleShippingChangePopup = useCallback(() => {
120
+ openPopup(React.createElement(SelectShippingBilling, { type: 'shipping', data: shipping_addresses, title: 'selectShippingAddress', selectedAddresses: selectedAddresses, setSelectedAddresses: setSelectedAddresses, handleClick: handleAddNewShippingAddressPopup }));
121
+ }, [shipping_addresses, selectedAddresses]);
122
+ const handleBillingChangePopup = useCallback(() => {
123
+ openPopup(React.createElement(SelectShippingBilling, { type: 'billing', data: billing_addresses, title: 'selectBillingAddress', selectedAddresses: selectedAddresses, setSelectedAddresses: setSelectedAddresses, handleClick: handleAddNewBillingAddressPopup }));
124
+ }, [billing_addresses, selectedAddresses]);
125
+ //! User data
126
+ const checkStep = {
127
+ isShipping: !(shipping_addresses.length > 0 && billing_addresses.length > 0),
128
+ isReview: true,
129
+ };
130
+ return (React.createElement(Page, { className: 'checkout use-account' },
131
+ React.createElement(Container, null, user && user.verified && (React.createElement(CheckoutTemplateStyle, null,
132
+ React.createElement(TotalCheckout, { total: total, products: items, subtotal: subtotal, currency: currency, shippingCost: shippingCost, isShipping: checkStep.isShipping, buttonProps: {
133
+ url: false,
134
+ type: checkStep.isShipping ? 'submit' : 'button',
135
+ text: checkStep.isShipping ? 'proceedToCheckout' : 'proceedToPayment',
136
+ handleClick: checkStep.isShipping ? handleCheckoutFirstStep : handleCheckoutSecondStep,
137
+ } },
138
+ React.createElement(Sequence, { step: checkStep.isShipping ? 'shipping' : 'review' }),
139
+ checkStep.isShipping ? (React.createElement("div", { className: `billing-shipping-form-wrap` },
140
+ shipping_addresses.length > 0 ? (React.createElement("div", { className: `shipping-address-wrapper` },
141
+ React.createElement(AddressItem, { title: 'shippingAddress', checkout_review: false, select_address: false, type: 'shipping', data: getDefaultShippingAddress, onClick: handleShippingChangePopup }))) : (React.createElement(ShippingBillingForm, { type: `shipping`, title: `shippingAddress`, className: `shipping-wrapper`, countryId: countryShippingId, regionId: regionShippingId,
142
+ // ref={formRef}
143
+ onChange: handleFormChange, onSubmit: handleFormFinish, initialValues: { shipping: { country_id: 1, type: 'shipping', is_default: true }, billing: { country_id: 1, type: 'billing', is_default: true } } })),
144
+ !(billing_addresses?.length > 0 || shipping_addresses?.length > 0) ? (React.createElement(CustomCheckbox, { hide: hide, setHide: setHide })) : null,
145
+ !hide &&
146
+ (billing_addresses?.length > 0 ? (React.createElement("div", { className: `billing-address-wrapper` },
147
+ React.createElement(AddressItem, { type: 'billing', select_address: false, checkout_review: false, title: 'billingAddress', data: getDefaultBillingAddress, onClick: handleBillingChangePopup }))) : (React.createElement(ShippingBillingForm, { type: `billing`, title: `billingAddress`, regionId: regionBillingId, countryId: countryBillingId, className: `billing-wrapper`,
148
+ // ref={formRef}
149
+ onChange: handleFormChange, onSubmit: handleFormFinish, initialValues: { shipping: { country_id: 1, type: 'shipping', is_default: true }, billing: { country_id: 1, type: 'billing', is_default: true } } }))))) : (React.createElement(React.Fragment, null,
150
+ React.createElement("div", { className: `shipping-billing-change-wrapper` },
151
+ React.createElement(AddressItem, { checkout_review: true, type: 'shipping', select_address: false, title: 'shippingAddress', data: selectedAddresses.shipping, onClick: handleShippingChangePopup, setSelectedAddresses: setSelectedAddresses }),
152
+ React.createElement(AddressItem, { checkout_review: true, type: 'billing', select_address: false, title: 'billingAddress', data: selectedAddresses.billing, onClick: handleBillingChangePopup, setSelectedAddresses: setSelectedAddresses })),
153
+ React.createElement("div", null, "Cart Items")))))))));
154
+ };
155
+ export default CheckoutTemplate;
@@ -0,0 +1,2 @@
1
+ export default CheckoutTemplateStyle;
2
+ declare const CheckoutTemplateStyle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
@@ -0,0 +1,173 @@
1
+ import styled from 'styled-components';
2
+ const CheckoutTemplateStyle = styled.section `
3
+ --account_billingWrapperMTop: var(--sp5x);
4
+ --account_itemDistance: var(--sp5x);
5
+
6
+ --account_confWrapMaxWidth: var(--sp92x);
7
+ --account_confWrapMTop: var(--sp22x);
8
+ --account_titleMTop: var(--sp10x);
9
+ --account_descMTop: var(--sp3x);
10
+ --account_orderNumberMTop: var(--sp2x);
11
+ --account_btnWrapperMTop: var(--sp7x);
12
+ --account_imageWidth: 41.4%;
13
+ --account_imageHeight: 26.7%;
14
+
15
+ .billing-wrapper {
16
+ margin-top: var(--account_billingWrapperMTop);
17
+ }
18
+
19
+ .shipping-billing-change-wrapper {
20
+ display: flex;
21
+ flex-wrap: wrap;
22
+ margin-left: calc(-1 * calc(var(--account_itemDistance) / 2));
23
+ margin-right: calc(-1 * calc(var(--account_itemDistance) / 2));
24
+
25
+ .item-internal-wrap {
26
+ height: fit-content !important;
27
+ }
28
+ }
29
+
30
+ .confirmation-wrapper {
31
+ max-width: var(--account_confWrapMaxWidth);
32
+ margin-top: var(--account_confWrapMTop);
33
+
34
+ .image-cont {
35
+ width: 100%;
36
+ max-width: var(--account_imageWidth);
37
+ padding-top: var(--account_imageHeight) !important;
38
+ }
39
+
40
+ .title {
41
+ margin-top: var(--account_titleMTop);
42
+ }
43
+
44
+ .description {
45
+ margin-top: var(--account_descMTop);
46
+ }
47
+
48
+ .order-number {
49
+ margin-top: var(--account_orderNumberMTop);
50
+ }
51
+
52
+ .btn-wrap {
53
+ margin-top: var(--account_btnWrapperMTop);
54
+ }
55
+ }
56
+
57
+ .billing-address-wrapper {
58
+ margin-left: calc(-1 * calc(var(--account_itemDistance) / 2));
59
+ margin-top: var(--account_itemDistance);
60
+ }
61
+
62
+ .shipping-address-wrapper {
63
+ margin-left: calc(-1 * calc(var(--account_itemDistance) / 2));
64
+ }
65
+
66
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeL}) {
67
+ --account_billingWrapperMTop: var(--sp11x);
68
+ --account_itemDistance: var(--sp4x);
69
+
70
+ --account_confWrapMTop: var(--sp18x);
71
+ --account_confWrapMaxWidth: var(--sp70x);
72
+ --account_titleMTop: var(--sp8x);
73
+ --account_descMTop: var(--sp2x);
74
+ --account_orderNumberMTop: var(--sp1x);
75
+ --account_btnWrapperMTop: var(--sp6x);
76
+ --account_imageWidth: 41.8%;
77
+ --account_imageHeight: 26.8%;
78
+ }
79
+
80
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeM}) {
81
+ --account_billingWrapperMTop: var(--sp8x);
82
+ --account_itemDistance: var(--sp4x);
83
+
84
+ --account_confWrapMTop: var(--sp9x);
85
+ --account_confWrapMaxWidth: var(--sp70x);
86
+ --account_titleMTop: var(--sp6x);
87
+ --account_descMTop: var(--sp2x);
88
+ --account_orderNumberMTop: var(--sp1x);
89
+ --account_btnWrapperMTop: var(--sp4x);
90
+ --account_imageWidth: 30.8%;
91
+ --account_imageHeight: 19.8%;
92
+ }
93
+
94
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeMMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeS}) {
95
+ --account_billingWrapperMTop: var(--sp8x);
96
+ --account_itemDistance: var(--sp4x);
97
+
98
+ --account_confWrapMTop: var(--sp8x);
99
+ --account_confWrapMaxWidth: var(--sp53x);
100
+ --account_titleMTop: var(--sp5x);
101
+ --account_descMTop: var(--sp2x);
102
+ --account_orderNumberMTop: var(--sp1x);
103
+ --account_btnWrapperMTop: var(--sp4x);
104
+ --account_imageWidth: 34.8%;
105
+ --account_imageHeight: 22.2%;
106
+ }
107
+
108
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXS}) {
109
+ --account_billingWrapperMTop: var(--sp8x);
110
+ --account_itemDistance: var(--sp3x);
111
+
112
+ --account_confWrapMTop: var(--sp11x);
113
+ --account_confWrapMaxWidth: var(--sp47x);
114
+ --account_titleMTop: var(--sp6x);
115
+ --account_descMTop: var(--sp2x);
116
+ --account_orderNumberMTop: var(--sp0-5x);
117
+ --account_btnWrapperMTop: var(--sp3x);
118
+ --account_imageWidth: 32.5%;
119
+ --account_imageHeight: 21.1%;
120
+ }
121
+
122
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSize}) {
123
+ --account_billingWrapperMTop: var(--sp7x);
124
+ --account_itemDistance: var(--sp3x);
125
+
126
+ --account_confWrapMTop: var(--sp9x);
127
+ --account_confWrapMaxWidth: var(--sp43x);
128
+ --account_titleMTop: var(--sp5x);
129
+ --account_descMTop: var(--sp2x);
130
+ --account_orderNumberMTop: var(--sp0-5x);
131
+ --account_btnWrapperMTop: var(--sp3x);
132
+ --account_imageWidth: 32.5%;
133
+ --account_imageHeight: 21.1%;
134
+ }
135
+
136
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeS}) {
137
+ --account_billingWrapperMTop: var(--sp7x);
138
+ --account_itemDistance: var(--sp3x);
139
+
140
+ --account_confWrapMTop: var(--sp19x);
141
+ --account_confWrapMaxWidth: var(--sp56x);
142
+ --account_titleMTop: var(--sp5x);
143
+ --account_descMTop: var(--sp2x);
144
+ --account_orderNumberMTop: var(--sp0-5x);
145
+ --account_btnWrapperMTop: var(--sp4x);
146
+ --account_imageWidth: 24.8%;
147
+ --account_imageHeight: 16.1%;
148
+ }
149
+
150
+ @media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeSMin}) {
151
+ --account_billingWrapperMTop: var(--sp8x);
152
+ --account_itemDistance: var(--sp6x);
153
+
154
+ --account_confWrapMTop: var(--sp16x);
155
+ --account_confWrapMaxWidth: 100%;
156
+ --account_titleMTop: var(--sp5x);
157
+ --account_descMTop: var(--sp1x);
158
+ --account_orderNumberMTop: var(--sp0-5x);
159
+ --account_btnWrapperMTop: var(--sp3x);
160
+ --account_imageWidth: 29.1%;
161
+ --account_imageHeight: 19%;
162
+
163
+ .shipping-billing-change-wrapper {
164
+ margin-left: 0;
165
+ margin-right: 0;
166
+
167
+ .item-container {
168
+ padding: 0;
169
+ }
170
+ }
171
+ }
172
+ `;
173
+ export default CheckoutTemplateStyle;
@@ -1,3 +1,6 @@
1
+ import React from 'react';
2
+ interface ForgotPasswordProps {
3
+ onFormSubmit: (values: any) => Promise<any>;
4
+ }
5
+ declare const ForgotPasswordTemplate: ({ onFormSubmit }: ForgotPasswordProps) => React.JSX.Element;
1
6
  export default ForgotPasswordTemplate;
2
- declare function ForgotPasswordTemplate(): React.JSX.Element;
3
- import React from "react";
@@ -1,5 +1,88 @@
1
- import React from 'react';
2
- const ForgotPasswordTemplate = () => {
3
- return React.createElement("div", null, "Forgot Password");
1
+ import React, { useRef, useState } from 'react';
2
+ import { Text, Link, Page } from '@weareconceptstudio/core';
3
+ import { Form, Input } from '@weareconceptstudio/form';
4
+ import { AccountButton, WarningMessage } from '../../components';
5
+ import ForgotPasswordTemplateStyle from './style';
6
+ const ForgotPasswordTemplate = ({ onFormSubmit }) => {
7
+ //! Ref
8
+ const tryAgainTimeout = useRef();
9
+ //! State
10
+ const [forgotState, setForgotState] = useState({
11
+ isSuccess: false,
12
+ email: null,
13
+ error: null,
14
+ isSent: false,
15
+ isBtnDisabled: false,
16
+ });
17
+ const handleFormFinish = async (values) => {
18
+ return await onFormSubmit(values).then(() => {
19
+ setForgotState((prev) => ({
20
+ ...prev,
21
+ email: values.email,
22
+ isSuccess: true,
23
+ }));
24
+ });
25
+ };
26
+ const handleTryAgain = () => {
27
+ setForgotState((prev) => ({
28
+ ...prev,
29
+ error: '',
30
+ isBtnDisabled: true,
31
+ }));
32
+ // @ts-ignore
33
+ tryAgainTimeout.current = setTimeout(() => {
34
+ setForgotState((prev) => ({
35
+ ...prev,
36
+ isSent: false,
37
+ isBtnDisabled: false,
38
+ }));
39
+ }, 60000);
40
+ return (!forgotState.isBtnDisabled &&
41
+ onFormSubmit({ email: forgotState.email })
42
+ .then(() => {
43
+ setForgotState((prev) => ({
44
+ ...prev,
45
+ isSent: true,
46
+ }));
47
+ })
48
+ .catch((err) => {
49
+ setForgotState((prev) => ({
50
+ ...prev,
51
+ isBtnDisabled: true,
52
+ error: err.data.errors.email[0],
53
+ }));
54
+ tryAgainTimeout.current && clearTimeout(tryAgainTimeout.current);
55
+ }));
56
+ };
57
+ return (React.createElement(Page, { className: 'forgot-password use-account' },
58
+ React.createElement(ForgotPasswordTemplateStyle, null,
59
+ React.createElement("div", { className: `forgot-password-wrapper` }, !forgotState.isSuccess ? (React.createElement(React.Fragment, null,
60
+ React.createElement(Text, { tag: 'h1', className: 'account-h2 account-font-bold account-primary-color1 title', text: 'forgotPassword' }),
61
+ React.createElement(Text, { className: 'account-p account-p2 account-font-regular account-primary-color1 description', text: 'forgotPasswordDescription' }),
62
+ React.createElement(Form, { onSubmit: handleFormFinish },
63
+ React.createElement(Form.Item, { name: 'email', label: 'email' },
64
+ React.createElement(Input, { placeholder: 'emailPlaceholder' })),
65
+ React.createElement("div", { className: 'loginExternalBlock' },
66
+ React.createElement(Link, { href: '/sign-in' },
67
+ React.createElement(Text, { tag: 'span', className: 'account-p account-p3 account-font-medium account-primary-color1 underline login-external', text: 'login' }))),
68
+ React.createElement(AccountButton
69
+ // @ts-ignore
70
+ , {
71
+ // @ts-ignore
72
+ text: `submit`, type: `submit`, btnType: `full-width` })))) : (React.createElement(React.Fragment, null,
73
+ React.createElement(Text, { tag: 'h2', className: 'account-h2 account-font-bold account-primary-color1 title', text: 'thankYou' }),
74
+ React.createElement("div", { className: 'recovery-wrap' },
75
+ React.createElement(Text, { className: 'account-p account-p2 account-font-medium account-primary-color1', text: 'recoveryText' }),
76
+ "\u00A0",
77
+ React.createElement(Text, { className: 'account-p account-p2 account-font-bold account-primary-color1', text: forgotState.email })),
78
+ React.createElement("div", { className: 'try-again-wrap' },
79
+ React.createElement(Text, { className: `account-p account-p2 account-font-medium account-primary-color1`, text: `tryAgainText` }),
80
+ "\u00A0",
81
+ React.createElement(Text, { text: `tryAgain`, onClick: handleTryAgain, className: `account-p account-p2 account-font-bold account-primary-color1 underline try-again-text ${forgotState.isBtnDisabled ? 'disabled' : ''}` })),
82
+ React.createElement(WarningMessage
83
+ // @ts-ignore
84
+ , {
85
+ // @ts-ignore
86
+ error: forgotState.error, isSent: forgotState.isSent, successTitle: 'recoverPassword', successSubtitle: 'recoverPasswordDesc' })))))));
4
87
  };
5
88
  export default ForgotPasswordTemplate;
@@ -0,0 +1,2 @@
1
+ export default ForgotPasswordTemplateStyle;
2
+ declare const ForgotPasswordTemplateStyle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;