l-min-components 1.0.701 → 1.0.708

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.701",
3
+ "version": "1.0.708",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "src/assets",
@@ -26,6 +26,7 @@ import InstructorRightBar from "../fileRightBar/instructorRightBar";
26
26
  import EnterpriseRightBar from "../fileRightBar/enterpriseRightBar";
27
27
  import PersonalRightBar from "../fileRightBar/personalRightBar";
28
28
  import useHeader from "../header/getHeaderDetails";
29
+ import GracePeriod from "../deactivated";
29
30
 
30
31
  const AppMainLayout = () => {
31
32
  const [isOpen, setIsOpen] = useState(true);
@@ -48,11 +49,18 @@ const AppMainLayout = () => {
48
49
  const [accessToken, setAccessToken] = useState("");
49
50
  const [envType, setEnvType] = useState("");
50
51
  const [newNotifications, setNewNotifications] = useState([]);
52
+ const [deactivated, setDeactivated] = useState(true); // testing, until we get account setup
53
+ const [gracePeriod, setGracePeriod] = useState(true); // test
54
+
51
55
  const {
52
56
  setDefaultAccount,
53
57
  handleSetDefaultAccount,
54
58
  notificationMarkReadData,
55
59
  handleGetNotificationMarkRead,
60
+ userPlanData,
61
+ handleGetUserPlan,
62
+ getCurrentSubscriptionData,
63
+ handleCurrentSubscription,
56
64
  } = useHeader();
57
65
 
58
66
  useEffect(() => {
@@ -128,6 +136,13 @@ const AppMainLayout = () => {
128
136
  }, []);
129
137
  console.log("envType", envType);
130
138
 
139
+ useEffect(() => {
140
+ handleGetUserPlan();
141
+ }, []);
142
+
143
+ const currentPlan = userPlanData?.data?.current_plan;
144
+ const planState = userPlanData?.data?.state;
145
+
131
146
  return (
132
147
  <OutletContext.Provider
133
148
  value={{
@@ -179,6 +194,7 @@ const AppMainLayout = () => {
179
194
  isOpen={isOpen}
180
195
  setIsOpen={setIsOpen}
181
196
  setRightComponent={setRightComponent}
197
+ planState={planState}
182
198
  />
183
199
  )}
184
200
  </>
@@ -206,7 +222,15 @@ const AppMainLayout = () => {
206
222
  />
207
223
  )}
208
224
 
209
- <Outlet />
225
+ {window.location.pathname.includes("enterprise") && planState === "GRACE PERIOD" ? (
226
+ <GracePeriod
227
+ getCurrentSubscriptionData={getCurrentSubscriptionData}
228
+ handleCurrentSubscription={handleCurrentSubscription}
229
+ gracePeriod={gracePeriod}
230
+ />
231
+ ) : (
232
+ <Outlet />
233
+ )}
210
234
  </CenterLayout>
211
235
 
212
236
  {rightLayout && !coming && (
@@ -214,7 +238,7 @@ const AppMainLayout = () => {
214
238
  {rightComponent ??
215
239
  (window.location.pathname.includes("enterprise") &&
216
240
  !window.location.pathname.includes("file-manager") ? (
217
- <EnterpriseRightBar />
241
+ <EnterpriseRightBar gracePeriod={gracePeriod} setGracePeriod={setGracePeriod} planState={planState} />
218
242
  ) : window.location.pathname.includes("personal/dashboard") ? (
219
243
  <PersonalRightBar />
220
244
  ) : window.location.pathname.includes("personal/addons") ? (
@@ -0,0 +1,137 @@
1
+ import React, { useState } from "react";
2
+ import { useLocation } from "react-router-dom";
3
+ import styled from "styled-components";
4
+ import SubscriptionExpiredModal from "./modal/subscription-expired-modal";
5
+ import Button from "../button";
6
+
7
+ const routes = [
8
+ { path: "dashboard", title: "Dashboard" },
9
+ { path: "reports", title: "Reports" },
10
+ { path: "courses", title: "Courses" },
11
+ { path: "manage-teams", title: "Manage Teams" },
12
+ { path: "msg/messages", title: "Messages" },
13
+ { path: "announcements", title: "Announcements" },
14
+ { path: "file-manager", title: "File Manager" },
15
+ ];
16
+
17
+ const GracePeriod = ({
18
+ getCurrentSubscriptionData,
19
+ handleCurrentSubscription,
20
+ gracePeriod,
21
+ }) => {
22
+ const location = useLocation();
23
+ const [subscriptionExpiredModalIsOpen, setSubscriptionExpiredModalIsOpen] =
24
+ useState(false);
25
+
26
+ const getTitleFromPath = (path) => {
27
+ const route = routes.find((route) => path.includes(route.path));
28
+ return route?.title || "Dashboard";
29
+ };
30
+
31
+ const pageTitle = getTitleFromPath(location.pathname);
32
+
33
+ return (
34
+ <GracePeriodWrapper>
35
+ <h1>{pageTitle}</h1>
36
+ {!gracePeriod &&
37
+ <Expire>
38
+ <h4>Hey Enterprise, You do not have any active plan</h4>
39
+
40
+ <div
41
+ onClick={() => {
42
+ window.location.href =
43
+ "https://559staging.learngual.com/settings/payment/";
44
+ }}
45
+ >
46
+ <Button
47
+ text="Choose a Plan"
48
+ styles={{
49
+ height: "35px",
50
+ padding: "4px 20px",
51
+ fontSize: "14px",
52
+ }}
53
+ />
54
+ </div>
55
+ </Expire>
56
+ }
57
+ <div className="gracePeriod_account">
58
+ <div className="content">
59
+ <p>Sorry, you can’t access your account</p>
60
+ </div>
61
+ </div>
62
+
63
+ <SubscriptionExpiredModal
64
+ subscriptionExpiredModalIsOpen={subscriptionExpiredModalIsOpen}
65
+ setSubscriptionExpiredModalIsOpen={setSubscriptionExpiredModalIsOpen}
66
+ getCurrentSubscriptionData={getCurrentSubscriptionData}
67
+ />
68
+ </GracePeriodWrapper>
69
+ );
70
+ };
71
+
72
+ const GracePeriodWrapper = styled.div`
73
+ h1 {
74
+ margin-top: 0px;
75
+ margin-bottom: 20px;
76
+ color: #313333;
77
+ font-size: 24px;
78
+ }
79
+
80
+ .gracePeriod_account {
81
+ border-radius: 30.67px;
82
+ background: var(--white, #fff);
83
+ display: flex;
84
+ justify-content: center;
85
+ align-items: center;
86
+ width: 100%;
87
+ height: 670px;
88
+ flex-shrink: 0;
89
+
90
+ .content {
91
+ border-radius: 15px;
92
+ background: var(--Neutral-10, #f5f7f7);
93
+ display: flex;
94
+ justify-content: center;
95
+ align-items: center;
96
+ display: inline-flex;
97
+ padding: 30px 18px;
98
+ flex-direction: column;
99
+ align-items: center;
100
+ gap: 30px;
101
+
102
+ p {
103
+ color: var(--Neutral-90, #313333);
104
+ text-align: center;
105
+ font-feature-settings: "salt" on, "liga" off;
106
+ font-family: Nunito;
107
+ font-size: 25px;
108
+ font-style: normal;
109
+ font-weight: 500;
110
+ line-height: 120%; /* 30px */
111
+ width: 306px;
112
+ }
113
+ }
114
+ }
115
+ `;
116
+
117
+ const Expire = styled.div`
118
+ border-radius: 25px;
119
+ background: rgba(48, 212, 104, 0.15);
120
+ display: flex;
121
+ padding: 15px 26px;
122
+ flex-direction: column;
123
+ align-items: flex-start;
124
+ gap: 10px;
125
+ margin-bottom: 20px;
126
+
127
+ h4 {
128
+ color: var(--warning, #f39b33);
129
+ font-family: Nunito;
130
+ font-size: 16px;
131
+ font-style: normal;
132
+ font-weight: 700;
133
+ line-height: 20px; /* 125% */
134
+ }
135
+ `;
136
+
137
+ export default GracePeriod;
@@ -0,0 +1,77 @@
1
+ export const BookIcon = ({ width, height, fill }) => (
2
+ <svg
3
+ width={width || "24"}
4
+ height={height || "25"}
5
+ viewBox="0 0 24 25"
6
+ fill="none"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ >
9
+ <path
10
+ d="M22 16.9213V4.85134C22 3.65134 21.02 2.76134 19.83 2.86134H19.77C17.67 3.04134 14.48 4.11134 12.7 5.23134L12.53 5.34134C12.24 5.52134 11.76 5.52134 11.47 5.34134L11.22 5.19134C9.44 4.08134 6.26 3.02134 4.16 2.85134C2.97 2.75134 2 3.65134 2 4.84134V16.9213C2 17.8813 2.78 18.7813 3.74 18.9013L4.03 18.9413C6.2 19.2313 9.55 20.3313 11.47 21.3813L11.51 21.4013C11.78 21.5513 12.21 21.5513 12.47 21.4013C14.39 20.3413 17.75 19.2313 19.93 18.9413L20.26 18.9013C21.22 18.7813 22 17.8813 22 16.9213Z"
11
+ stroke="white"
12
+ strokeWidth="1.5"
13
+ strokeLinecap="round"
14
+ strokeLinejoin="round"
15
+ />
16
+ <path
17
+ d="M12 5.66797V20.668"
18
+ stroke="white"
19
+ strokeWidth="1.5"
20
+ strokeLinecap="round"
21
+ strokeLinejoin="round"
22
+ />
23
+ <path
24
+ d="M7.75 8.66797H5.5"
25
+ stroke="white"
26
+ strokeWidth="1.5"
27
+ strokeLinecap="round"
28
+ strokeLinejoin="round"
29
+ />
30
+ <path
31
+ d="M8.5 11.668H5.5"
32
+ stroke="white"
33
+ strokeWidth="1.5"
34
+ strokeLinecap="round"
35
+ strokeLinejoin="round"
36
+ />
37
+ </svg>
38
+ );
39
+
40
+ export const ErrorBookIcon = ({ width, height, fill }) => (
41
+ <svg
42
+ width={width || "26"}
43
+ height={height || "26"}
44
+ viewBox="0 0 26 26"
45
+ fill="none"
46
+ xmlns="http://www.w3.org/2000/svg"
47
+ >
48
+ <path
49
+ d="M23.2422 17.6216V5.02823C23.2422 3.7762 22.2197 2.84761 20.9781 2.95195H20.9155C18.7245 3.13975 15.3961 4.25615 13.539 5.42471L13.3616 5.53948C13.059 5.72729 12.5582 5.72729 12.2556 5.53948L11.9948 5.38298C10.1376 4.22485 6.81972 3.11889 4.62866 2.94151C3.38706 2.83718 2.375 3.7762 2.375 5.0178V17.6216C2.375 18.6232 3.18882 19.5622 4.19045 19.6874L4.49302 19.7292C6.75711 20.0318 10.2524 21.1795 12.2556 22.275L12.2974 22.2958C12.5791 22.4524 13.0277 22.4524 13.299 22.2958C15.3022 21.1899 18.8079 20.0318 21.0825 19.7292L21.4268 19.6874C22.4284 19.5622 23.2422 18.6232 23.2422 17.6216Z"
50
+ stroke="#F95454"
51
+ stroke-width="1.25203"
52
+ stroke-linecap="round"
53
+ stroke-linejoin="round"
54
+ />
55
+ <path
56
+ d="M12.8125 5.88281V21.5332"
57
+ stroke="#F95454"
58
+ stroke-width="1.25203"
59
+ stroke-linecap="round"
60
+ stroke-linejoin="round"
61
+ />
62
+ <path
63
+ d="M8.371 9.01562H6.02344"
64
+ stroke="#F95454"
65
+ stroke-width="1.25203"
66
+ stroke-linecap="round"
67
+ stroke-linejoin="round"
68
+ />
69
+ <path
70
+ d="M9.15352 12.1445H6.02344"
71
+ stroke="#F95454"
72
+ stroke-width="1.25203"
73
+ stroke-linecap="round"
74
+ stroke-linejoin="round"
75
+ />
76
+ </svg>
77
+ );
@@ -0,0 +1,222 @@
1
+ import styled from "styled-components";
2
+
3
+ export const ModalCardContainer = styled.div`
4
+ /* padding: 25px; */
5
+ font-family: "Nunito";
6
+ width: 100%;
7
+ max-width: 720px;
8
+ margin-left: 40px;
9
+ `;
10
+
11
+ export const CloseModalButton = styled.div`
12
+ background-color: rgba(255, 255, 255, 1);
13
+ width: 40px;
14
+ height: 40px;
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ padding: 10px;
19
+ font-family: "Nunito";
20
+ border-radius: 50%;
21
+ margin-bottom: 8px;
22
+ margin-left: auto;
23
+ `;
24
+
25
+ export const CardContainer = styled.div`
26
+ background-color: rgba(255, 255, 255, 1);
27
+ padding: 25px;
28
+ font-family: "Nunito";
29
+ width: 100%;
30
+ max-width: 700px;
31
+ border-radius: 30px;
32
+ `;
33
+
34
+ export const CardHeader = styled.div`
35
+ width: 100%;
36
+ text-align: center;
37
+
38
+ .cancel-title {
39
+ font-size: 22px;
40
+ color: #313333;
41
+ font-weight: 700px;
42
+ margin-bottom: 30px;
43
+ }
44
+
45
+ .title-icon {
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ margin-right: 20px;
50
+ border-radius: 12px;
51
+ margin: 0 auto;
52
+ }
53
+ `;
54
+
55
+ export const CardBody = styled.div`
56
+ width: 100%;
57
+ /* display: flex; */
58
+ margin: 20px auto 10px;
59
+ text-align: center;
60
+
61
+ .mdl-title {
62
+ font-size: 22px;
63
+ font-weight: 700;
64
+ color: #313333;
65
+ margin-bottom: 12px;
66
+ }
67
+
68
+ .mdld-title {
69
+ width: 370px;
70
+ font-size: 18px;
71
+ font-weight: 700;
72
+ color: #313333;
73
+ margin: 0 auto 12px;
74
+ }
75
+
76
+ .btn__footer {
77
+ display: flex;
78
+ margin-top: 30px;
79
+ justify-content: center;
80
+
81
+ button {
82
+ width: 171px;
83
+ margin: 0 20px;
84
+ }
85
+ }
86
+ `;
87
+
88
+ export const ExpiryCardContainer = styled.div`
89
+ background-color: rgba(255, 255, 255, 1);
90
+ font-family: "Nunito";
91
+ width: 100%;
92
+ max-width: 700px;
93
+ border-radius: 30px;
94
+
95
+ .expiry_modal_container {
96
+ display: flex;
97
+ /* height: 100%; */
98
+
99
+
100
+ .logo_section {
101
+ background-color: rgba(249, 84, 84, 0.2);
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: center;
105
+ padding: 25px;
106
+ width: 40%;
107
+ padding: 0 25px;
108
+ }
109
+
110
+ .expiry_details {
111
+ padding: 25px;
112
+ width: 60%;
113
+
114
+ .error-txt {
115
+ color: #f95454;
116
+ font-weight: 800;
117
+ }
118
+ .enterprise_info {
119
+ border-radius: 12px;
120
+ padding: 10px 2px;
121
+ background-color: #f5f7f7;
122
+ width: 66px;
123
+ margin-bottom: 27px;
124
+ text-align: center;
125
+ display: flex;
126
+ flex-direction: column;
127
+ justify-content: center;
128
+ p {
129
+ color: #f95454;
130
+ font-size: 12px;
131
+ font-weight: 800;
132
+ letter-spacing: 0.28px;
133
+ text-align: center;
134
+ }
135
+ }
136
+
137
+ h6 {
138
+ color: #f95454;
139
+ font-size: 20px;
140
+ font-weight: 700;
141
+ letter-spacing: 0.4px;
142
+ margin-bottom: 15px;
143
+ text-align: left;
144
+ }
145
+
146
+ p {
147
+ color: #313333;
148
+ font-size: 16px;
149
+ font-weight: 700;
150
+ letter-spacing: 0.32px;
151
+ text-align: left;
152
+ }
153
+ }
154
+
155
+ .btn__footer {
156
+ display: flex;
157
+ margin-top: 40px;
158
+ justify-content: space-between;
159
+ }
160
+ }
161
+ `;
162
+
163
+ export const NotificationCellCardContainer = styled.div`
164
+ padding: 10px 20px 20px;
165
+ background-color: rgba(255, 255, 255, 1);
166
+ font-family: "Nunito";
167
+ border-radius: 15px;
168
+
169
+ .notification_cell_container {
170
+ display: flex;
171
+
172
+ .logo_section {
173
+ display: flex;
174
+ align-items: self-start;
175
+ justify-content: center;
176
+ width: 75px;
177
+
178
+ p {
179
+ border-radius: 8px;
180
+ background: rgba(254, 191, 16, 0.1);
181
+ padding: 8px;
182
+ }
183
+ }
184
+
185
+ .nc_details {
186
+ padding-left: 15px;
187
+ .error-txt {
188
+ color: #f95454;
189
+ font-weight: 800;
190
+ font-style: italic;
191
+ }
192
+
193
+ h6 {
194
+ color: #f39b33;
195
+ font-size: 16px;
196
+ font-weight: 700;
197
+ margin-bottom: 8px;
198
+ text-align: left;
199
+ }
200
+
201
+ p {
202
+ color: #636666;
203
+ font-size: 14px;
204
+ font-weight: 700;
205
+ text-align: left;
206
+ }
207
+ }
208
+
209
+ .btn__footer {
210
+ display: flex;
211
+ margin-top: 20px;
212
+ justify-content: space-between;
213
+ }
214
+ }
215
+ `;
216
+
217
+ export const NotificationCellModalContainer = styled.div`
218
+ /* padding: 25px; */
219
+ font-family: "Nunito";
220
+ width: 100%;
221
+ max-width: 800px;
222
+ `;