@openedx/frontend-app-authn 1.0.0-alpha.2 → 1.0.0-alpha.5

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,7 +1,10 @@
1
1
  {
2
2
  "name": "@openedx/frontend-app-authn",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.5",
4
4
  "description": "Frontend authentication",
5
+ "engines": {
6
+ "node": "^24.12"
7
+ },
5
8
  "repository": {
6
9
  "type": "git",
7
10
  "url": "git+https://github.com/openedx/frontend-app-authn.git"
@@ -64,11 +67,12 @@
64
67
  "babel-plugin-formatjs": "10.5.38",
65
68
  "eslint-plugin-import": "2.31.0",
66
69
  "jest": "^29.7.0",
67
- "react-test-renderer": "^18.3.1"
70
+ "react-test-renderer": "^18.3.1",
71
+ "ts-jest": "^29.4.0"
68
72
  },
69
73
  "peerDependencies": {
70
- "@openedx/frontend-base": "^1.0.0-alpha.2",
71
- "@openedx/paragon": "^22",
74
+ "@openedx/frontend-base": "^1.0.0-alpha.8",
75
+ "@openedx/paragon": "^23",
72
76
  "react": "^18",
73
77
  "react-dom": "^18",
74
78
  "react-redux": "^8",
package/src/app.scss CHANGED
@@ -1,6 +1,2 @@
1
- @use "@edx/brand/paragon/fonts";
2
- @use "@edx/brand/paragon/variables";
3
- @use "@openedx/paragon/scss/core/core";
4
- @use "@edx/brand/paragon/overrides";
5
-
1
+ @use "@openedx/frontend-base/shell/app.scss";
6
2
  @use "sass/style";
@@ -16,8 +16,8 @@ export async function getThirdPartyAuthContext(urlParams) {
16
16
  throw (e);
17
17
  });
18
18
  return {
19
- fieldDescriptions: data.registrationFields || {},
20
- optionalFields: data.optionalFields || {},
21
- thirdPartyAuthContext: data.contextData || {},
19
+ fieldDescriptions: data.registrationFields ?? {},
20
+ optionalFields: data.optionalFields ?? {},
21
+ thirdPartyAuthContext: data.contextData ?? {},
22
22
  };
23
23
  }
@@ -10,7 +10,7 @@ import { breakpoints } from '@openedx/paragon';
10
10
  const useMobileResponsive = (breakpoint) => {
11
11
  const [isMobileWindow, setIsMobileWindow] = useState();
12
12
  const checkForMobile = () => {
13
- setIsMobileWindow(window.matchMedia(`(max-width: ${breakpoint || breakpoints.small.maxWidth}px)`).matches);
13
+ setIsMobileWindow(window.matchMedia(`(max-width: ${breakpoint ?? breakpoints.small.maxWidth}px)`).matches);
14
14
  };
15
15
  useEffect(() => {
16
16
  checkForMobile();
@@ -20,7 +20,7 @@ export function* handleForgotPassword(action) {
20
20
 
21
21
  yield put(forgotPasswordSuccess(action.payload.email));
22
22
  } catch (e) {
23
- if (e.response && e.response.status === 403) {
23
+ if (e.response?.status === 403) {
24
24
  yield put(forgotPasswordForbidden());
25
25
  logInfo(e);
26
26
  } else {
@@ -63,8 +63,8 @@ export const validateEmailAddress = (value, username, domainName) => {
63
63
  const tldSuggestion = !DEFAULT_TOP_LEVEL_DOMAINS.includes(topLevelDomain);
64
64
  const serviceSuggestion = getLevenshteinSuggestion(serviceLevelDomain, DEFAULT_SERVICE_PROVIDER_DOMAINS, 2);
65
65
 
66
- if (DEFAULT_SERVICE_PROVIDER_DOMAINS.includes(serviceSuggestion || serviceLevelDomain)) {
67
- suggestion = `${username}@${serviceSuggestion || serviceLevelDomain}.com`;
66
+ if (DEFAULT_SERVICE_PROVIDER_DOMAINS.includes(serviceSuggestion ?? serviceLevelDomain)) {
67
+ suggestion = `${username}@${serviceSuggestion ?? serviceLevelDomain}.com`;
68
68
  }
69
69
 
70
70
  if (!hasMultipleSubdomains && tldSuggestion) {
@@ -74,7 +74,7 @@ const reducer = (state = defaultState, action = {}) => {
74
74
  registrationError: { ...action.payload },
75
75
  submitState: DEFAULT_STATE,
76
76
  validations: null,
77
- usernameSuggestions: usernameSuggestions || state.usernameSuggestions,
77
+ usernameSuggestions: usernameSuggestions ?? state.usernameSuggestions,
78
78
  };
79
79
  }
80
80
  case REGISTRATION_CLEAR_BACKEND_ERROR: {
@@ -90,7 +90,7 @@ const reducer = (state = defaultState, action = {}) => {
90
90
  return {
91
91
  ...state,
92
92
  validations: validationWithoutUsernameSuggestions,
93
- usernameSuggestions: usernameSuggestions || state.usernameSuggestions,
93
+ usernameSuggestions: usernameSuggestions ?? state.usernameSuggestions,
94
94
  };
95
95
  }
96
96
  case REGISTER_FORM_VALIDATIONS.FAILURE:
@@ -44,7 +44,7 @@ export function* fetchRealtimeValidations(action) {
44
44
 
45
45
  yield put(fetchRealtimeValidationsSuccess(camelCaseObject(fieldValidations)));
46
46
  } catch (e) {
47
- if (e.response && e.response.status === 403) {
47
+ if (e.response?.status === 403) {
48
48
  yield put(fetchRealtimeValidationsFailure());
49
49
  logInfo(e);
50
50
  } else {
@@ -22,7 +22,7 @@ const getBackendValidations = createSelector(
22
22
 
23
23
  const validationDecisions = {};
24
24
  fields.forEach(field => {
25
- validationDecisions[field] = registrationError[field][0].userMessage || '';
25
+ validationDecisions[field] = registrationError[field][0].userMessage ?? '';
26
26
  });
27
27
  return validationDecisions;
28
28
  }
@@ -18,8 +18,8 @@ export async function registerRequest(registrationInformation) {
18
18
  });
19
19
 
20
20
  return {
21
- redirectUrl: data.redirect_url || `${getSiteConfig().lmsBaseUrl}/dashboard`,
22
- success: data.success || false,
21
+ redirectUrl: data.redirect_url ?? `${getSiteConfig().lmsBaseUrl}/dashboard`,
22
+ success: data.success ?? false,
23
23
  authenticatedUser: data.authenticated_user,
24
24
  };
25
25
  }
@@ -43,9 +43,7 @@ export const isFormValid = (
43
43
  Object.keys(payload).forEach(key => {
44
44
  switch (key) {
45
45
  case 'name':
46
- if (!fieldErrors.name) {
47
- fieldErrors.name = validateName(payload.name, formatMessage);
48
- }
46
+ fieldErrors.name ||= validateName(payload.name, formatMessage);
49
47
  if (fieldErrors.name) {
50
48
  isValid = false;
51
49
  }
@@ -71,17 +69,13 @@ export const isFormValid = (
71
69
  break;
72
70
  }
73
71
  case 'username':
74
- if (!fieldErrors.username) {
75
- fieldErrors.username = validateUsername(payload.username, formatMessage);
76
- }
72
+ fieldErrors.username ||= validateUsername(payload.username, formatMessage);
77
73
  if (fieldErrors.username) {
78
74
  isValid = false;
79
75
  }
80
76
  break;
81
77
  case 'password':
82
- if (!fieldErrors.password) {
83
- fieldErrors.password = validatePasswordField(payload.password, formatMessage);
84
- }
78
+ fieldErrors.password ||= validatePasswordField(payload.password, formatMessage);
85
79
  if (fieldErrors.password) {
86
80
  isValid = false;
87
81
  }
@@ -26,7 +26,7 @@ export function* handleValidateToken(action) {
26
26
  yield put(passwordResetFailure(PASSWORD_RESET.INVALID_TOKEN));
27
27
  }
28
28
  } catch (err) {
29
- if (err.response && err.response.status === 429) {
29
+ if (err.response?.status === 429) {
30
30
  yield put(passwordResetFailure(PASSWORD_RESET.FORBIDDEN_REQUEST));
31
31
  logInfo(err);
32
32
  } else {
@@ -51,7 +51,7 @@ export function* handleResetPassword(action) {
51
51
  yield put(resetPasswordFailure(PASSWORD_VALIDATION_ERROR, resetErrors));
52
52
  }
53
53
  } catch (err) {
54
- if (err.response && err.response.status === 429) {
54
+ if (err.response?.status === 429) {
55
55
  yield put(resetPasswordFailure(PASSWORD_RESET.FORBIDDEN_REQUEST));
56
56
  logInfo(err);
57
57
  } else {
@@ -1,21 +1,19 @@
1
- @use "@openedx/paragon/scss/core/core" as paragon;
2
-
3
1
  .layout {
4
2
  display: flex;
5
3
 
6
- @include paragon.media-breakpoint-down('lg') {
4
+ @media (--pgn-size-breakpoint-max-width-lg) {
7
5
  flex-direction: column;
8
6
  justify-content: center;
9
7
  align-items: center;
10
8
  }
11
9
 
12
- @include paragon.media-breakpoint-up('xl') {
10
+ @media (--pgn-size-breakpoint-min-width-xl) {
13
11
  justify-content: space-between;
14
12
  }
15
13
  }
16
14
 
17
15
  .content {
18
- @include paragon.media-breakpoint-up('xl') {
16
+ @media (--pgn-size-breakpoint-min-width-xl) {
19
17
  display: flex;
20
18
  justify-content: center;
21
19
  width: 50vw;
@@ -48,7 +46,7 @@
48
46
  font-weight: 700;
49
47
  line-height: 1;
50
48
 
51
- @include paragon.media-breakpoint-down('xl') {
49
+ @media (--pgn-size-breakpoint-max-width-xl) {
52
50
  font-size: 3.75rem;
53
51
  }
54
52
 
@@ -61,7 +59,7 @@
61
59
  margin-bottom: 0.5rem;
62
60
  font-weight: 700;
63
61
 
64
- @include paragon.media-breakpoint-down('xl') {
62
+ @media (-pgn-size-breakpoint-max-width-xl) {
65
63
  font-size: 1.375rem;
66
64
  line-height: 1.75rem;
67
65
  }
@@ -73,7 +71,7 @@
73
71
  }
74
72
 
75
73
  .large-screen-left-container {
76
- @include paragon.media-breakpoint-down('xl') {
74
+ @media (-pgn-size-breakpoint-max-width-xl) {
77
75
  flex: 0 0 25%;
78
76
  max-width: 25%;
79
77
  }
@@ -86,42 +84,46 @@
86
84
 
87
85
  .small-screen-top-stripe {
88
86
  height: 0.25rem;
89
- background-image: linear-gradient(102.02deg,
90
- paragon.$brand-700,
91
- paragon.$brand-700 20%,
92
- paragon.$brand 20%,
93
- );
87
+ background-image: linear-gradient(
88
+ 102.02deg,
89
+ var(--pgn-color-brand-700),
90
+ var(--pgn-color-brand-700) 20%,
91
+ var(--pgn-color-brand-base) 20%,
92
+ );
94
93
  background-repeat: no-repeat;
95
94
  }
96
95
 
97
- @include paragon.media-breakpoint-only('md') {
96
+ @media (--pgn-size-breakpoint-min-width-md) and (--pgn-size-breakpoint-max-width-md) {
98
97
  .medium-screen-top-stripe {
99
98
  display: flex;
100
99
  height: 0.5rem;
101
- background-image: linear-gradient(102.02deg,
102
- paragon.$brand-700,
103
- paragon.$brand-700 10%,
104
- paragon.$brand 10%,
105
- paragon.$brand 90%,
106
- paragon.$primary-700 90%,
107
- paragon.$primary-700 100%,
108
- );
100
+ background-image: linear-gradient(
101
+ 102.02deg,
102
+ var(--pgn-color-brand-700),
103
+ var(--pgn-color-brand-700) 10%,
104
+ var(--pgn-color-brand-base) 10%,
105
+ var(--pgn-color-brand-base) 90%,
106
+ var(--pgn-color-primary-700) 90%,
107
+ var(--pgn-color-primary-700) 100%,
108
+ );
109
109
  background-repeat: no-repeat;
110
110
  }
111
111
  }
112
112
 
113
- @include paragon.media-breakpoint-only('lg') {
113
+ @media (--pgn-size-breakpoint-min-width-lg) and (--pgn-size-breakpoint-max-width-lg){
114
114
  .medium-screen-top-stripe {
115
115
  display: flex;
116
116
  height: 0.5rem;
117
- background-image: linear-gradient(102.02deg,
118
- paragon.$brand-700 10%,
119
- paragon.$brand 10%,
120
- paragon.$brand 65%,
121
- paragon.$primary-700 65%,
122
- paragon.$primary-700 75%,
123
- paragon.$accent-a 75%,
124
- paragon.$accent-a 75%);
117
+ background-image: linear-gradient(
118
+ 102.02deg,
119
+ var(--pgn-color-brand-700) 10%,
120
+ var(--pgn-color-brand-base) 10%,
121
+ var(--pgn-color-brand-base) 65%,
122
+ var(--pgn-color-primary-700) 65%,
123
+ var(--pgn-color-primary-700) 75%,
124
+ var(--pgn-color-accent-a) 75%,
125
+ var(--pgn-color-accent-a) 75%
126
+ );
125
127
  background-repeat: no-repeat;
126
128
  }
127
129
  }
@@ -130,44 +132,45 @@
130
132
  display: none;
131
133
  }
132
134
 
133
- @include paragon.media-breakpoint-up('xl') {
134
- .extra-large-screen-top-stripe {
135
- display: flex;
136
- height: 0.5rem;
137
- background-image: linear-gradient(102.02deg,
138
- paragon.$brand-700 10%,
139
- paragon.$brand 10%,
140
- paragon.$brand 45%,
141
- paragon.$primary-700 45%,
142
- paragon.$primary-700 55%,
143
- paragon.$accent-a 55%,
144
- paragon.$accent-a 75%,
145
- paragon.$info-200 75%,
146
- );
147
- background-repeat: no-repeat;
148
- }
135
+ @media (--pgn-size-breakpoint-min-width-xl) {
136
+ .extra-large-screen-top-stripe {
137
+ display: flex;
138
+ height: 0.5rem;
139
+ background-image: linear-gradient(
140
+ 102.02deg,
141
+ var(--pgn-color-brand-700) 10%,
142
+ var(--pgn-color-brand-base) 10%,
143
+ var(--pgn-color-brand-base) 45%,
144
+ var(--pgn-color-primary-700) 45%,
145
+ var(--pgn-color-primary-700) 55%,
146
+ var(--pgn-color-accent-a) 55%,
147
+ var(--pgn-color-accent-a) 75%,
148
+ var(--pgn-color-info-200) 75%,
149
+ );
150
+ background-repeat: no-repeat;
151
+ }
149
152
  }
150
153
 
151
154
  .large-screen-svg-light,
152
155
  .large-screen-svg-primary {
153
- fill: paragon.$light-200;
156
+ fill: var(--pgn-color-light-200);
154
157
  overflow: hidden;
155
158
  position: absolute;
156
159
  }
157
160
 
158
161
  .large-screen-svg-primary {
159
- fill: paragon.$primary-400;
162
+ fill: var(--pgn-color-primary-400);
160
163
  }
161
164
 
162
165
  .medium-screen-svg-light,
163
166
  .medium-screen-svg-primary {
164
- fill: paragon.$light-200;
167
+ fill: var(--pgn-color-light-200);
165
168
  overflow: inherit;
166
169
  position: absolute;
167
170
  }
168
171
 
169
172
  .medium-screen-svg-primary {
170
- fill: paragon.$primary-400;
173
+ fill: var(--pgn-color-primary-400);
171
174
  }
172
175
 
173
176
  [dir=rtl] {
@@ -183,20 +186,20 @@
183
186
  .small-yellow-line {
184
187
  width: 80px;
185
188
  height: 0;
186
- border: 2px solid paragon.$accent-b;
189
+ border: 2px solid var(--pgn-color-accent-b);
187
190
  transform: rotate(102.02deg);
188
191
  }
189
192
 
190
193
  .medium-yellow-line {
191
194
  width: 120px;
192
195
  height: 0;
193
- border: 3px solid paragon.$accent-b;
196
+ border: 3px solid var(--pgn-color-accent-b);
194
197
  transform: rotate(102.02deg);
195
198
  }
196
199
 
197
200
  .large-yellow-line {
198
201
  width: 240px;
199
202
  height: 0;
200
- border: 3px solid paragon.$accent-b;
203
+ border: 3px solid var(--pgn-color-accent-b);
201
204
  transform: rotate(102.02deg);
202
205
  }
@@ -1,5 +1,3 @@
1
- @use "@openedx/paragon/scss/core/core" as paragon;
2
-
3
1
  .pp-page__button-width {
4
2
  min-width: 6rem;
5
3
  }
@@ -15,7 +13,7 @@
15
13
  margin-bottom: 0.5rem;
16
14
  font-weight: 700;
17
15
 
18
- @include paragon.media-breakpoint-down('md') {
16
+ @media (--pgn-size-breakpoint-max-width-md) {
19
17
  line-height: 1.5rem;
20
18
  font-size: 1.125rem;
21
19
  }
@@ -1,4 +1,3 @@
1
- @use "@openedx/paragon/scss/core/core" as paragon;
2
1
  @use "sass:map";
3
2
 
4
3
  .register-button {
@@ -25,22 +24,22 @@
25
24
  line-height: 1.25rem;
26
25
  }
27
26
 
28
- .alert-link {
29
- color: paragon.$primary !important;
27
+ .alert-link {
28
+ color: var(--pgn-color-primary-base) !important;
30
29
 
31
30
  &:hover {
32
31
  text-decoration: underline;
33
- color: paragon.$info-700 !important;
32
+ color: var(--pgn-color-info-700) !important;
34
33
  }
35
34
  }
36
35
  }
37
36
 
38
37
  .email-suggestion-alert-warning {
39
- color: paragon.$info-500 !important;
38
+ color: var(--pgn-color-info-500) !important;
40
39
 
41
40
  &:hover {
42
41
  text-decoration: underline;
43
- color: paragon.$info-700 !important;
42
+ color: var(--pgn-color-info-700) !important;
44
43
  }
45
44
  }
46
45
 
@@ -60,7 +59,7 @@
60
59
  line-height: 24px;
61
60
  font-size: 12px;
62
61
  font-weight: normal;
63
- color: paragon.$primary-700;
62
+ color: var(--pgn-color-primary-700);
64
63
  }
65
64
 
66
65
  .username-suggestion--label {
@@ -104,7 +103,7 @@
104
103
  }
105
104
  }
106
105
 
107
- @media (max-width: map.get(paragon.$grid-breakpoints, "sm")) {
106
+ @media (--pgn-size-breakpoint-max-width-sm) {
108
107
  .username-scroll-suggested--form-field {
109
108
  width: 15rem;
110
109
  }
@@ -1,5 +1,3 @@
1
- @use "@openedx/paragon/scss/core/core" as paragon;
2
-
3
1
  // Load component based styles
4
2
  @use "_base_component.scss";
5
3
  @use "_registration.scss";
@@ -42,7 +40,7 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
42
40
  }
43
41
 
44
42
  .main-content {
45
- @extend .pt-4;
43
+ padding-top: var(--pgn-spacing-spacer-4) !important;
46
44
  min-width: 464px !important;
47
45
  }
48
46
 
@@ -82,15 +80,15 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
82
80
  .alert-link {
83
81
  font-weight: normal;
84
82
  text-decoration: underline;
85
- color: paragon.$info-300 !important;
83
+ color: var(--pgn-color-info-300) !important;
86
84
 
87
85
  &:hover {
88
- color: paragon.$info-500 !important;
86
+ color: var(--pgn-color-info-500) !important;
89
87
  }
90
88
  }
91
89
 
92
90
  .form-control {
93
- background-color: $white !important;
91
+ background-color: var(--pgn-color-white) !important;
94
92
  font-size: 0.875rem;
95
93
  line-height: 1.5;
96
94
  height: 2.75rem;
@@ -105,11 +103,11 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
105
103
  margin-bottom: 1rem;
106
104
  font-size: 14px;
107
105
 
108
- background-color: $white;
109
- border: 1px solid paragon.$primary;
106
+ background-color: var(--pgn-color-white);
107
+ border: 1px solid var(--pgn-color-primary-base);
110
108
  width: 224px;
111
109
  height: 36px;
112
- color: paragon.$primary;
110
+ color: var(--pgn-color-primary-base);
113
111
 
114
112
  .btn-tpa__image-icon {
115
113
  background-color: transparent;
@@ -134,8 +132,8 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
134
132
  }
135
133
 
136
134
  .btn-tpa__font-container {
137
- background-color: paragon.$primary;
138
- color: $white;
135
+ background-color: var(--pgn-color-primary-base);
136
+ color: var(--pgn-color-white);
139
137
  font-size: 11px;
140
138
 
141
139
  margin-left: -6px;
@@ -145,7 +143,7 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
145
143
  }
146
144
 
147
145
  .btn-oa2-facebook {
148
- color: $white;
146
+ color: var(--pgn-color-white);
149
147
  border-color: $facebook-blue;
150
148
  background-color: $facebook-blue;
151
149
 
@@ -153,12 +151,12 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
153
151
  &:focus {
154
152
  background-color: $facebook-focus-blue;
155
153
  border: 1px solid $facebook-focus-blue;
156
- color: $white;
154
+ color: var(--pgn-color-white);
157
155
  }
158
156
  }
159
157
 
160
158
  .btn-oa2-google-oauth2 {
161
- color: $white;
159
+ color: var(--pgn-color-white);
162
160
  border-color: $google-blue;
163
161
  background-color: $google-blue;
164
162
 
@@ -173,12 +171,12 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
173
171
  &:focus {
174
172
  background-color: $google-focus-blue;
175
173
  border: 1px solid $google-focus-blue;
176
- color: $white;
174
+ color: var(--pgn-color-white);
177
175
  }
178
176
  }
179
177
 
180
178
  .btn-oa2-apple-id {
181
- color: $white;
179
+ color: var(--pgn-color-white);
182
180
  border-color: $apple-black;
183
181
  background-color: $apple-black;
184
182
  font-size: 16px;
@@ -192,12 +190,12 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
192
190
  &:focus {
193
191
  background-color: $apple-focus-black;
194
192
  border: 1px solid $apple-focus-black;
195
- color: $white;
193
+ color: var(--pgn-color-white);
196
194
  }
197
195
  }
198
196
 
199
197
  .btn-oa2-azuread-oauth2 {
200
- color: $white;
198
+ color: var(--pgn-color-white);
201
199
  border-color: $microsoft-black;
202
200
  background-color: $microsoft-black;
203
201
 
@@ -205,7 +203,7 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
205
203
  &:focus {
206
204
  background-color: $microsoft-focus-black;
207
205
  border: 1px solid $microsoft-focus-black;
208
- color: $white;
206
+ color: var(--pgn-color-white);
209
207
  }
210
208
  }
211
209
 
@@ -216,9 +214,8 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
216
214
  }
217
215
 
218
216
  .institute-icon {
219
- @extend .mr-1;
220
- @extend .text-gray;
221
-
217
+ margin: var(--pgn-spacing-spacer-1) !important;
218
+ color: var(--pgn-color-gray-base) !important;
222
219
  display: inline-block;
223
220
  margin-bottom: 0.25rem;
224
221
  height: 18px;
@@ -234,7 +231,7 @@ $elevation-level-2-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.15);
234
231
  }
235
232
 
236
233
  .invalid-feedback {
237
- color: paragon.$red;
234
+ color: var(--pgn-color-red);
238
235
  }
239
236
 
240
237
  .full-vertical-height {
@@ -292,24 +289,24 @@ select.form-control {
292
289
 
293
290
  #password-requirement-left {
294
291
  opacity: 1;
295
- @extend .x-small;
292
+ font-size: var(--pgn-typography-font-size-xs) !important;
296
293
  filter: drop-shadow($elevation-level-2-shadow) drop-shadow($elevation-level-2-shadow) !important;
297
294
  right: 0.2rem !important;
298
295
 
299
296
  .tooltip-inner {
300
- background: $white;
297
+ background: var(--pgn-color-white);
301
298
  display: block;
302
- color: paragon.$gray-500;
299
+ color: var(--pgn-color-gray-500);
303
300
  }
304
301
 
305
302
  .arrow::before {
306
- border-left-color: $white;
303
+ border-left-color: var(--pgn-color-white);
307
304
  }
308
305
  }
309
306
 
310
307
  #password-requirement-top {
311
- @extend .x-small;
312
- filter: drop-shadow($elevation-level-2-shadow) drop-shadow($elevation-level-2-shadow) !important;
308
+ font-size: var(--pgn-typography-font-size-xs) !important;
309
+ filter: drop-shadow(var(--pgn-elevation-box-shadow-level-2)) drop-shadow(var(--pgn-elevation-box-shadow-level-2)) !important;
313
310
  opacity: 1;
314
311
  width: 90%;
315
312
  bottom: 10px !important;
@@ -318,31 +315,31 @@ select.form-control {
318
315
 
319
316
  .tooltip-inner {
320
317
  min-width: 464px !important;
321
- background: $white;
318
+ background: var(--pgn-color-white);
322
319
  display: block;
323
- color: paragon.$gray-500;
320
+ color: var(--pgn-color-gray-500);
324
321
  }
325
322
 
326
323
  .arrow::before {
327
- border-top-color: $white;
324
+ border-top-color: var(--pgn-color-white);
328
325
  }
329
326
 
330
327
  }
331
328
 
332
329
  .yellow-border {
333
- border: 2px solid paragon.$accent-b;
330
+ border: 2px solid var(--pgn-color-accent-b);
334
331
  }
335
332
 
336
333
  .institutions__heading {
337
- color: paragon.$primary-700;
334
+ color: var(--pgn-color-primary-700);
338
335
  }
339
336
 
340
337
  .logistration-button {
341
- color: paragon.$gray-700;
338
+ color: var(--pgn-color-gray-700);
342
339
  }
343
340
 
344
- .logistration-button:hover {
345
- color: paragon.$gray-700;
341
+ .logistration-button:hover{
342
+ color: var(--pgn-color-gray-700);
346
343
  text-decoration: none;
347
344
  }
348
345
 
@@ -358,7 +355,7 @@ select.form-control {
358
355
  }
359
356
 
360
357
  .has-floating-label {
361
- color: paragon.$gray-500;
358
+ color: var(--pgn-color-gray-500);
362
359
  }
363
360
 
364
361
  .pgn__form-control-floating-label .pgn__form-control-floating-label-content {
@@ -370,9 +367,9 @@ select.form-control {
370
367
  font-size: 0.75rem;
371
368
  }
372
369
 
373
- .form-group__form-field .form-control:focus~.pgn__form-control-floating-label .pgn__form-control-floating-label-content {
374
- font-size: 16px;
375
- color: paragon.$primary-700;
370
+ .form-group__form-field .form-control:focus ~ .pgn__form-control-floating-label .pgn__form-control-floating-label-content {
371
+ font-size: 16px;
372
+ color: var(--pgn-color-primary-700);
376
373
  }
377
374
 
378
375
  .form-group__form-field .form-control:not([value='']):not(:focus)~.pgn__form-control-floating-label .pgn__form-control-floating-label-content {
@@ -450,14 +447,14 @@ select.form-control {
450
447
  }
451
448
 
452
449
  .table-striped tbody tr:nth-of-type(odd) {
453
- background-color: paragon.$light-200;
450
+ background-color: var(--pgn-color-light-200);
454
451
  }
455
452
 
456
453
  .institutions--provider-link {
457
454
  font-weight: normal;
458
455
  font-size: 0.875rem;
459
456
  line-height: 1.5rem;
460
- color: paragon.$primary-700
457
+ color: var(--pgn-color-primary-700)
461
458
  }
462
459
 
463
460
  .pgn__form-control-decorator-trailing {