@akinon/next 1.13.0 → 1.14.0

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 (133) hide show
  1. package/.editorconfig +7 -0
  2. package/.eslintrc.js +40 -40
  3. package/.prettierrc +13 -13
  4. package/CHANGELOG.md +19 -0
  5. package/api/auth.ts +231 -231
  6. package/api/cache.ts +44 -44
  7. package/api/client.ts +174 -174
  8. package/api/logout.ts +42 -42
  9. package/assets/styles/index.scss +28 -28
  10. package/bin/pz-check-dependencies.js +98 -98
  11. package/bin/pz-install-plugins.js +33 -33
  12. package/bin/pz-install-theme.js +58 -58
  13. package/bin/pz-postbuild.js +1 -1
  14. package/bin/pz-postdev.js +1 -1
  15. package/bin/pz-postinstall.js +6 -6
  16. package/bin/pz-poststart.js +1 -1
  17. package/bin/pz-prebuild.js +4 -4
  18. package/bin/pz-predev.js +4 -4
  19. package/bin/pz-prestart.js +1 -1
  20. package/bin/run-script.js +44 -44
  21. package/components/accordion.tsx +52 -0
  22. package/components/button.tsx +46 -0
  23. package/components/client-root.tsx +19 -19
  24. package/components/icon.tsx +18 -18
  25. package/components/image.tsx +133 -133
  26. package/components/index.ts +17 -1
  27. package/components/input.tsx +110 -0
  28. package/components/lazy-component.tsx +33 -33
  29. package/components/loader-spinner.tsx +23 -23
  30. package/components/mobile-app-toggler.tsx +26 -26
  31. package/components/oauth-login.tsx +24 -24
  32. package/components/plugin-module.tsx +11 -8
  33. package/components/price.tsx +55 -0
  34. package/components/pz-providers.tsx +24 -24
  35. package/components/pz-root.tsx +21 -21
  36. package/components/radio.tsx +18 -18
  37. package/components/react-portal.tsx +45 -45
  38. package/components/redirect-three-d/content/index.tsx +74 -74
  39. package/components/redirect-three-d/index.tsx +17 -17
  40. package/components/selected-payment-option-view.tsx +7 -0
  41. package/components/trans.tsx +39 -39
  42. package/data/client/account.ts +208 -208
  43. package/data/client/address.ts +107 -107
  44. package/data/client/api.ts +85 -84
  45. package/data/client/b2b.ts +106 -106
  46. package/data/client/basket.ts +82 -82
  47. package/data/client/checkout.ts +516 -479
  48. package/data/client/misc.ts +101 -101
  49. package/data/client/product.ts +89 -89
  50. package/data/client/user.ts +99 -99
  51. package/data/client/wishlist.ts +118 -88
  52. package/data/server/category.ts +132 -128
  53. package/data/server/flatpage.ts +21 -21
  54. package/data/server/form.ts +22 -22
  55. package/data/server/index.ts +10 -10
  56. package/data/server/landingpage.ts +24 -24
  57. package/data/server/list.ts +67 -62
  58. package/data/server/menu.ts +35 -35
  59. package/data/server/product.ts +86 -86
  60. package/data/server/seo.ts +48 -48
  61. package/data/server/special-page.ts +47 -47
  62. package/data/server/widget.ts +27 -27
  63. package/data/urls.ts +221 -210
  64. package/hocs/client/index.ts +1 -1
  65. package/hocs/client/with-segment-defaults.tsx +25 -25
  66. package/hocs/server/index.ts +1 -1
  67. package/hocs/server/with-segment-defaults.tsx +85 -85
  68. package/hooks/index.ts +10 -10
  69. package/hooks/use-captcha.tsx +76 -76
  70. package/hooks/use-common-product-attributes.ts +36 -36
  71. package/hooks/use-debounce.ts +20 -20
  72. package/hooks/use-localization.ts +78 -78
  73. package/hooks/use-media-query.ts +36 -36
  74. package/hooks/use-mobile-iframe-handler.ts +23 -23
  75. package/hooks/use-on-click-outside.tsx +28 -28
  76. package/hooks/use-payment-options.ts +12 -16
  77. package/hooks/use-router.ts +45 -45
  78. package/hooks/use-translation.ts +14 -14
  79. package/lib/cache.ts +215 -215
  80. package/localization/index.ts +5 -5
  81. package/localization/provider.tsx +58 -58
  82. package/middlewares/currency.ts +100 -100
  83. package/middlewares/default.ts +256 -256
  84. package/middlewares/index.ts +29 -29
  85. package/middlewares/locale.ts +68 -68
  86. package/middlewares/oauth-login.ts +79 -79
  87. package/middlewares/pretty-url.ts +104 -104
  88. package/middlewares/redirection-payment.ts +160 -160
  89. package/middlewares/three-d-redirection.ts +159 -159
  90. package/middlewares/url-redirection.ts +65 -65
  91. package/package.json +2 -2
  92. package/plugins.js +2 -1
  93. package/redux/hooks.ts +7 -7
  94. package/redux/middlewares/checkout.ts +265 -260
  95. package/redux/middlewares/index.ts +50 -50
  96. package/redux/reducers/checkout.ts +184 -171
  97. package/redux/reducers/config.ts +28 -28
  98. package/redux/reducers/header.ts +59 -59
  99. package/redux/reducers/index.ts +14 -14
  100. package/redux/reducers/root.ts +61 -61
  101. package/sentry/index.ts +27 -27
  102. package/tailwind/rtl.js +137 -137
  103. package/types/commerce/account.ts +64 -64
  104. package/types/commerce/address.ts +94 -94
  105. package/types/commerce/b2b.ts +117 -117
  106. package/types/commerce/basket.ts +43 -43
  107. package/types/commerce/category.ts +114 -114
  108. package/types/commerce/checkout.ts +143 -136
  109. package/types/commerce/flatpage.ts +7 -7
  110. package/types/commerce/form.ts +66 -66
  111. package/types/commerce/index.ts +12 -12
  112. package/types/commerce/landingpage.ts +7 -7
  113. package/types/commerce/misc.ts +127 -127
  114. package/types/commerce/order.ts +119 -119
  115. package/types/commerce/product.ts +109 -109
  116. package/types/commerce/widget.ts +28 -28
  117. package/types/gtm.ts +16 -16
  118. package/types/index.ts +274 -237
  119. package/types/metadata.ts +7 -7
  120. package/types/next-auth.d.ts +24 -24
  121. package/utils/app-fetch.ts +69 -69
  122. package/utils/deep-merge.js +24 -24
  123. package/utils/generate-commerce-search-params.ts +22 -22
  124. package/utils/get-currency.ts +29 -29
  125. package/utils/image-loader.ts +31 -31
  126. package/utils/index.ts +150 -150
  127. package/utils/localization.ts +29 -29
  128. package/utils/log.ts +138 -138
  129. package/utils/menu-generator.ts +27 -27
  130. package/utils/mobile-3d-iframe.ts +77 -77
  131. package/utils/server-translation.ts +57 -57
  132. package/utils/server-variables.ts +9 -9
  133. package/with-pz-config.js +94 -94
@@ -1,171 +1,184 @@
1
- 'use client';
2
-
3
- import { createSlice } from '@reduxjs/toolkit';
4
-
5
- import {
6
- Address,
7
- BankAccount,
8
- CheckoutStep,
9
- CreditCardType,
10
- DeliveryOption,
11
- InstallmentOption,
12
- PaymentChoice,
13
- PaymentOption,
14
- PreOrder,
15
- RetailStore,
16
- ShippingOption
17
- } from '../../types';
18
-
19
- export interface CheckoutState {
20
- // TODO: Add types
21
- errors: any;
22
- hasGiftBox: boolean;
23
- canGuestPurchase: boolean;
24
- steps: {
25
- current: CheckoutStep;
26
- shipping: {
27
- completed: boolean;
28
- busy: boolean;
29
- };
30
- payment: {
31
- completed: boolean;
32
- busy: boolean;
33
- };
34
- };
35
- preOrder: PreOrder;
36
- addressList: Address[];
37
- deliveryOptions: DeliveryOption[];
38
- shippingOptions: ShippingOption[];
39
- paymentOptions: PaymentOption[];
40
- paymentChoices: PaymentChoice[];
41
- cardType: CreditCardType;
42
- installmentOptions: InstallmentOption[];
43
- bankAccounts: BankAccount[];
44
- selectedBankAccountPk: number;
45
- loyaltyBalance?: string;
46
- retailStores: RetailStore[];
47
- }
48
-
49
- const initialState: CheckoutState = {
50
- errors: null,
51
- hasGiftBox: false,
52
- canGuestPurchase: false,
53
- steps: {
54
- current: CheckoutStep.Shipping,
55
- shipping: {
56
- completed: false,
57
- busy: false
58
- },
59
- payment: {
60
- completed: false,
61
- busy: false
62
- }
63
- },
64
- preOrder: null,
65
- addressList: [],
66
- deliveryOptions: [],
67
- shippingOptions: [],
68
- paymentOptions: [],
69
- paymentChoices: [],
70
- cardType: null,
71
- installmentOptions: [],
72
- bankAccounts: [],
73
- selectedBankAccountPk: null,
74
- retailStores: []
75
- };
76
-
77
- const checkoutSlice = createSlice({
78
- name: 'checkout',
79
- initialState,
80
- reducers: {
81
- resetCheckoutState() {
82
- return initialState;
83
- },
84
- setErrors(state, { payload }) {
85
- state.errors = payload;
86
- },
87
- setHasGiftBox(state, { payload }) {
88
- state.hasGiftBox = payload;
89
- },
90
- setCanGuestPurchase(state, { payload }) {
91
- state.canGuestPurchase = payload;
92
- },
93
- setCurrentStep(state, { payload }) {
94
- state.steps.current = payload;
95
- },
96
- setShippingStepCompleted(state, { payload }) {
97
- state.steps.shipping.completed = payload;
98
- },
99
- setShippingStepBusy(state, { payload }) {
100
- state.steps.shipping.busy = payload;
101
- },
102
- setPaymentStepCompleted(state, { payload }) {
103
- state.steps.payment.completed = payload;
104
- },
105
- setPaymentStepBusy(state, { payload }) {
106
- state.steps.payment.busy = payload;
107
- },
108
- setPreOrder(state, { payload }) {
109
- state.preOrder = payload;
110
- },
111
- setAddressList(state, { payload }) {
112
- state.addressList = payload;
113
- },
114
- setDeliveryOptions(state, { payload }) {
115
- state.deliveryOptions = payload;
116
- },
117
- setShippingOptions(state, { payload }) {
118
- state.shippingOptions = payload;
119
- },
120
- setPaymentOptions(state, { payload }) {
121
- state.paymentOptions = payload;
122
- },
123
- setPaymentChoices(state, { payload }) {
124
- state.paymentChoices = payload;
125
- },
126
- setCardType(state, { payload }) {
127
- state.cardType = payload;
128
- },
129
- setInstallmentOptions(state, { payload }) {
130
- state.installmentOptions = payload;
131
- },
132
- setBankAccounts(state, { payload }) {
133
- state.bankAccounts = payload;
134
- },
135
- setSelectedBankAccountPk(state, { payload }) {
136
- state.selectedBankAccountPk = payload;
137
- },
138
- setLoyaltyBalance(state, { payload }) {
139
- state.loyaltyBalance = payload;
140
- },
141
- setRetailStores(state, { payload }) {
142
- state.retailStores = payload;
143
- }
144
- }
145
- });
146
-
147
- export const {
148
- resetCheckoutState,
149
- setErrors,
150
- setHasGiftBox,
151
- setCanGuestPurchase,
152
- setCurrentStep,
153
- setShippingStepCompleted,
154
- setShippingStepBusy,
155
- setPaymentStepCompleted,
156
- setPaymentStepBusy,
157
- setPreOrder,
158
- setAddressList,
159
- setDeliveryOptions,
160
- setShippingOptions,
161
- setPaymentOptions,
162
- setPaymentChoices,
163
- setCardType,
164
- setInstallmentOptions,
165
- setBankAccounts,
166
- setSelectedBankAccountPk,
167
- setLoyaltyBalance,
168
- setRetailStores
169
- } = checkoutSlice.actions;
170
-
171
- export default checkoutSlice.reducer;
1
+ 'use client';
2
+
3
+ import { createSlice } from '@reduxjs/toolkit';
4
+
5
+ import {
6
+ Address,
7
+ BankAccount,
8
+ CheckoutStep,
9
+ CreditCardType,
10
+ DeliveryOption,
11
+ InstallmentOption,
12
+ PaymentChoice,
13
+ PaymentOption,
14
+ CheckoutCreditPaymentOption,
15
+ PreOrder,
16
+ RetailStore,
17
+ ShippingOption
18
+ } from '../../types';
19
+
20
+ export interface CheckoutState {
21
+ // TODO: Add types
22
+ errors: any;
23
+ hasGiftBox: boolean;
24
+ canGuestPurchase: boolean;
25
+ steps: {
26
+ current: CheckoutStep;
27
+ shipping: {
28
+ completed: boolean;
29
+ busy: boolean;
30
+ };
31
+ payment: {
32
+ completed: boolean;
33
+ busy: boolean;
34
+ };
35
+ };
36
+ preOrder: PreOrder;
37
+ addressList: Address[];
38
+ deliveryOptions: DeliveryOption[];
39
+ shippingOptions: ShippingOption[];
40
+ paymentOptions: PaymentOption[];
41
+ creditPaymentOptions: CheckoutCreditPaymentOption[];
42
+ selectedCreditPaymentPk: number;
43
+ paymentChoices: PaymentChoice[];
44
+ cardType: CreditCardType;
45
+ installmentOptions: InstallmentOption[];
46
+ bankAccounts: BankAccount[];
47
+ selectedBankAccountPk: number;
48
+ loyaltyBalance?: string;
49
+ retailStores: RetailStore[];
50
+ }
51
+
52
+ const initialState: CheckoutState = {
53
+ errors: null,
54
+ hasGiftBox: false,
55
+ canGuestPurchase: false,
56
+ steps: {
57
+ current: CheckoutStep.Shipping,
58
+ shipping: {
59
+ completed: false,
60
+ busy: false
61
+ },
62
+ payment: {
63
+ completed: false,
64
+ busy: false
65
+ }
66
+ },
67
+ preOrder: null,
68
+ addressList: [],
69
+ deliveryOptions: [],
70
+ shippingOptions: [],
71
+ paymentOptions: [],
72
+ creditPaymentOptions: [],
73
+ selectedCreditPaymentPk: null,
74
+ paymentChoices: [],
75
+ cardType: null,
76
+ installmentOptions: [],
77
+ bankAccounts: [],
78
+ selectedBankAccountPk: null,
79
+ retailStores: []
80
+ };
81
+
82
+ const checkoutSlice = createSlice({
83
+ name: 'checkout',
84
+ initialState,
85
+ reducers: {
86
+ resetCheckoutState() {
87
+ return initialState;
88
+ },
89
+ setErrors(state, { payload }) {
90
+ state.errors = payload;
91
+ },
92
+ setHasGiftBox(state, { payload }) {
93
+ state.hasGiftBox = payload;
94
+ },
95
+ setCanGuestPurchase(state, { payload }) {
96
+ state.canGuestPurchase = payload;
97
+ },
98
+ setCurrentStep(state, { payload }) {
99
+ state.steps.current = payload;
100
+ },
101
+ setShippingStepCompleted(state, { payload }) {
102
+ state.steps.shipping.completed = payload;
103
+ },
104
+ setShippingStepBusy(state, { payload }) {
105
+ state.steps.shipping.busy = payload;
106
+ },
107
+ setPaymentStepCompleted(state, { payload }) {
108
+ state.steps.payment.completed = payload;
109
+ },
110
+ setPaymentStepBusy(state, { payload }) {
111
+ state.steps.payment.busy = payload;
112
+ },
113
+ setPreOrder(state, { payload }) {
114
+ state.preOrder = payload;
115
+ },
116
+ setAddressList(state, { payload }) {
117
+ state.addressList = payload;
118
+ },
119
+ setDeliveryOptions(state, { payload }) {
120
+ state.deliveryOptions = payload;
121
+ },
122
+ setShippingOptions(state, { payload }) {
123
+ state.shippingOptions = payload;
124
+ },
125
+ setPaymentOptions(state, { payload }) {
126
+ state.paymentOptions = payload;
127
+ },
128
+ setPaymentChoices(state, { payload }) {
129
+ state.paymentChoices = payload;
130
+ },
131
+ setCreditPaymentOptions(state, { payload }) {
132
+ state.creditPaymentOptions = payload;
133
+ },
134
+ setSelectedCreditPaymentPk(state, { payload }) {
135
+ state.selectedCreditPaymentPk = payload;
136
+ },
137
+ setCardType(state, { payload }) {
138
+ state.cardType = payload;
139
+ },
140
+ setInstallmentOptions(state, { payload }) {
141
+ state.installmentOptions = payload;
142
+ },
143
+ setBankAccounts(state, { payload }) {
144
+ state.bankAccounts = payload;
145
+ },
146
+ setSelectedBankAccountPk(state, { payload }) {
147
+ state.selectedBankAccountPk = payload;
148
+ },
149
+ setLoyaltyBalance(state, { payload }) {
150
+ state.loyaltyBalance = payload;
151
+ },
152
+ setRetailStores(state, { payload }) {
153
+ state.retailStores = payload;
154
+ }
155
+ }
156
+ });
157
+
158
+ export const {
159
+ resetCheckoutState,
160
+ setErrors,
161
+ setHasGiftBox,
162
+ setCanGuestPurchase,
163
+ setCurrentStep,
164
+ setShippingStepCompleted,
165
+ setShippingStepBusy,
166
+ setPaymentStepCompleted,
167
+ setPaymentStepBusy,
168
+ setPreOrder,
169
+ setAddressList,
170
+ setDeliveryOptions,
171
+ setShippingOptions,
172
+ setPaymentOptions,
173
+ setCreditPaymentOptions,
174
+ setSelectedCreditPaymentPk,
175
+ setPaymentChoices,
176
+ setCardType,
177
+ setInstallmentOptions,
178
+ setBankAccounts,
179
+ setSelectedBankAccountPk,
180
+ setLoyaltyBalance,
181
+ setRetailStores
182
+ } = checkoutSlice.actions;
183
+
184
+ export default checkoutSlice.reducer;
@@ -1,28 +1,28 @@
1
- 'use client';
2
-
3
- import { createSlice, PayloadAction } from '@reduxjs/toolkit';
4
- import { Config } from '../../types';
5
-
6
- const initialState: Config = {
7
- user_phone_regex: '^(05)\\d{9}$',
8
- user_phone_format: '05999999999',
9
- country: {
10
- pk: 1,
11
- name: 'Türkiye',
12
- code: 'tr'
13
- }
14
- };
15
-
16
- const configSlice = createSlice({
17
- name: 'config',
18
- initialState,
19
- reducers: {
20
- setConfig: (state, action: PayloadAction<Config>) => {
21
- return action.payload;
22
- }
23
- }
24
- });
25
-
26
- export const { setConfig } = configSlice.actions;
27
-
28
- export default configSlice.reducer;
1
+ 'use client';
2
+
3
+ import { createSlice, PayloadAction } from '@reduxjs/toolkit';
4
+ import { Config } from '../../types';
5
+
6
+ const initialState: Config = {
7
+ user_phone_regex: '^(05)\\d{9}$',
8
+ user_phone_format: '05999999999',
9
+ country: {
10
+ pk: 1,
11
+ name: 'Türkiye',
12
+ code: 'tr'
13
+ }
14
+ };
15
+
16
+ const configSlice = createSlice({
17
+ name: 'config',
18
+ initialState,
19
+ reducers: {
20
+ setConfig: (state, action: PayloadAction<Config>) => {
21
+ return action.payload;
22
+ }
23
+ }
24
+ });
25
+
26
+ export const { setConfig } = configSlice.actions;
27
+
28
+ export default configSlice.reducer;
@@ -1,59 +1,59 @@
1
- 'use client';
2
-
3
- import { createSlice } from '@reduxjs/toolkit';
4
-
5
- export interface HeaderState {
6
- isMobileMenuOpen: boolean;
7
- isSearchOpen: boolean;
8
- openedMenu: string | null;
9
- }
10
-
11
- const initialState: HeaderState = {
12
- isMobileMenuOpen: false,
13
- isSearchOpen: false,
14
- openedMenu: null
15
- };
16
-
17
- const headerSlice = createSlice({
18
- name: 'header',
19
- initialState,
20
- reducers: {
21
- openMobileMenu(state) {
22
- state.isMobileMenuOpen = true;
23
- },
24
- closeMobileMenu(state) {
25
- state.isMobileMenuOpen = false;
26
- },
27
- toggleMobileMenu(state) {
28
- state.isMobileMenuOpen = !state.isMobileMenuOpen;
29
- },
30
- openSearch(state) {
31
- state.isSearchOpen = true;
32
- },
33
- closeSearch(state) {
34
- state.isSearchOpen = false;
35
- },
36
- toggleSearch(state) {
37
- state.isSearchOpen = !state.isSearchOpen;
38
- },
39
- setOpenedMenu(state, action) {
40
- state.openedMenu = action.payload;
41
- },
42
- resetHeaderState() {
43
- return initialState;
44
- }
45
- }
46
- });
47
-
48
- export const {
49
- openMobileMenu,
50
- closeMobileMenu,
51
- toggleMobileMenu,
52
- openSearch,
53
- closeSearch,
54
- toggleSearch,
55
- setOpenedMenu,
56
- resetHeaderState
57
- } = headerSlice.actions;
58
-
59
- export default headerSlice.reducer;
1
+ 'use client';
2
+
3
+ import { createSlice } from '@reduxjs/toolkit';
4
+
5
+ export interface HeaderState {
6
+ isMobileMenuOpen: boolean;
7
+ isSearchOpen: boolean;
8
+ openedMenu: string | null;
9
+ }
10
+
11
+ const initialState: HeaderState = {
12
+ isMobileMenuOpen: false,
13
+ isSearchOpen: false,
14
+ openedMenu: null
15
+ };
16
+
17
+ const headerSlice = createSlice({
18
+ name: 'header',
19
+ initialState,
20
+ reducers: {
21
+ openMobileMenu(state) {
22
+ state.isMobileMenuOpen = true;
23
+ },
24
+ closeMobileMenu(state) {
25
+ state.isMobileMenuOpen = false;
26
+ },
27
+ toggleMobileMenu(state) {
28
+ state.isMobileMenuOpen = !state.isMobileMenuOpen;
29
+ },
30
+ openSearch(state) {
31
+ state.isSearchOpen = true;
32
+ },
33
+ closeSearch(state) {
34
+ state.isSearchOpen = false;
35
+ },
36
+ toggleSearch(state) {
37
+ state.isSearchOpen = !state.isSearchOpen;
38
+ },
39
+ setOpenedMenu(state, action) {
40
+ state.openedMenu = action.payload;
41
+ },
42
+ resetHeaderState() {
43
+ return initialState;
44
+ }
45
+ }
46
+ });
47
+
48
+ export const {
49
+ openMobileMenu,
50
+ closeMobileMenu,
51
+ toggleMobileMenu,
52
+ openSearch,
53
+ closeSearch,
54
+ toggleSearch,
55
+ setOpenedMenu,
56
+ resetHeaderState
57
+ } = headerSlice.actions;
58
+
59
+ export default headerSlice.reducer;
@@ -1,15 +1,15 @@
1
- import rootReducer from './root';
2
- import checkoutReducer from './checkout';
3
- import configReducer from './config';
4
- import headerReducer from './header';
5
- import { api } from '../../data/client/api';
6
-
7
- const reducers = {
8
- [api.reducerPath]: api.reducer,
9
- root: rootReducer,
10
- checkout: checkoutReducer,
11
- config: configReducer,
12
- header: headerReducer
13
- };
14
-
1
+ import rootReducer from './root';
2
+ import checkoutReducer from './checkout';
3
+ import configReducer from './config';
4
+ import headerReducer from './header';
5
+ import { api } from '../../data/client/api';
6
+
7
+ const reducers = {
8
+ [api.reducerPath]: api.reducer,
9
+ root: rootReducer,
10
+ checkout: checkoutReducer,
11
+ config: configReducer,
12
+ header: headerReducer
13
+ };
14
+
15
15
  export default reducers;