l-min-components 1.0.598 → 1.0.601

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "l-min-components",
3
- "version": "1.0.598",
3
+ "version": "1.0.601",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "src/assets",
@@ -0,0 +1,221 @@
1
+ import React, { useState } from "react";
2
+ import { AdminTwoFaSecurityContainer } from "./index.styled";
3
+ import img from "../assets/images/twofa.png";
4
+ import qr from "../assets/images/qr_code.png";
5
+ import shield from "../assets/images/shield.png";
6
+ import ButtonComponent from "../../button";
7
+ import Radio from "../../radio";
8
+ import InputComponent from "../../input";
9
+ import SecuritySuccessModal from "../modals/success-modal";
10
+ import ToggleButtonComponent from "../../toggle button";
11
+ import { useNavigate } from "react-router-dom";
12
+ import OTPSecurityModal from "../modals/otp-password-modal";
13
+ import SecurityQuestionModal from "../modals/security-question-modal";
14
+ import SecurityOptOutModal from "../modals/opt-out-modal";
15
+
16
+ const AdminTwoFaSecurity = () => {
17
+ const navigate = useNavigate();
18
+
19
+ const options = [
20
+ { value: "Authenticator apps", label: "Authenticator apps" },
21
+ { value: "Email", label: "Email" },
22
+ ];
23
+ const [type, setType] = useState("Authenticator apps");
24
+ const [modalOne, setModalOne] = useState(false);
25
+ const [otpModal, setOtpModal] = useState(false);
26
+ const [authCurrent, setAuthCurrent] = useState(false);
27
+ const [securityQuestionModal, setSecurityQuestionModal] = useState(false);
28
+ const [successModal, setSuccessModal] = useState(false);
29
+ const [optOutModal, setOptOutModal] = useState(false);
30
+ const [emailCurrent, setEmailCurrent] = useState(false);
31
+
32
+ const [checked, setChecked] = useState(false);
33
+
34
+ const handleChange = (newValue) => {
35
+ setChecked(newValue);
36
+ };
37
+
38
+ const handleOptionChange = (newValue) => {
39
+ console.log("New value:", newValue);
40
+ setType(newValue);
41
+ };
42
+
43
+ return (
44
+ <AdminTwoFaSecurityContainer>
45
+ <div className="twofa_banner_container">
46
+ <div className="twofa_bc_section">
47
+ <div className="twofa_img">
48
+ <img src={img} alt="" />
49
+ </div>
50
+
51
+ <div className="twofa_bc_details">
52
+ <p className="twofa_bc_title">Help Protect Your Account</p>
53
+
54
+ <p className="twofa_bc_subtitle">
55
+ To get started with your two factor authentication,
56
+ <br /> select your means of receiving code
57
+ </p>
58
+ </div>
59
+ </div>
60
+
61
+ <div className="twofa_bc_section_two">
62
+ <div className="twofa_radio">
63
+ <Radio
64
+ options={options}
65
+ color="#FEBF10"
66
+ defaultValue="Authenticator apps"
67
+ onChange={handleOptionChange}
68
+ direction="row"
69
+ />
70
+
71
+ <p className="twofa_note">Recommended.</p>
72
+ </div>
73
+ </div>
74
+ </div>
75
+
76
+ {/* for email 2fa */}
77
+ {type === "Email" && (
78
+ <>
79
+ {emailCurrent ? (
80
+ <>
81
+ <p className="current_txt"> Current:</p>
82
+
83
+ <div className="current_auth_main">
84
+ <div className="auth_shield">
85
+ <img src={shield} alt="" />
86
+ </div>
87
+
88
+ <p className="current_auth_txt">
89
+ Email: **********oe@gmail.com{" "}
90
+ </p>
91
+
92
+ <div className="crr_toggle">
93
+ <ToggleButtonComponent />
94
+ </div>
95
+ </div>
96
+ </>
97
+ ) : (
98
+ <ButtonComponent
99
+ text={"Setup"}
100
+ onClick={() => setOtpModal(true)}
101
+ styles={{ height: 44, marginLeft: 30 }}
102
+ />
103
+ )}
104
+ <OTPSecurityModal
105
+ isOpen={otpModal}
106
+ onRequestClose={() => {
107
+ setOtpModal(false);
108
+ }}
109
+ nextOpen={() => {
110
+ setOtpModal(false);
111
+ setSecurityQuestionModal(true);
112
+ }}
113
+ OTPvalue={"drp******@gmail.com "}
114
+ OTPtype={"email"}
115
+ />
116
+ <SecurityQuestionModal
117
+ isOpen={securityQuestionModal}
118
+ onRequestClose={() => setSecurityQuestionModal(false)}
119
+ nextOpen={() => {
120
+ setSecurityQuestionModal(false);
121
+ setSuccessModal(true);
122
+ }}
123
+ />
124
+ <SecuritySuccessModal
125
+ isOpen={successModal}
126
+ onRequestClose={() => {
127
+ setSuccessModal(false);
128
+ setEmailCurrent(true);
129
+ }}
130
+ title="Your Two factor authentication is setup successfully."
131
+ />
132
+ <SecurityOptOutModal
133
+ isOpen={optOutModal}
134
+ onRequestClose={() => {
135
+ setOptOutModal(false);
136
+ setOtpModal(true);
137
+ }}
138
+ />
139
+ </>
140
+ )}
141
+
142
+ {/* for Authenticator apps 2fa */}
143
+ {type === "Authenticator apps" && (
144
+ <>
145
+ {authCurrent ? (
146
+ <>
147
+ <p className="current_txt"> Current:</p>
148
+
149
+ <div className="current_auth_main">
150
+ <div className="auth_shield">
151
+ <img src={shield} alt="" />
152
+ </div>
153
+
154
+ <p className="current_auth_txt"> Google Authenticator </p>
155
+
156
+ <div className="crr_toggle">
157
+ <ToggleButtonComponent />
158
+ </div>
159
+ </div>
160
+ </>
161
+ ) : (
162
+ <div className="twofa_main">
163
+ <p className="twofa_apps_txt">
164
+ Set up via Third Party Authentication{" "}
165
+ </p>
166
+
167
+ <div className="twofa_apps_row">
168
+ <div className="twofa_apps_qr">
169
+ <div className="taq_box">
170
+ <img src={qr} alt="" />
171
+ </div>
172
+
173
+ <p className="twofa_apps_subtitle">
174
+ Use your authentication app (such as Google Authenticator)
175
+ to scan this QR code.
176
+ </p>
177
+ </div>
178
+
179
+ <div className="auth_app_code">
180
+ <div>
181
+ <div className="app_code_txt"> TAHT ST5D TG7S 9872 </div>
182
+
183
+ <div className="app_code_note">
184
+ Or enter this code above into your authenticator app
185
+ </div>
186
+ </div>
187
+
188
+ <div className="app_code_form">
189
+ <div className="form_group">
190
+ <InputComponent
191
+ inputType="text"
192
+ label="Verification Code"
193
+ required
194
+ />
195
+ <ButtonComponent
196
+ text={"Verify"}
197
+ styles={{ width: "" }}
198
+ onClick={() => setModalOne(true)}
199
+ />
200
+ </div>
201
+ </div>
202
+ </div>
203
+ </div>
204
+ </div>
205
+ )}
206
+
207
+ <SecuritySuccessModal
208
+ isOpen={modalOne}
209
+ onRequestClose={() => {
210
+ setModalOne(false);
211
+ setAuthCurrent(true);
212
+ }}
213
+ title="Your Two factor authentication is setup successfully."
214
+ />
215
+ </>
216
+ )}
217
+ </AdminTwoFaSecurityContainer>
218
+ );
219
+ };
220
+
221
+ export default AdminTwoFaSecurity;
@@ -0,0 +1,198 @@
1
+ import styled from "styled-components";
2
+
3
+ export const AdminTwoFaSecurityContainer = styled.div`
4
+ background-color: #f5f7f7;
5
+
6
+ .current_txt {
7
+ color: #636666;
8
+ font-size: 14px;
9
+ font-weight: 400;
10
+ margin-bottom: 5px;
11
+ }
12
+
13
+ .current_auth_main {
14
+ padding: 15px;
15
+ border-radius: 15px;
16
+ background: #f5f7f7;
17
+ display: flex;
18
+ align-items: center;
19
+ gap: 15px;
20
+ max-width: 400px;
21
+ width: 100%;
22
+
23
+ .crr_toggle {
24
+ margin-left: auto;
25
+ }
26
+
27
+ .auth_shield {
28
+ max-width: 35px;
29
+ width: 100%;
30
+
31
+ img {
32
+ width: 100%;
33
+ }
34
+ }
35
+
36
+ .current_auth_txt {
37
+ color: #636666;
38
+ font-size: 16px;
39
+ font-weight: 400;
40
+ }
41
+ }
42
+
43
+ .twofa_banner_container {
44
+ border-radius: 15px;
45
+ background: #f5f7f7;
46
+ padding: 16px 33px;
47
+ display: flex;
48
+ justify-content: space-between;
49
+ margin-bottom: 18px;
50
+
51
+ .twofa_bc_section {
52
+ width: 45%;
53
+ display: flex;
54
+ gap: 31px;
55
+ .twofa_img {
56
+ max-width: 46px;
57
+ width: 100%;
58
+ img {
59
+ width: 100%;
60
+ }
61
+ }
62
+
63
+ .twofa_bc_details {
64
+ .twofa_bc_title {
65
+ color: #febf10;
66
+ font-size: 20px;
67
+ font-weight: 700;
68
+ margin-bottom: 10px;
69
+ }
70
+
71
+ .twofa_bc_subtitle {
72
+ color: #313333;
73
+ font-size: 16px;
74
+ font-weight: 400;
75
+ line-height: normal;
76
+ }
77
+ }
78
+ }
79
+
80
+ .twofa_bc_section_two {
81
+ width: 45%;
82
+ position: relative;
83
+ padding-top: 24px;
84
+
85
+ &::before {
86
+ content: "";
87
+ height: 91px;
88
+ width: 2px;
89
+ background-color: #dfe5e5;
90
+ display: flex;
91
+ justify-content: center;
92
+ align-items: center;
93
+ position: absolute;
94
+ left: -75px;
95
+ top: 0;
96
+ border-radius: 6px;
97
+ }
98
+
99
+ .twofa_radio {
100
+ .twofa_note {
101
+ color: #30d468;
102
+ font-size: 14px;
103
+ font-style: italic;
104
+ font-weight: 400;
105
+ margin-left: 25px;
106
+ margin-top: 4px;
107
+ }
108
+ }
109
+ }
110
+ }
111
+
112
+ .twofa_main {
113
+ .twofa_apps_txt {
114
+ color: #313333;
115
+ font-size: 18px;
116
+ font-weight: 700;
117
+ letter-spacing: 0.36px;
118
+ margin-bottom: 16px;
119
+ }
120
+
121
+ .twofa_apps_row {
122
+ display: flex;
123
+ gap: 35px;
124
+ }
125
+
126
+ .twofa_apps_qr {
127
+ border-radius: 15px;
128
+ border: 1px solid #dfe5e5;
129
+ padding: 16px;
130
+ background-color: #dfe5e5;
131
+ max-width: 250px;
132
+ width: 100%;
133
+
134
+ .taq_box {
135
+ max-width: 144px;
136
+ width: 100%;
137
+ margin: 0 auto;
138
+
139
+ img {
140
+ width: 100%;
141
+ }
142
+ }
143
+
144
+ .twofa_apps_subtitle {
145
+ margin-top: 10px;
146
+ color: #636666;
147
+ font-size: 14px;
148
+ font-weight: 400;
149
+ letter-spacing: 0.56px;
150
+ }
151
+ }
152
+
153
+ .auth_app_code {
154
+ display: flex;
155
+ justify-content: space-between;
156
+ flex-direction: column;
157
+ .app_code_txt {
158
+ padding: 10px 22px;
159
+ border-radius: 10px;
160
+ background: #f5f7f7;
161
+ color: #636666;
162
+ display: flex;
163
+ align-items: center;
164
+ justify-content: center;
165
+ text-align: center;
166
+ font-size: 16px;
167
+ font-weight: 700;
168
+ line-height: normal;
169
+ letter-spacing: 0.64px;
170
+ margin-bottom: 15px;
171
+ max-width: 236px;
172
+ width: 100%;
173
+ }
174
+
175
+ .app_code_note {
176
+ max-width: 232px;
177
+ width: 100%;
178
+ color: #636666;
179
+ font-size: 16px;
180
+ font-weight: 600;
181
+ line-height: normal;
182
+ letter-spacing: 0.64px;
183
+ }
184
+
185
+ .app_code_form {
186
+ margin-top: auto;
187
+ max-width: 390px;
188
+ width: 100%;
189
+
190
+ .form_group {
191
+ display: flex;
192
+ align-items: end;
193
+ gap: 16px;
194
+ }
195
+ }
196
+ }
197
+ }
198
+ `;
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+
3
+ export const BackArrowIcon = () => {
4
+ return (
5
+ <svg
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ width="24"
8
+ height="25"
9
+ viewBox="0 0 24 25"
10
+ fill="none"
11
+ >
12
+ <g clipPath="url(#clip0_3085_48537)">
13
+ <path
14
+ d="M20 11.5H7.83L13.42 5.91L12 4.5L4 12.5L12 20.5L13.41 19.09L7.83 13.5H20V11.5Z"
15
+ fill="#323232"
16
+ />
17
+ </g>
18
+ <defs>
19
+ <clipPath id="clip0_3085_48537">
20
+ <rect
21
+ width="24"
22
+ height="24"
23
+ fill="white"
24
+ transform="translate(0 0.5)"
25
+ />
26
+ </clipPath>
27
+ </defs>
28
+ </svg>
29
+ );
30
+ };
@@ -0,0 +1,89 @@
1
+ import React, { useState } from "react";
2
+ import { AdminSecurityContainer } from "./index.styled";
3
+ import { useNavigate } from "react-router-dom";
4
+ import AdminSecurityPassword from "./password";
5
+ import AdminSecurityChangePassword from "./password/change-password";
6
+ import AdminTwoFaSecurity from "./2fa";
7
+ import OTPSecurityModal from "./modals/otp-password-modal";
8
+ import SecuritySuccessModal from "./modals/success-modal";
9
+
10
+ const AdminSecurity = () => {
11
+ const navigate = useNavigate();
12
+ const [activeTab, setActiveTab] = useState(1);
13
+ const [modalIsOpen, setIsOpen] = useState(false);
14
+ const [passwordPage, setPasswordPage] = useState(false);
15
+ const [modalOne, setModalOne] = useState(false);
16
+
17
+ const closeModal = () => {
18
+ setIsOpen(false);
19
+ };
20
+ return (
21
+ <AdminSecurityContainer>
22
+ <>
23
+ {!passwordPage && (
24
+ <>
25
+ <div className="ass_header">
26
+ <p className="ass_title"> Security </p>
27
+ <p className="ass_ref">
28
+ Settings <span className="slash">/</span> <span>Profile</span>
29
+ </p>
30
+ </div>
31
+
32
+ <div className="ass_tab_row">
33
+ <div className="ass_tab_group">
34
+ <div
35
+ className={`ass_tab ${activeTab === 1 ? "active" : ""}`}
36
+ onClick={() => setActiveTab(1)}
37
+ >
38
+ Password
39
+ </div>
40
+ <div
41
+ className={`ass_tab ${activeTab === 2 ? "active" : ""}`}
42
+ onClick={() => setActiveTab(2)}
43
+ >
44
+ 2F Authentication
45
+ </div>
46
+ </div>
47
+ </div>
48
+
49
+ {activeTab === 1 && (
50
+ <>
51
+ <AdminSecurityPassword onClick={() => setIsOpen(true)} />
52
+ </>
53
+ )}
54
+ {activeTab === 2 && (
55
+ <>
56
+ <AdminTwoFaSecurity />
57
+ </>
58
+ )}
59
+ </>
60
+ )}
61
+ </>
62
+
63
+ {passwordPage && (
64
+ <AdminSecurityChangePassword
65
+ modalOne={modalOne}
66
+ setModalOne={setModalOne}
67
+ nextOpen={() => setPasswordPage(false)}
68
+ onRequestClose={() => {
69
+ setPasswordPage(false);
70
+ setModalOne(false);
71
+ }}
72
+ />
73
+ )}
74
+
75
+ <OTPSecurityModal
76
+ isOpen={modalIsOpen}
77
+ onRequestClose={closeModal}
78
+ nextOpen={() => {
79
+ setPasswordPage(true);
80
+ setIsOpen(false);
81
+ }}
82
+ OTPvalue={"*****222"}
83
+ OTPtype={"phone"}
84
+ />
85
+ </AdminSecurityContainer>
86
+ );
87
+ };
88
+
89
+ export default AdminSecurity;
@@ -0,0 +1,97 @@
1
+ import styled from "styled-components";
2
+
3
+ export const AdminSecurityContainer = styled.div`
4
+ .ass_header {
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: space-between;
8
+ margin-bottom: 20px;
9
+
10
+ .ass_title {
11
+ color: #1c2434;
12
+ font-size: 18px;
13
+ font-weight: 700;
14
+ display: flex;
15
+ align-items: center;
16
+ gap: 10px;
17
+ span {
18
+ display: flex;
19
+ align-items: center;
20
+ }
21
+ }
22
+
23
+ .ass_ref {
24
+ color: #64748b;
25
+ font-size: 16px;
26
+ font-weight: 600;
27
+ line-height: normal;
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 8px;
31
+
32
+ span {
33
+ color: #3c50e0;
34
+ }
35
+
36
+ .slash {
37
+ color: #64748b;
38
+ }
39
+ }
40
+ }
41
+
42
+ .ass_tab_row {
43
+ display: flex;
44
+ align-items: center;
45
+ margin-bottom: 20px;
46
+ justify-content: space-between;
47
+ width: 100%;
48
+ max-width: 420px;
49
+ border-radius: 11px;
50
+ background: #f5f7f7;
51
+ .ass_tab_group {
52
+ display: flex;
53
+ gap: 4px;
54
+ border-radius: 11px;
55
+ background: #f5f7f7;
56
+ padding: 4px;
57
+ width: 100%;
58
+ max-width: 420px;
59
+ .ass_tab {
60
+ width: 200px;
61
+ height: 36px;
62
+ padding: 8px;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ border-radius: 7px;
67
+ background: #dfe5e5;
68
+ color: #7c8080;
69
+ text-align: center;
70
+ font-size: 16px;
71
+ font-weight: 400;
72
+ cursor: pointer;
73
+ width: 50%;
74
+
75
+ .not_ify {
76
+ border-radius: 49px;
77
+ background: #febf10;
78
+ padding: 6px 8px;
79
+ color: #ffffff;
80
+ font-size: 10px;
81
+ font-weight: 600;
82
+ margin-left: 15px;
83
+ width: 22px;
84
+ height: 22px;
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: center;
88
+ }
89
+
90
+ &.active {
91
+ color: #fff;
92
+ background-color: #00c2c2;
93
+ }
94
+ }
95
+ }
96
+ }
97
+ `;