@akinon/pz-akifast 1.41.0

Sign up to get free protection for your applications and to get access to all the features.
package/.gitattributes ADDED
@@ -0,0 +1,15 @@
1
+ *.js text eol=lf
2
+ *.jsx text eol=lf
3
+ *.ts text eol=lf
4
+ *.tsx text eol=lf
5
+ *.json text eol=lf
6
+ *.md text eol=lf
7
+
8
+ .eslintignore text eol=lf
9
+ .eslintrc text eol=lf
10
+ .gitignore text eol=lf
11
+ .prettierrc text eol=lf
12
+ .yarnrc text eol=lf
13
+
14
+ * text=auto
15
+
package/.prettierrc ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "bracketSameLine": false,
3
+ "tabWidth": 2,
4
+ "singleQuote": true,
5
+ "jsxSingleQuote": false,
6
+ "bracketSpacing": true,
7
+ "semi": true,
8
+ "useTabs": false,
9
+ "arrowParens": "always",
10
+ "endOfLine": "lf",
11
+ "proseWrap": "never",
12
+ "trailingComma": "none"
13
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # @akinon/pz-akifast
2
+
3
+ ## 1.41.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8f09473: ZERO-2686: create akifast plugin
package/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # pz-akifast
2
+
3
+ ### Setting the Visibility of Buttons
4
+ (all buttons are visible by default)
5
+
6
+ ```javascript
7
+ // settings.js file
8
+
9
+ module.exports = {
10
+ // other settings
11
+ plugins: {
12
+ // other plugin settings
13
+ 'pz-akifast': {
14
+ quickLogin: false,
15
+ pdp: false,
16
+ basket: false,
17
+ },
18
+ },
19
+ };
20
+ ```
21
+
22
+ ### Usage in Plugin Module System
23
+
24
+ ## Checkout Button
25
+
26
+ ```javascript
27
+ import PluginModule, { Component } from '@akinon/next/components/plugin-module';
28
+
29
+ <PluginModule
30
+ component={Component.AkifastCheckoutButton}
31
+ props={{
32
+ ...checkoutProviderProps, // same with one click checkout props
33
+ isPdp: true
34
+ }}
35
+ />
36
+ ```
37
+
38
+ ## Quick Login Button
39
+
40
+ ```javascript
41
+ import PluginModule, { Component } from '@akinon/next/components/plugin-module';
42
+
43
+ <PluginModule
44
+ component={Component.AkifastQuickLoginButton}
45
+ props={{
46
+ isCaptchaVisible,
47
+ captchaValidated
48
+ }}
49
+ />
50
+ ```
51
+
52
+ ## Checkout Button Props
53
+
54
+ You can see other props for the button in the `pz-one-click-checkout` package.
55
+
56
+ | Property | Type | Description |
57
+ |----------|-----------|----------------------------------------|
58
+ | isPdp | `boolean` | Indicates if it's a product info page. |
59
+
60
+ ## Quick Login Props
61
+
62
+ | Property | Type | Description |
63
+ |------------------|-----------|------------------------------------|
64
+ | buttonText | `string` | Text displayed on the button. |
65
+ | isCaptchaVisible | `boolean` | Indicates if captcha is visible. |
66
+ | captchaValidated | `boolean` | Indicates if captcha is validated. |
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@akinon/pz-akifast",
3
+ "version": "1.41.0",
4
+ "main": "./src/index.ts",
5
+ "module": "./src/index.ts",
6
+ "license": "MIT",
7
+ "peerDependencies": {
8
+ "react": "^18.0.0",
9
+ "react-dom": "^18.0.0",
10
+ "@reduxjs/toolkit": "^1.8.3",
11
+ "pz-one-click-checkout": "^1.40.0"
12
+ },
13
+ "devDependencies": {
14
+ "@types/node": "^18.7.8",
15
+ "@types/react": "^18.0.17",
16
+ "@types/react-dom": "^18.0.6",
17
+ "react": "^18.2.0",
18
+ "react-dom": "^18.2.0",
19
+ "typescript": "^5.2.2",
20
+ "@reduxjs/toolkit": "^1.8.3"
21
+ }
22
+ }
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { QuickLoginButton } from './views/QuickLoginButton';
2
+ export { CheckoutButton } from './views/CheckoutButton';
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import { PluginModuleComponentProps } from '@akinon/next/types';
3
+ import PluginModule, { Component } from '@akinon/next/components/plugin-module';
4
+ import { useGetCheckoutProvidersQuery } from '@akinon/pz-one-click-checkout/src/endpoints';
5
+ import {
6
+ OneClickCheckoutButtonProps,
7
+ ProvidersType
8
+ } from '@akinon/pz-one-click-checkout/src/types';
9
+
10
+ interface CheckoutButtonProps
11
+ extends PluginModuleComponentProps,
12
+ OneClickCheckoutButtonProps {
13
+ isPdp?: boolean;
14
+ }
15
+
16
+ export const CheckoutButton = ({
17
+ settings,
18
+ isPdp = false,
19
+ ...rest
20
+ }: CheckoutButtonProps) => {
21
+ const { data: checkoutProviders } = useGetCheckoutProvidersQuery(null, {});
22
+ const provider = checkoutProviders?.find(
23
+ (provider: ProvidersType) => provider.slug === 'akifast'
24
+ );
25
+
26
+ if (
27
+ !provider ||
28
+ (isPdp && settings?.pdp === false) ||
29
+ (!isPdp && settings?.basket === false)
30
+ ) {
31
+ return;
32
+ }
33
+
34
+ return (
35
+ <PluginModule
36
+ component={Component.OneClickProviderButton}
37
+ props={{
38
+ ...rest,
39
+ provider
40
+ }}
41
+ />
42
+ );
43
+ };
44
+
45
+ export default CheckoutButton;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { Button } from 'projectzeronext/src/components';
3
+ import { PluginModuleComponentProps } from '@akinon/next/types';
4
+
5
+ interface QuickLoginButtonProps extends PluginModuleComponentProps {
6
+ isCaptchaVisible: boolean;
7
+ captchaValidated: boolean;
8
+ buttonText?: string;
9
+ }
10
+
11
+ export const QuickLoginButton = ({
12
+ buttonText = 'Quick Login',
13
+ isCaptchaVisible,
14
+ captchaValidated,
15
+ settings
16
+ }: QuickLoginButtonProps) => {
17
+ if (settings?.quickLogin === false) {
18
+ return;
19
+ }
20
+
21
+ return (
22
+ <Button
23
+ className="w-full h-14 uppercase text-xs font-semibold flex items-center justify-center gap-2 hover:bg-transparent hover:border hover:border-primary-800 hover:text-primary"
24
+ type="submit"
25
+ appearance="outlined"
26
+ disabled={isCaptchaVisible && !captchaValidated}
27
+ onClick={() => {
28
+ location.href = `/akifast/login/`;
29
+ }}
30
+ >
31
+ {buttonText}
32
+ </Button>
33
+ );
34
+ };