@akinon/projectzero 1.105.0 → 1.106.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.
- package/CHANGELOG.md +6 -0
- package/app-template/CHANGELOG.md +33 -0
- package/app-template/package.json +19 -18
- package/app-template/public/locales/en/checkout.json +6 -0
- package/app-template/public/locales/tr/checkout.json +6 -0
- package/app-template/src/components/accordion.tsx +22 -19
- package/app-template/src/components/file-input.tsx +27 -7
- package/app-template/src/components/price.tsx +1 -1
- package/app-template/src/components/types/index.ts +24 -1
- package/app-template/src/views/checkout/steps/payment/options/store-credit.tsx +121 -0
- package/app-template/src/views/checkout/summary.tsx +10 -0
- package/commands/plugins.ts +34 -14
- package/dist/commands/plugins.js +34 -14
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# projectzeronext
|
|
2
2
|
|
|
3
|
+
## 1.106.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e9e902b: ZERO-3650: Add Loyalty
|
|
8
|
+
- 9dc7298: ZERO-3416: Refactor Accordion component to enhance props and improve styling flexibility
|
|
9
|
+
- 2d3f178: ZERO-3417: Enhance FileInput component with additional props for customization
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [155cd23]
|
|
14
|
+
- Updated dependencies [ae010f0]
|
|
15
|
+
- Updated dependencies [9dc7298]
|
|
16
|
+
- Updated dependencies [2d3f178]
|
|
17
|
+
- Updated dependencies [8bc82f0]
|
|
18
|
+
- @akinon/pz-tamara-extension@1.106.0
|
|
19
|
+
- @akinon/pz-otp@1.106.0
|
|
20
|
+
- @akinon/next@1.106.0
|
|
21
|
+
- @akinon/pz-checkout-gift-pack@1.106.0
|
|
22
|
+
- @akinon/pz-akifast@1.106.0
|
|
23
|
+
- @akinon/pz-b2b@1.106.0
|
|
24
|
+
- @akinon/pz-basket-gift-pack@1.106.0
|
|
25
|
+
- @akinon/pz-bkm@1.106.0
|
|
26
|
+
- @akinon/pz-click-collect@1.106.0
|
|
27
|
+
- @akinon/pz-credit-payment@1.106.0
|
|
28
|
+
- @akinon/pz-gpay@1.106.0
|
|
29
|
+
- @akinon/pz-hepsipay@1.106.0
|
|
30
|
+
- @akinon/pz-masterpass@1.106.0
|
|
31
|
+
- @akinon/pz-one-click-checkout@1.106.0
|
|
32
|
+
- @akinon/pz-pay-on-delivery@1.106.0
|
|
33
|
+
- @akinon/pz-saved-card@1.106.0
|
|
34
|
+
- @akinon/pz-tabby-extension@1.106.0
|
|
35
|
+
|
|
3
36
|
## 1.105.0
|
|
4
37
|
|
|
5
38
|
### Minor Changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projectzeronext",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.106.0",
|
|
4
4
|
"private": true,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"scripts": {
|
|
@@ -24,22 +24,23 @@
|
|
|
24
24
|
"test:middleware": "jest middleware-matcher.test.ts --bail"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@akinon/next": "1.
|
|
28
|
-
"@akinon/pz-akifast": "1.
|
|
29
|
-
"@akinon/pz-b2b": "1.
|
|
30
|
-
"@akinon/pz-basket-gift-pack": "1.
|
|
31
|
-
"@akinon/pz-bkm": "1.
|
|
32
|
-
"@akinon/pz-checkout-gift-pack": "1.
|
|
33
|
-
"@akinon/pz-click-collect": "1.
|
|
34
|
-
"@akinon/pz-credit-payment": "1.
|
|
35
|
-
"@akinon/pz-gpay": "1.
|
|
36
|
-
"@akinon/pz-
|
|
37
|
-
"@akinon/pz-
|
|
38
|
-
"@akinon/pz-
|
|
39
|
-
"@akinon/pz-
|
|
40
|
-
"@akinon/pz-
|
|
41
|
-
"@akinon/pz-
|
|
42
|
-
"@akinon/pz-
|
|
27
|
+
"@akinon/next": "1.106.0",
|
|
28
|
+
"@akinon/pz-akifast": "1.106.0",
|
|
29
|
+
"@akinon/pz-b2b": "1.106.0",
|
|
30
|
+
"@akinon/pz-basket-gift-pack": "1.106.0",
|
|
31
|
+
"@akinon/pz-bkm": "1.106.0",
|
|
32
|
+
"@akinon/pz-checkout-gift-pack": "1.106.0",
|
|
33
|
+
"@akinon/pz-click-collect": "1.106.0",
|
|
34
|
+
"@akinon/pz-credit-payment": "1.106.0",
|
|
35
|
+
"@akinon/pz-gpay": "1.106.0",
|
|
36
|
+
"@akinon/pz-hepsipay": "1.106.0",
|
|
37
|
+
"@akinon/pz-masterpass": "1.106.0",
|
|
38
|
+
"@akinon/pz-one-click-checkout": "1.106.0",
|
|
39
|
+
"@akinon/pz-otp": "1.106.0",
|
|
40
|
+
"@akinon/pz-pay-on-delivery": "1.106.0",
|
|
41
|
+
"@akinon/pz-saved-card": "1.106.0",
|
|
42
|
+
"@akinon/pz-tabby-extension": "1.106.0",
|
|
43
|
+
"@akinon/pz-tamara-extension": "1.106.0",
|
|
43
44
|
"@hookform/resolvers": "2.9.0",
|
|
44
45
|
"@next/third-parties": "14.1.0",
|
|
45
46
|
"@react-google-maps/api": "2.17.1",
|
|
@@ -62,7 +63,7 @@
|
|
|
62
63
|
"yup": "0.32.11"
|
|
63
64
|
},
|
|
64
65
|
"devDependencies": {
|
|
65
|
-
"@akinon/eslint-plugin-projectzero": "1.
|
|
66
|
+
"@akinon/eslint-plugin-projectzero": "1.106.0",
|
|
66
67
|
"@semantic-release/changelog": "6.0.2",
|
|
67
68
|
"@semantic-release/exec": "6.0.3",
|
|
68
69
|
"@semantic-release/git": "10.0.1",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"subtotal": "Subtotal",
|
|
38
38
|
"shipping": "Shipping",
|
|
39
39
|
"discounts_total": "Discounts Total",
|
|
40
|
+
"loyalty_money_total": "Loyalty Money Total",
|
|
40
41
|
"total": "Total",
|
|
41
42
|
"delivery_info": "Delivery Info",
|
|
42
43
|
"change": "change",
|
|
@@ -138,6 +139,11 @@
|
|
|
138
139
|
"payments": "Payments",
|
|
139
140
|
"per_month": "Per Month",
|
|
140
141
|
"total": "Total"
|
|
142
|
+
},
|
|
143
|
+
"store_credit": {
|
|
144
|
+
"use_my_store_credits": "Use my pz-zero credits",
|
|
145
|
+
"available_balance": "Available Balance",
|
|
146
|
+
"insufficient_balance": "Your pz-zero credits are not sufficient to pay for the order, please select an additional payment method to cover the balance of <Amount/>"
|
|
141
147
|
}
|
|
142
148
|
},
|
|
143
149
|
"agreement": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"subtotal": "Ara toplam",
|
|
38
38
|
"shipping": "Kargo",
|
|
39
39
|
"discounts_total": "İndirimler Toplamı",
|
|
40
|
+
"loyalty_money_total": "Sadakat Parası Toplamı",
|
|
40
41
|
"total": "Toplam",
|
|
41
42
|
"delivery_info": "Teslimat Bilgileri",
|
|
42
43
|
"change": "değiştir",
|
|
@@ -138,6 +139,11 @@
|
|
|
138
139
|
"payments": "Ödemeler",
|
|
139
140
|
"per_month": "Her ay",
|
|
140
141
|
"total": "Toplam"
|
|
142
|
+
},
|
|
143
|
+
"store_credit": {
|
|
144
|
+
"use_my_store_credits": "pz-zero kredilerimi kullan",
|
|
145
|
+
"available_balance": "Mevcut Bakiyem",
|
|
146
|
+
"insufficient_balance": "pz-zero kredileriniz siparişi ödemek için yeterli değil, lütfen <Amount/> tutarını karşılamak için ek bir ödeme yöntemi seçin."
|
|
141
147
|
}
|
|
142
148
|
},
|
|
143
149
|
"agreement": {
|
|
@@ -1,33 +1,25 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { useState } from 'react';
|
|
4
4
|
import { Icon } from './icon';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
|
-
|
|
7
|
-
type AccordionProps = {
|
|
8
|
-
isCollapse?: boolean;
|
|
9
|
-
title?: string;
|
|
10
|
-
subTitle?: string;
|
|
11
|
-
icons?: string[];
|
|
12
|
-
iconSize?: number;
|
|
13
|
-
iconColor?: string;
|
|
14
|
-
children?: ReactNode;
|
|
15
|
-
className?: string;
|
|
16
|
-
titleClassName?: string;
|
|
17
|
-
dataTestId?: string;
|
|
18
|
-
};
|
|
6
|
+
import { AccordionProps } from './types';
|
|
19
7
|
|
|
20
8
|
export const Accordion = ({
|
|
21
9
|
isCollapse = false,
|
|
10
|
+
collapseClassName,
|
|
22
11
|
title,
|
|
23
12
|
subTitle,
|
|
24
13
|
icons = ['chevron-up', 'chevron-down'],
|
|
25
14
|
iconSize = 16,
|
|
26
15
|
iconColor = 'fill-[#000000]',
|
|
27
16
|
children,
|
|
17
|
+
headerClassName,
|
|
28
18
|
className,
|
|
29
19
|
titleClassName,
|
|
30
|
-
|
|
20
|
+
subTitleClassName,
|
|
21
|
+
dataTestId,
|
|
22
|
+
contentClassName
|
|
31
23
|
}: AccordionProps) => {
|
|
32
24
|
const [collapse, setCollapse] = useState(isCollapse);
|
|
33
25
|
|
|
@@ -39,15 +31,22 @@ export const Accordion = ({
|
|
|
39
31
|
)}
|
|
40
32
|
>
|
|
41
33
|
<div
|
|
42
|
-
className=
|
|
34
|
+
className={twMerge(
|
|
35
|
+
'flex items-center justify-between cursor-pointer',
|
|
36
|
+
headerClassName
|
|
37
|
+
)}
|
|
43
38
|
onClick={() => setCollapse(!collapse)}
|
|
44
39
|
data-testid={dataTestId}
|
|
45
40
|
>
|
|
46
|
-
<div className=
|
|
41
|
+
<div className={twMerge('flex flex-col', contentClassName)}>
|
|
47
42
|
{title && (
|
|
48
43
|
<h3 className={twMerge('text-sm', titleClassName)}>{title}</h3>
|
|
49
44
|
)}
|
|
50
|
-
{subTitle &&
|
|
45
|
+
{subTitle && (
|
|
46
|
+
<h4 className={twMerge('text-xs text-gray-700', subTitleClassName)}>
|
|
47
|
+
{subTitle}
|
|
48
|
+
</h4>
|
|
49
|
+
)}
|
|
51
50
|
</div>
|
|
52
51
|
|
|
53
52
|
{icons && (
|
|
@@ -58,7 +57,11 @@ export const Accordion = ({
|
|
|
58
57
|
/>
|
|
59
58
|
)}
|
|
60
59
|
</div>
|
|
61
|
-
{collapse &&
|
|
60
|
+
{collapse && (
|
|
61
|
+
<div className={twMerge('mt-3 text-sm', collapseClassName)}>
|
|
62
|
+
{children}
|
|
63
|
+
</div>
|
|
64
|
+
)}
|
|
62
65
|
</div>
|
|
63
66
|
);
|
|
64
67
|
};
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
3
|
import { FileInputProps } from '@theme/components/types';
|
|
4
|
-
import clsx from 'clsx';
|
|
5
4
|
import { useLocalization } from '@akinon/next/hooks';
|
|
5
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
|
|
7
7
|
export const FileInput = forwardRef<HTMLInputElement, FileInputProps>(
|
|
8
|
-
function FileInput(
|
|
8
|
+
function FileInput(
|
|
9
|
+
{
|
|
10
|
+
buttonClassName,
|
|
11
|
+
onChange,
|
|
12
|
+
fileClassName,
|
|
13
|
+
fileNameWrapperClassName,
|
|
14
|
+
fileInputClassName,
|
|
15
|
+
...props
|
|
16
|
+
},
|
|
17
|
+
ref
|
|
18
|
+
) {
|
|
9
19
|
const { t } = useLocalization();
|
|
10
20
|
const [fileNames, setFileNames] = useState<string[]>([]);
|
|
11
21
|
|
|
@@ -24,24 +34,34 @@ export const FileInput = forwardRef<HTMLInputElement, FileInputProps>(
|
|
|
24
34
|
type="file"
|
|
25
35
|
{...props}
|
|
26
36
|
ref={ref}
|
|
27
|
-
className=
|
|
37
|
+
className={twMerge(
|
|
38
|
+
'absolute inset-0 w-full h-full opacity-0 cursor-pointer',
|
|
39
|
+
fileInputClassName
|
|
40
|
+
)}
|
|
28
41
|
onChange={handleFileChange}
|
|
29
42
|
/>
|
|
30
43
|
<button
|
|
31
44
|
type="button"
|
|
32
|
-
className={
|
|
45
|
+
className={twMerge(
|
|
46
|
+
'bg-primary text-white py-2 px-4 text-sm',
|
|
47
|
+
buttonClassName
|
|
48
|
+
)}
|
|
33
49
|
>
|
|
34
50
|
{t('common.file_input.select_file')}
|
|
35
51
|
</button>
|
|
36
|
-
<div
|
|
52
|
+
<div
|
|
53
|
+
className={twMerge('mt-1 text-gray-500', fileNameWrapperClassName)}
|
|
54
|
+
>
|
|
37
55
|
{fileNames.length > 0 ? (
|
|
38
|
-
<ul className=
|
|
56
|
+
<ul className={twMerge('list-disc pl-4 text-xs', fileClassName)}>
|
|
39
57
|
{fileNames.map((name, index) => (
|
|
40
58
|
<li key={index}>{name}</li>
|
|
41
59
|
))}
|
|
42
60
|
</ul>
|
|
43
61
|
) : (
|
|
44
|
-
<span className=
|
|
62
|
+
<span className={twMerge('text-xs', fileClassName)}>
|
|
63
|
+
{t('common.file_input.no_file')}
|
|
64
|
+
</span>
|
|
45
65
|
)}
|
|
46
66
|
</div>
|
|
47
67
|
</div>
|
|
@@ -56,7 +56,7 @@ export const Price = (props: NumericFormatProps & PriceProps) => {
|
|
|
56
56
|
|
|
57
57
|
const currentCurrencyDecimalScale = Settings.localization.currencies.find(
|
|
58
58
|
(currency) => currency.code === currencyCode_
|
|
59
|
-
)
|
|
59
|
+
)?.decimalScale;
|
|
60
60
|
|
|
61
61
|
return (
|
|
62
62
|
<NumericFormat
|
|
@@ -29,7 +29,13 @@ export interface PaginationProps {
|
|
|
29
29
|
isLoading?: boolean;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export
|
|
32
|
+
export interface FileInputProps extends React.HTMLProps<HTMLInputElement> {
|
|
33
|
+
fileClassName?: string;
|
|
34
|
+
fileNameWrapperClassName?: string;
|
|
35
|
+
fileInputClassName?: string;
|
|
36
|
+
onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
37
|
+
buttonClassName?: string;
|
|
38
|
+
}
|
|
33
39
|
|
|
34
40
|
export type RadioProps = React.HTMLProps<HTMLInputElement>;
|
|
35
41
|
|
|
@@ -92,3 +98,20 @@ export interface BadgeProps {
|
|
|
92
98
|
children: ReactNode;
|
|
93
99
|
className?: string;
|
|
94
100
|
}
|
|
101
|
+
|
|
102
|
+
export type AccordionProps = {
|
|
103
|
+
isCollapse?: boolean;
|
|
104
|
+
collapseClassName?: string;
|
|
105
|
+
title?: string;
|
|
106
|
+
subTitle?: string;
|
|
107
|
+
icons?: string[];
|
|
108
|
+
iconSize?: number;
|
|
109
|
+
iconColor?: string;
|
|
110
|
+
children?: ReactNode;
|
|
111
|
+
headerClassName?: string;
|
|
112
|
+
className?: string;
|
|
113
|
+
titleClassName?: string;
|
|
114
|
+
subTitleClassName?: string;
|
|
115
|
+
dataTestId?: string;
|
|
116
|
+
contentClassName?: string;
|
|
117
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import clsx from 'clsx';
|
|
2
|
+
import {
|
|
3
|
+
useGetCheckoutLoyaltyBalanceQuery,
|
|
4
|
+
usePayWithLoyaltyBalanceMutation
|
|
5
|
+
} from '@akinon/next/data/client/checkout';
|
|
6
|
+
import { useAppSelector } from '@akinon/next/redux/hooks';
|
|
7
|
+
import { useMemo, useState } from 'react';
|
|
8
|
+
import { useLocalization } from '@akinon/next/hooks';
|
|
9
|
+
import { twMerge } from 'tailwind-merge';
|
|
10
|
+
import { Icon, Price } from '@theme/components';
|
|
11
|
+
import { Trans } from '@akinon/next/components';
|
|
12
|
+
import { LoaderSpinner } from '@theme/components';
|
|
13
|
+
|
|
14
|
+
export const StoreCredits = () => {
|
|
15
|
+
const { t } = useLocalization();
|
|
16
|
+
|
|
17
|
+
const [payWithLoyaltyBalance, { isLoading: isPayWithLoyaltyBalanceLoading }] =
|
|
18
|
+
usePayWithLoyaltyBalanceMutation();
|
|
19
|
+
|
|
20
|
+
const { loyaltyBalance, preOrder } = useAppSelector(
|
|
21
|
+
(state) => state.checkout
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const { isLoading: isLoyaltyBalanceLoading } =
|
|
25
|
+
useGetCheckoutLoyaltyBalanceQuery(undefined, {
|
|
26
|
+
refetchOnMountOrArgChange: true,
|
|
27
|
+
skip: !preOrder?.payment_option
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const isLoyaltyBalanceUsed = useMemo(() => {
|
|
31
|
+
return parseFloat(preOrder?.loyalty_money ?? '0') > 0;
|
|
32
|
+
}, [preOrder?.loyalty_money]);
|
|
33
|
+
|
|
34
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
35
|
+
|
|
36
|
+
const handleClick = async () => {
|
|
37
|
+
if (isLoading) return;
|
|
38
|
+
setIsLoading(true);
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
await payWithLoyaltyBalance(isLoyaltyBalanceUsed ? '0' : loyaltyBalance);
|
|
42
|
+
} finally {
|
|
43
|
+
setIsLoading(false);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
if (preOrder?.is_guest) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (isLoyaltyBalanceLoading) {
|
|
52
|
+
return (
|
|
53
|
+
<div className="mb-3 px-4 py-3 xs:px-0">
|
|
54
|
+
<LoaderSpinner />
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (parseFloat(loyaltyBalance) <= 0) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return (
|
|
63
|
+
<div
|
|
64
|
+
className={twMerge(
|
|
65
|
+
'hidden flex-col w-full mb-4 border border-solid border-gray-400 px-0 md:p-4',
|
|
66
|
+
isPayWithLoyaltyBalanceLoading && 'pointer-events-none opacity-30',
|
|
67
|
+
parseFloat(loyaltyBalance) > 0 && 'block'
|
|
68
|
+
)}
|
|
69
|
+
>
|
|
70
|
+
<div className="flex w-full items-center">
|
|
71
|
+
<button onClick={handleClick}>
|
|
72
|
+
<span
|
|
73
|
+
className={clsx(
|
|
74
|
+
'flex h-5 w-5 items-center justify-center rounded border border-solid border-primary',
|
|
75
|
+
isLoyaltyBalanceUsed ? 'bg-primary' : 'bg-white'
|
|
76
|
+
)}
|
|
77
|
+
>
|
|
78
|
+
<Icon
|
|
79
|
+
name={isLoyaltyBalanceUsed ? 'check' : ''}
|
|
80
|
+
size={10}
|
|
81
|
+
className={clsx({ 'text-white': isLoyaltyBalanceUsed })}
|
|
82
|
+
/>
|
|
83
|
+
</span>
|
|
84
|
+
</button>
|
|
85
|
+
|
|
86
|
+
<div className="w-full pl-4">
|
|
87
|
+
<p className="cursor-pointer text-sm" onClick={handleClick}>
|
|
88
|
+
{t('checkout.payment.store_credit.use_my_store_credits')}
|
|
89
|
+
</p>
|
|
90
|
+
<p className="flex text-sm text-[#606060]">
|
|
91
|
+
{t('checkout.payment.store_credit.available_balance')}:
|
|
92
|
+
<Price
|
|
93
|
+
value={loyaltyBalance}
|
|
94
|
+
currencyCode={preOrder?.currency_type_label}
|
|
95
|
+
className="pe-1 font-bold"
|
|
96
|
+
/>
|
|
97
|
+
</p>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
{isLoyaltyBalanceUsed && parseFloat(preOrder?.unpaid_amount) > 0 && (
|
|
102
|
+
<p className="my-4 text-[15px] font-light italic text-[#707070] max-xs:text-xs">
|
|
103
|
+
<Trans
|
|
104
|
+
i18nKey="checkout.payment.store_credit.insufficient_balance"
|
|
105
|
+
components={{
|
|
106
|
+
Amount: (
|
|
107
|
+
<div className="inline-flex">
|
|
108
|
+
<Price
|
|
109
|
+
value={preOrder?.unpaid_amount}
|
|
110
|
+
currencyCode={preOrder?.currency_type_label}
|
|
111
|
+
className="text-primary"
|
|
112
|
+
/>
|
|
113
|
+
</div>
|
|
114
|
+
)
|
|
115
|
+
}}
|
|
116
|
+
/>
|
|
117
|
+
</p>
|
|
118
|
+
)}
|
|
119
|
+
</div>
|
|
120
|
+
);
|
|
121
|
+
};
|
|
@@ -8,6 +8,7 @@ import PluginModule, { Component } from '@akinon/next/components/plugin-module';
|
|
|
8
8
|
import { twMerge } from 'tailwind-merge';
|
|
9
9
|
import { Image } from '@akinon/next/components/image';
|
|
10
10
|
import { Trans } from '@akinon/next/components/trans';
|
|
11
|
+
import { StoreCredits } from './steps/payment/options/store-credit';
|
|
11
12
|
|
|
12
13
|
export const Summary = () => {
|
|
13
14
|
const { t } = useLocalization();
|
|
@@ -38,6 +39,7 @@ export const Summary = () => {
|
|
|
38
39
|
'flex flex-col w-full mb-4 border border-solid border-gray-400'
|
|
39
40
|
}}
|
|
40
41
|
/>
|
|
42
|
+
<StoreCredits />
|
|
41
43
|
<div className="flex flex-col w-full border border-solid border-gray-400">
|
|
42
44
|
<div className="flex justify-between items-center flex-row border-b border-solid border-gray-400 px-4 py-2 sm:px-5 sm:py-4 sm:min-h-15">
|
|
43
45
|
<span className="text-black-800 text-xl font-light sm:text-2xl">
|
|
@@ -118,6 +120,14 @@ export const Summary = () => {
|
|
|
118
120
|
<Price value={preOrder?.shipping_amount} />
|
|
119
121
|
</span>
|
|
120
122
|
</div>
|
|
123
|
+
{parseFloat(preOrder?.loyalty_money) > 0 && (
|
|
124
|
+
<div className="flex items-center justify-between w-full text-xs text-black-800 py-1 px-4 sm:px-5">
|
|
125
|
+
<span>{t('checkout.summary.loyalty_money_total')}</span>
|
|
126
|
+
<span>
|
|
127
|
+
<Price value={preOrder?.loyalty_money} />
|
|
128
|
+
</span>
|
|
129
|
+
</div>
|
|
130
|
+
)}
|
|
121
131
|
<div className="flex items-center justify-between w-full text-xs text-black-800 py-1 px-4 sm:px-5">
|
|
122
132
|
<span>{t('checkout.summary.discounts_total')}</span>
|
|
123
133
|
<span>
|
package/commands/plugins.ts
CHANGED
|
@@ -69,45 +69,65 @@ export default async () => {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
const definedPlugins = [
|
|
72
|
+
{
|
|
73
|
+
name: 'Akifast',
|
|
74
|
+
value: 'pz-akifast'
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'Apple Pay',
|
|
78
|
+
value: 'pz-apple-pay'
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'B2B',
|
|
82
|
+
value: 'pz-b2b'
|
|
83
|
+
},
|
|
72
84
|
{
|
|
73
85
|
name: 'Basket Gift Pack',
|
|
74
86
|
value: 'pz-basket-gift-pack'
|
|
75
87
|
},
|
|
76
88
|
{
|
|
77
|
-
name: '
|
|
78
|
-
value: 'pz-
|
|
89
|
+
name: 'BKM Express',
|
|
90
|
+
value: 'pz-bkm'
|
|
79
91
|
},
|
|
80
92
|
{
|
|
81
93
|
name: 'Checkout Gift Pack',
|
|
82
94
|
value: 'pz-checkout-gift-pack'
|
|
83
95
|
},
|
|
84
96
|
{
|
|
85
|
-
name: '
|
|
86
|
-
value: 'pz-
|
|
97
|
+
name: 'Click & Collect',
|
|
98
|
+
value: 'pz-click-collect'
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'Credit Payment',
|
|
102
|
+
value: 'pz-credit-payment'
|
|
87
103
|
},
|
|
88
104
|
{
|
|
89
105
|
name: 'Garanti Pay',
|
|
90
106
|
value: 'pz-gpay'
|
|
91
107
|
},
|
|
92
108
|
{
|
|
93
|
-
name: '
|
|
94
|
-
value: 'pz-
|
|
109
|
+
name: 'Masterpass',
|
|
110
|
+
value: 'pz-masterpass'
|
|
95
111
|
},
|
|
96
112
|
{
|
|
97
|
-
name: '
|
|
98
|
-
value: 'pz-
|
|
113
|
+
name: 'Multi Basket',
|
|
114
|
+
value: 'pz-multi-basket'
|
|
99
115
|
},
|
|
100
116
|
{
|
|
101
|
-
name: '
|
|
102
|
-
value: 'pz-
|
|
117
|
+
name: 'One Click Checkout',
|
|
118
|
+
value: 'pz-one-click-checkout'
|
|
103
119
|
},
|
|
104
120
|
{
|
|
105
|
-
name: '
|
|
106
|
-
value: 'pz-
|
|
121
|
+
name: 'Otp',
|
|
122
|
+
value: 'pz-otp'
|
|
107
123
|
},
|
|
108
124
|
{
|
|
109
|
-
name: '
|
|
110
|
-
value: 'pz-
|
|
125
|
+
name: 'Pay On Delivery',
|
|
126
|
+
value: 'pz-pay-on-delivery'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: 'Saved Card',
|
|
130
|
+
value: 'pz-saved-card'
|
|
111
131
|
},
|
|
112
132
|
{
|
|
113
133
|
name: 'Tabby Payment Extension',
|
package/dist/commands/plugins.js
CHANGED
|
@@ -84,45 +84,65 @@ exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
84
84
|
process.exit(1);
|
|
85
85
|
}
|
|
86
86
|
const definedPlugins = [
|
|
87
|
+
{
|
|
88
|
+
name: 'Akifast',
|
|
89
|
+
value: 'pz-akifast'
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'Apple Pay',
|
|
93
|
+
value: 'pz-apple-pay'
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'B2B',
|
|
97
|
+
value: 'pz-b2b'
|
|
98
|
+
},
|
|
87
99
|
{
|
|
88
100
|
name: 'Basket Gift Pack',
|
|
89
101
|
value: 'pz-basket-gift-pack'
|
|
90
102
|
},
|
|
91
103
|
{
|
|
92
|
-
name: '
|
|
93
|
-
value: 'pz-
|
|
104
|
+
name: 'BKM Express',
|
|
105
|
+
value: 'pz-bkm'
|
|
94
106
|
},
|
|
95
107
|
{
|
|
96
108
|
name: 'Checkout Gift Pack',
|
|
97
109
|
value: 'pz-checkout-gift-pack'
|
|
98
110
|
},
|
|
99
111
|
{
|
|
100
|
-
name: '
|
|
101
|
-
value: 'pz-
|
|
112
|
+
name: 'Click & Collect',
|
|
113
|
+
value: 'pz-click-collect'
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'Credit Payment',
|
|
117
|
+
value: 'pz-credit-payment'
|
|
102
118
|
},
|
|
103
119
|
{
|
|
104
120
|
name: 'Garanti Pay',
|
|
105
121
|
value: 'pz-gpay'
|
|
106
122
|
},
|
|
107
123
|
{
|
|
108
|
-
name: '
|
|
109
|
-
value: 'pz-
|
|
124
|
+
name: 'Masterpass',
|
|
125
|
+
value: 'pz-masterpass'
|
|
110
126
|
},
|
|
111
127
|
{
|
|
112
|
-
name: '
|
|
113
|
-
value: 'pz-
|
|
128
|
+
name: 'Multi Basket',
|
|
129
|
+
value: 'pz-multi-basket'
|
|
114
130
|
},
|
|
115
131
|
{
|
|
116
|
-
name: '
|
|
117
|
-
value: 'pz-
|
|
132
|
+
name: 'One Click Checkout',
|
|
133
|
+
value: 'pz-one-click-checkout'
|
|
118
134
|
},
|
|
119
135
|
{
|
|
120
|
-
name: '
|
|
121
|
-
value: 'pz-
|
|
136
|
+
name: 'Otp',
|
|
137
|
+
value: 'pz-otp'
|
|
122
138
|
},
|
|
123
139
|
{
|
|
124
|
-
name: '
|
|
125
|
-
value: 'pz-
|
|
140
|
+
name: 'Pay On Delivery',
|
|
141
|
+
value: 'pz-pay-on-delivery'
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: 'Saved Card',
|
|
145
|
+
value: 'pz-saved-card'
|
|
126
146
|
},
|
|
127
147
|
{
|
|
128
148
|
name: 'Tabby Payment Extension',
|